Поругайте код сигнализации
- Войдите на сайт для отправки комментариев
Ср, 07/01/2015 - 14:06
Все вроде работает
Что-то мне мой код не нравится
// art100 wo write 2050107 HC-SR501
//pins-----------------------------
#define PINHCSR501 2//PIR сенсор
#define PINLED13 13//
//consts---------------------------
int TimeWait = 10;// sek 30;
long unsigned int TimeTmp = 0;//
long unsigned int TimePause = 5000; //
boolean FlagMotion = true;
boolean FlagMotionEnd = true;
//---------------------------------------------------
void setup(){
Serial.begin(9600); //протокол в терминал разделитель ;
pinMode(PINHCSR501, INPUT);digitalWrite(PINHCSR501, LOW);//собственно умный детектор
pinMode(PINLED13, OUTPUT); //контролька
Serial.println("Signalisation.");//readme
Serial.print("TimeWait sek:");Serial.print(TimeWait);Serial.print(":");
for(int i=0; i<TimeWait; i++){ Serial.print("."); delay(1000); }
Serial.println("done");
Serial.println("Started.");
Serial.println("Time alarm :( Time end :)");
}
//=============================================================================================
void loop(){
if(digitalRead(PINHCSR501)==HIGH){//если тревога
digitalWrite(PINLED13,HIGH);//тревога на контрольку
if(FlagMotion){
FlagMotion=false;//флаг сбросим
Serial.print(millis()/1000);Serial.print("; sek motion detected; ");delay(50);//в протокол
}
FlagMotionEnd=true;//флаг поднимем
}
if(digitalRead(PINHCSR501)== LOW){//если нет изменений
digitalWrite(PINLED13, LOW); //гасим контрольку
if(FlagMotionEnd){//если флаг о конце протокола есть
TimeTmp = millis();//запомнили время
FlagMotionEnd= false;//флаг сбросим
}
if(!FlagMotion && millis() - TimeTmp > TimePause){//чето тут дурью попахивает
FlagMotion = true;//флаг поднимем
Serial.print((millis()-TimePause)/1000);Serial.println("; sek motion ended;");delay(50);
}
}
}
//=============================================================================================
Может кто полезную мысль выскажет?
Протоко вроде пишу.
Но что-то мне не нравится. :(
Signalisation. TimeWait sek:10:..........done Started. Time alarm :( Time end :) 13; sek motion detected; 15; sek motion ended; 40; sek motion detected; 43; sek motion ended; 67; sek motion detected; 70; sek motion ended; 103; sek motion detected; 105; sek motion ended; 147; sek motion detected; 150; sek motion ended; 163; sek motion detected; 173; sek motion ended; 187; sek motion detected; 190; sek motion ended; 200; sek motion detected; 238; sek motion ended;
