Я в своем коде использую один таймер, на 1 сек, у меня LAN соединение. При вызове таймера инструментирую переменную
a = a + 1; //инкрементируем счетчик времени
if (a>59) a = 0;
Разбиваю выполнение функций по разным значениям переменной а.
Например - измерение температуры - раз в минуту
//-----------------------измеряем влажность и темпиратру AM2302-----------------------------------
if(a==30) //прошло 60 секунд - измеряем темпиратуру (a - изменяеться от 0 до 60ти)
{
sensors_event_t event;
dht.temperature().getEvent(&event);
if (!isnan(event.temperature))
{
Blynk.virtualWrite(V7, event.temperature);
Serial.print("tempiratura = ");
Serial.println(event.temperature);
}
dht.humidity().getEvent(&event);
if (!isnan(event.relative_humidity))
{
Blynk.virtualWrite(V8, event.relative_humidity);
Serial.print("vlashnost = ");
Serial.println(event.relative_humidity);
}
}
каждые 30 секунд измеряем потребление электричества
if(a==21 || a==51) //выводим мнгновенное потребление в ваттах с усреднением за 30 секунд
{
//Serial.print("30 sec = ");
//Serial.print(impuls_counter_30sec);
//Serial.println(" impuls");
potreblenie_vatt = impuls_counter_30sec*120/1.6;
Blynk.virtualWrite(V56, potreblenie_vatt);
impuls_counter_30sec = 0;
}
if(a==22 || a==52) //выводим общее потребление энергии в киловаттах
{
vsego_kvt = impuls_counter;
vsego_kvt = vsego_kvt/1600;
Blynk.virtualWrite(V54, vsego_kvt);
//Serial.print("impuls_counter = ");
//Serial.println(impuls_counter);
//Serial.print("vsego_kvt = ");
//Serial.println(vsego_kvt);
vsego_tenge = vsego_kvt * 19;
Blynk.virtualWrite(V55, vsego_tenge);
}
И так далее. Не переживаю о пересечении таймеров.