Не работает задержка millis() esp8266
У меня есть:
- 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;
//тут проблема
}
}