Здравствуйте! Помогите, пожалуйста, с прошивкой для Arduino Nano. Суть прошивки такова: считается время в часах, минутах и секундах. При нажатии на кнопки but_hours и but_minutes одновременно флажок становится противоположен сам себе. Если этот флаг (flag) равен 1, то нажатием кнопки but_hours мы можем увеличивать часы на единицу или нажатием кнопки but_minutes увеличиваем минуты на единицу. Проблема заключается в том, что я нажимаю кнопки и ничего не происходит. Помогите, пожалуйста! Вот скетч: Код (C++): #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // Устанавливаем какой дисплей unsigned long last_time; int sec; int minutes; int hours; int but_hours; int but_minutes; int flag; void setup() { lcd.init(); // инициализируем дисплей lcd.backlight(); // Включаем подсветку дисплея lcd.setCursor(0, 0); // Устанавливаем курсор pinMode(3, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); } void loop() { if (millis() - last_time > 1000) { sec++; last_time = millis(); } if (sec == 60) { minutes++; lcd.clear(); sec = 0; } if (minutes == 60) { hours++; lcd.clear(); minutes = 0; } but_hours = !digitalRead(3); but_minutes = !digitalRead(4); if (but_hours == 1 && but_minutes == 1) { flag = !flag; } if (flag == 1) { if (but_hours == 1) { hours++; } if (but_minutes == 1) { minutes++; } } lcd.print(hours); lcd.print(":"); lcd.print(minutes); lcd.print(":"); lcd.print(sec); lcd.setCursor(0, 0); }
Сейчас так попробую: Код (C++): if (but_hours == 1 && but_minutes == 1 && flag == 0) { flag = 1; delay(500); } if (but_hours == 1 && but_minutes == 1 && flag == 1) { flag = 0; delay(500); }