Ви не увійшли.
Всім привіт! Підкажіть будь ласка, як зробити декілька лічильників паралельно, при цьому кожен лічильник має різні проміжки часу за допомогою millis().
Якщо internetTemperature() більше ніде в коді не викликається, то при даних значеннях interval-ів блок if в internetTemperature() буде виконуватись завжди (тобто якби там був блок else, то він би ніколи не виконувався). Поясніть мету цього if в internetTemperature().
У мене є:
esp8266
Матриця MAX7219
Бібла GyverMAX7219.h
Так само є функція виведення часу та температури з інтернету (щось типу розумного годинника) і у функції виведення температури має бути затримка, delay() на подив працює нормально, але його використовувати не можна. Залишається тільки millis(), але в умовній конструкції таке відчуття, що таймер не спрацьовує, а в конструкції циклу while, таймер спрацьовує, температуру виводить, але по закінченню esp8266 ресетається. Подібне зустрічав раніше коли хотів зробити миготливу двокрапку, але там двокрапка за часом таймера спочатку не світить (так і має бути), блимає і моментально зникає. Я думаю, що тут один спільний косяк. Допоможіть будь ласка! p.s Якщо потрібний весь код, скажіть, надам.
#define INTERNET_WEATHER_TIME 10000
void outInfo(bool time, bool tempInternet)
{
if(time)
{
internetTime();
}
if (tempInternet)
{
const unsigned long interval = INTERNET_WEATHER_TIME;
static unsigned long previousMillis = 0;
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval)
{
previousMillis = currentMillis;
internetTemperature();
//тут всё ок
}
}
}
void internetTime()
{
matrix.clear();
matrix.setCursor(3, 1);
matrix.print(String(hours < 10 ? "0" : "") + hours);
matrix.setCursor(14, 1);
matrix.print(":");
matrix.setCursor(18, 1);
matrix.print(String(minutes < 10 ? "0" : "") + minutes);
matrix.update();
}
void internetTemperature()
{
matrix.clear();
matrix.setCursor(10, 1);
matrix.print(temperature);
matrix.setCursor(16, 1);
matrix.print("C");
matrix.update();
const unsigned long interval = 5000;
static unsigned long previousMillis = 0;
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval)
{
previousMillis = currentMillis;
//тут проблема
}
}