Я делаю таймер с 3 кнопками с ЖК-экраном 16x2 на Arduino. Очевидно, я хочу нажать кнопку запуска один раз, чтобы таймер отсчитывал до тех пор, пока не будет нажата кнопка остановки. У меня есть кнопка сброса, которая подключена к выводу сброса, поэтому я не писал для нее код.
Я уже был на уроке ladayada.com о состоянии кнопок, я внимательно следовал инструкциям. Я все еще получаю неправильные результаты.
signed short minutes, seconds;
char timeline[16];
int startPin = 7;
int stopPin = 6;
int buttonState1;
int buttonState2;
int oldState;
int currentState;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
pinMode(startPin,INPUT_PULLUP);
pinMode(stopPin,INPUT_PULLUP);
buttonState1 = digitalRead(startPin);
buttonState2 = digitalRead(stopPin);
void loop() {
currentState = digitalRead(startPin);
if(currentState!= buttonState1){
if(currentState==LOW){
lcd.setCursor(0, 1);
sprintf(timeline,"%0.2d mins %0.2d secs", minutes, seconds);
lcd.print(timeline);
delay(1000);
seconds++;
if (seconds == 60){
seconds = 0;
minutes ++; }
}
}
if(buttonState2==LOW){
delay(500);
sprintf(timeline,"%0.2d mins %0.2d secs", minutes, seconds);
}
buttonState1 = currentState;
}
Я ожидал, что Arduino сохранит состояние кнопки и будет считать до тех пор, пока не будет нажата кнопка остановки. Когда кнопка остановки нажата, она должна отображать время (текущий счет), когда она была нажата. Вместо этого кнопку «Пуск» нужно нажать дважды, чтобы отсчитать одну секунду. Я даже не могу понять логику кнопки остановки.