Всех приветствую! Делаю свой проект часов с мини-метеостанцией с лсд 1602. Уже который день меня мучает проблема, что при нажатии кнопки баззер не прекращает пищать. Время не идёт далее на экране. Я уже код переписывал, отпустил пока метеостанцию, только часы и баззер. Уже брал с нета разные коды, но всё равно. Хэээлп)
Код:
// Підключення бібліотек
#include "LiquidCrystal_I2C.h" // Екран
#include "Wire.h" // З'єднувальна бібліотека
#include <iarduino_RTC.h> // Годинник
// Визначення модулів і т.д.
iarduino_RTC time(RTC_DS1302, 8, 10, 9); // Годинник
LiquidCrystal_I2C lcd(0x27, 16, 2); // Екран
// Налаштування
int alarm_time_h = 17; // Година будильника
int alarm_time_m = 37; // Хвилина будильника
bool alarm_flag;
void timer_screen1(){
if(millis()%1000==0) { // в 1 секунду
lcd.setCursor(4, 0);
lcd.print(time.gettime("H:i:s")); // вивід часу
lcd.setCursor(0, 1);
lcd.print(time.gettime("D, d-m-Y"));
//delay(1); // тут питання
}
if(time.seconds==00){ // если в текущем времени 0 секунд
if(time.minutes==alarm_time_m){ // если совпали минуты
if(time.Hours==alarm_time_h){ // если совпали часы
alarm_flag=true; // устанавливаем флаг разрешающий совершение действий будильника (сигнализация)
}
}
}
else {alarm_flag=false;} // если будильник выключен, то сбрасываем флаг разрешающий совершение действий будильника (сигнализация)
if(alarm_flag){Func_alarm_action();}// запускаем действия будильника
button_control(); // передаём управление кнопкам
}
bool butt_flag = 0;
bool butt;
void setup() {
Serial.begin(9600);
pinMode(3, INPUT_PULLUP);
pinMode(4, OUTPUT);
lcd.begin(16, 2);
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Meteostat v.2.2");
lcd.setCursor(0, 1);
lcd.print("beta by R and A");
tone(4, 1000);
delay(100);
tone(4, 1500);
delay(100);
noTone(4);
delay(150);
tone(4, 2000);
delay(200);
noTone(4);
lcd.clear();
time.begin();
}
void loop() {
timer_screen1();
}
void button_control(){
butt = !digitalRead(3);
if (butt == 1 && butt_flag == 0) {
butt_flag = 1;
alarm_flag = 0;
Serial.println("(butt == 1 && butt_flag == 0)");
}
if (butt == 0 && butt_flag == 1) {
butt_flag = 0;
alarm_flag = 0;
Serial.println("(butt == 0 && butt_flag == 1)");
}
if (butt == 1 && butt_flag == 1) {
alarm_flag = 0;
Serial.println("(butt == 1 && butt_flag == 1)");
}
}
void Func_alarm_action(){
tone(4, 2000); delay(100); noTone(4); delay(100);
tone(4, 2000); delay(100); noTone(4); delay(100);
tone(4, 2000); delay(100); noTone(4);
}