Помощь
- Войдите на сайт для отправки комментариев
Втр, 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. А кто будет время начала отсчёта запоминать? Вы когда время засекаете, смотрите на часы в начале или сразу отсчитываете?
На часы смотрю.
так а в программе не смотрите почему-то.