Помогите с прошивкой для Ардуино!

nevikat
Offline
Зарегистрирован: 08.02.2018

Здравствуйте! Помогите, пожалуйста, с прошивкой для Arduino Nano. Суть прошивки такова: считается время в часах, минутах и секундах. При нажатии на кнопки but_hours и but_minutes одновременно флажок становится противоположен сам себе. Если этот флаг (flag) равен 1, то нажатием кнопки but_hours мы можем увеличивать часы на единицу или нажатием кнопки but_minutes увеличиваем минуты на единицу. Проблема заключается в том, что я нажимаю кнопки и ничего не происходит. Помогите, пожалуйста!

Вот скетч:

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

Заранее СПАСИБО!!!

b707
Offline
Зарегистрирован: 26.05.2017

установите изначально (в сетапе)  flag =1 и попробуйте поменять часы и минуты

nevikat
Offline
Зарегистрирован: 08.02.2018

Ок, но что значит "поменять часы и минуты"?

P. S. Изменил, но не помогло :(