Стыдно конечно.

godForgottenBeginner
Offline
Зарегистрирован: 12.09.2017

Добрый день дорогие радиолюбители, не знаю, что со мной произошло толи бывшая отравила мои лобные доли трупным ядом который ей дал любовник патологоанатом толи геопатогенная зона, ну скорее всего я просто от природы не острый, но это всё лирика, а задача перед мной стала архи легкая и бытовая, жизнь идёт надо дом автоматизировать, многое уже сделал но вот обычная простая задача поставила меня в тупик:

Есть шкаф с подсветкой.

Необходимо чтобы после 15 секунд как дверь открыта срабатывал звуковой сигнал. 

я пытался сделать это через прерывание городил кучу строк... короче говоря. подскажите как сделать, спасибо.

Я приведу свой "код" просто что бы вы господа не думали что я не пытался. Только не пытайтесь его понять. Если можно подскажите как написать правильный. Спасибо.

 

const int ledPin = 7;
const int ledPin2 = 8;
const int buttonPin =2;
int Bstate = LOW;
unsigned long previousMillis = 0;
const long interval = 2500;
const long interval_3 = 300;
int ledState = LOW;
//int butonState = digitalRead(buttonPin);

void setup() 
{
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
pinMode(buttonPin, INPUT);
//digitalWrite(ledPin, HIGH);
//attachInterrupt(buttonPin, swap, FALLING);
}


void loop() {

Bstate = digitalRead(buttonPin);
 // unsigned long currentMillis = millis();
 // unsigned long currentMillis2 = millis();
Serial.begin(9600);
Serial.println(Bstate);


if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  Bstate = digitalRead(buttonPin);
      
         if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  Bstate = digitalRead(buttonPin);


if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);


  if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);


if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);


  if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);


  if (Bstate == HIGH)
  delay(2000);
  Bstate = digitalRead(buttonPin);
  if (Bstate == LOW) 
  digitalWrite(ledPin, LOW);
  delay(10);
  Bstate = digitalRead(buttonPin);


      
                           if (Bstate == HIGH)
       {
                                delay(2000);
                                digitalWrite(ledPin, HIGH);
                                Bstate = digitalRead(buttonPin);
        }
    else 
    digitalWrite(ledPin, LOW);
    delay(2000);
    Bstate = digitalRead(buttonPin);
if (Bstate == LOW)
digitalWrite(ledPin, LOW);

}



// if (currentMillis - previousMillis >= interval)
//    previousMillis = currentMillis;

 

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Это же не проект. Это в раздел "Программирование".

В сущности вам нужно две вещи: активировать tone() после истечения интервала (строка 108) и делать то, что в строке 109 при условии, что дверь закрыта (bState == HIGH, наверное).

ЕвгенийП
ЕвгенийП аватар
Онлайн
Зарегистрирован: 25.05.2015

А что Вас собственно интересует? Как вот такую штуку подключить?

Так ей не нужна функция tone(). Включайте её через транзистор от 1,5А (например, SS8050D) и просто включайте - сама гудеть будет. Схема нужна? Могу поделиться ии схемой и скетчем.