Все привет. Вот сижу я уже второй день, голова сохнет. Никак не пойму этот millis. Пересмотрел кучу роликов в Ютубе, читал заметки ардуинщика, что только не делал не получается мне как-то обмудрить ситуацию.
Дело вот какое: есть два реле, одно реле пускает напряжение на аккумулятор 12 вольт 7 секунд, отключается и ждёт полсекунды, потом включается второе реле - на нем стоит лампа накаливания, которая разряжает аккумулятор 2 секунды и тоже отключается на по секунды. И так нужно делать по кругу, пока на аккумуляторе не появиться 12.5 Вольт.
Есть три светодиода - индикация режимов. Все это управляется одной кнопкой.
Вот, собственно, код:
Этот режим должен быть зациклен в while, до тех пор, пока из аналог. пина не поступит 12.5 вольт , а после остановить работу этого режима.
Проблема в том что delay мне не дают переключать режимы работы. Я не прошу переписать код, я прошу помочь разобраться с милисами.
Подскажите как сделать также, но только на миллис
Дело вот какое: есть два реле, одно реле пускает напряжение на аккумулятор 12 вольт 7 секунд, отключается и ждёт полсекунды, потом включается второе реле - на нем стоит лампа накаливания, которая разряжает аккумулятор 2 секунды и тоже отключается на по секунды. И так нужно делать по кругу, пока на аккумуляторе не появиться 12.5 Вольт.
Есть три светодиода - индикация режимов. Все это управляется одной кнопкой.
Вот, собственно, код:
C++:
butt1.tick();
if (butt1.isStep(0)) {
digitalWrite (LED_1, HIGH);
digitalWrite (LED_2, LOW);
digitalWrite (LED_3, LOW);
}
if (butt1.isStep(1)) {
digitalWrite (LED_1, LOW);
digitalWrite (LED_2, HIGH);
digitalWrite (LED_3, LOW);
while (voltage < 12.5) {
digitalWrite(RELAY_CHARGE, HIGH);
delay (7000);
digitalWrite(RELAY_CHARGE, LOW);
delay (500);
digitalWrite(RELAY_DISCHARGE, HIGH);
delay (2000);
digitalWrite(RELAY_DISCHARGE, LOW);
delay (500);
}
}
if (butt1.isStep(2)) {
digitalWrite (LED_1, LOW);
digitalWrite (LED_2, LOW);
digitalWrite (LED_3, HIGH);
}
if (butt1.isStep(3)) {
digitalWrite (LED_1, LOW);
digitalWrite (LED_2, LOW);
digitalWrite (LED_3, LOW);
}
}
Проблема в том что delay мне не дают переключать режимы работы. Я не прошу переписать код, я прошу помочь разобраться с милисами.
Подскажите как сделать также, но только на миллис