Помощь
- Войдите на сайт для отправки комментариев
Втр, 14/07/2020 - 10:44
Добрый день! Пожалуйста помогите решить проблему с кодом.
int seconds =0; int minutes =0; int timer; long the_time=millis(); #include<GyverEncoder.h> #include<TM1637.h> #define CLK 5 #define DT 6 #define SW 7 Encoder enc (CLK, DT, SW); TM1637 tm1637 (3, 2); void setup() { enc.setType(TYPE2); pinMode(13, OUTPUT); tm1637.init(); tm1637.setBrightness(4); } void loop() { enc.tick(); if(enc.isRight()) seconds++; if(enc.isLeft()) seconds--; if(enc.isRightH()) minutes++; if(enc.isLeftH()) minutes--; if(seconds<0 || seconds>59) { seconds=0; } if(minutes<0) { minutes=0; } if(minutes>60) { minutes=60; } timer=(seconds+minutes*100)*1000; if(enc.isDouble()) { digitalWrite(13, 1); if(millis()-the_time >= timer) { digitalWrite(13, 0); seconds = 0; minutes = 0; } } tm1637.display(seconds+minutes*100); tm1637.switchColon(); }
Этот код должен работать так:
при повороте энкодера в право, на дисплее увеличиваются секунды;
при повороте энкодера в лево, на дисплее уменьшаются секунды;
при удержании кнопки и повороте в право увеличиваются минуты;
при удержании кнопки и повороте в лево минуты уменьшаются;
при двойном клике по кнопке энкодера запускается таймер;
по окончанию времени таймера минуты и секунды обнуляются и можно будет заново использовать таймер.
Но на практике он не отсчитывает указанное время.
А что, в минуте теперь сто секунд? Блин, вот хотел же прочитать все поправки к Конституции, но всё лень ... :-(
Строки №№40-48. А кто будет время начала отсчёта запоминать? Вы когда время засекаете, смотрите на часы в начале или сразу отсчитываете?
На часы смотрю.
так а в программе не смотрите почему-то.