Ви не увійшли.
Сторінки 1
хотелось, чтобы при выключении тумблера и пищалка и светик отключались. noTone(ALARM)
Хочу создать примитивнейшую сигнализацию на дверь с помощью зуммера, ультрозвукового дальномера (SR04), переключателя на две позиции, светодиода и собственно ардуино. В программировании полный ноль, но уж очень захотелось сделать самому.
Что я от нее хочу: при одном положении выключетеля - светодиод не горит, сонар не измеряет, в общем все спит. Как только включаю второе положение - задержка на пару сек, чтобы успел отойти, затем загорается светик и начинает работать SR04. При фиксировании изменения начинает пищать зуммер, при том зуммер у меня без генератора, хотелось бы узнать, возможно ли, чтобы при фиксации движения запускался цикл типа:
tone(ALARM, 2000);
delay(100);
и так бесконечно, до тех пор, пока не изменится положение переключателя.
Собственно вопрос в том, как переделать код, чтобы зуммер продолжал пищать и после того, как перестанет фиксироваться движение. Пока смог добиться всего, о чем писал выше, только без начальной задержки и главное, зуммер пищит, только пока фиксируется движение, как только человек проходит, он замолкает
Вот код:
#define ALARM 5
#define LED 7
#define SWITCH 8
int echoPin = 11;
int trigPin = 12;
void setup(){
pinMode(ALARM, OUTPUT);
pinMode(SWITCH, INPUT_PULLUP);
pinMode(LED, OUTPUT);
pinMode(trigPin, OUTPUT);
Serial.begin(9600);
}
void loop (){
int var = digitalRead(SWITCH);
switch(var){
case 1:
digitalWrite(LED, HIGH);
int duration, cm;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
cm = duration / 58;
delay(10);
/*Serial.println(cm);
delay(300);*/
if (cm<45 || cm>60){
tone(ALARM, 2000);
delay(100);
case 0:
noTone(ALARM);
digitalWrite(LED, LOW);
}
}
}
Сторінки 1