В основном я делаю будильник Arduino, который отключается только при активации датчика pir.Я просто хочу, чтобы прозвучал пьезо-зуммер, когда время между 12:01 и 12:05 для быстрой демонстрации, и если в это время будет активирован датчик pir, пьезо-зуммер отключится, и эта функция будет аннулирована.Проблема, с которой я столкнулся, заключается в том, что, когда время 12:01 и 12:05 и датчик движения активирован, пьезо-зуммер не отключается, а последовательный монитор не печатает «Нет движения!»когда должно быть напечатано «Обнаружено движение!»
вот мой код
//Digital Arduino Clock Code
#include <LiquidCrystal.h>
LiquidCrystal lcd(3, 4, 8, 9, 10, 11);
int h=12;
int m;
int s;
int flag;
int TIME;
int ledPin = 13;
int inputPin = 2;
int pirState = LOW;
int val = 0;
int buzzer = 7;
const int hs=8;
const int ms=9;
int state1;
int state2;
void setup()
{
pinMode(ledPin, OUTPUT); // declare LED as output
pinMode(inputPin, INPUT); // declare Sensor as input
lcd.begin(16,2);
Serial.begin(9600);
}
void loop()
{
lcd.setCursor(0,0);
s=s+1;
lcd.print("TIME:");
lcd.print(h);
lcd.print(":");
lcd.print(m);
lcd.print(":");
lcd.print(s);
if(flag<12)lcd.print("AM");
if(flag==12)lcd.print("PM");
if(flag>12)lcd.print("PM");
if(flag==24)flag=0;
delay(1000);
lcd.clear();
if(s==60){
s=0;
m=m+1;
}
if(m==60)
{
m=0;
h=h+1;
flag=flag+1;
}
if(h==13)
{
h=1;
}
lcd.setCursor(0,1);
lcd.print("HAVE A NICE DAY");
//alarm clock function w/ PIR sensor and Buzzer
if(h==12 && (m>=1 && m<=5) && (pirState == LOW))
{
Serial.println("No Motion!!");
lcd.clear();
lcd.setCursor(0,1);
lcd.print("WAKEUP");
tone(buzzer, 50, 100);
pirState = HIGH;
/
}
else if(h==12 && (m>=1 && m<=5) && (pirState == HIGH))
{
Serial.println("Motion DETECTED!");
lcd.clear();
lcd.setCursor(0,1);
lcd.print("Alarm Deactivated");
noTone(buzzer);
pirState == LOW;
}
else
{
noTone(buzzer);
}
}