#1 Re: Програмування Arduino » Помогите изменить код. » 2016-08-18 15:49:09

хотелось, чтобы при выключении тумблера и пищалка и светик отключались. noTone(ALARM)

#2 Програмування Arduino » Помогите изменить код. » 2016-08-18 14:58:57

lav522
відповідей: 9

Хочу создать примитивнейшую сигнализацию на дверь с помощью зуммера, ультрозвукового дальномера (SR04), переключателя на две позиции, светодиода и собственно ардуино. В программировании полный ноль, но уж очень захотелось сделать самому.

Что я от нее хочу: при одном положении выключетеля - светодиод не горит, сонар не измеряет, в общем все спит. Как только включаю второе положение - задержка на пару сек, чтобы успел отойти, затем загорается светик и начинает работать SR04. При фиксировании изменения начинает пищать зуммер, при том зуммер у меня без генератора, хотелось бы узнать, возможно ли, чтобы при фиксации движения запускался цикл типа:

tone(ALARM, 2000);

delay(100);

и так бесконечно, до тех пор, пока не изменится положение переключателя.

Собственно вопрос в том, как переделать код, чтобы зуммер продолжал пищать и после того, как перестанет фиксироваться движение. Пока смог добиться всего, о чем писал выше, только без начальной задержки и главное, зуммер пищит, только пока фиксируется движение, как только человек проходит, он замолкает sad

Вот код:

#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);
    }
  }
  }

Підвал форуму