unsigned long currentStateStartTime = 0;
const unsigned long stateDuration = 5000; // Тривалість кожного стану у мілісекундах
enum State {
STATE_1,
STATE_2,
STATE_3
};
State currentState = STATE_1;
// Змінні для відстеження того, чи вже було виведено значення для кожного стану
bool printedState1 = false;
bool printedState2 = false;
bool printedState3 = false;
void setup() {
Serial.begin(9600);
}
void loop() {
unsigned long currentMillis = millis();
// Визначення, чи потрібно змінити стан
if (currentMillis - currentStateStartTime >= stateDuration) {
currentStateStartTime = currentMillis; // Оновлення часу початку поточного стану
// Скидаємо прапорці виведення для нового стану
printedState1 = false;
printedState2 = false;
printedState3 = false;
// Зміна стану
switch (currentState) {
case STATE_1:
currentState = STATE_2;
break;
case STATE_2:
currentState = STATE_3;
break;
case STATE_3:
currentState = STATE_1;
break;
}
}
// Виконання дій залежно від поточного стану
switch (currentState) {
case STATE_1:
// Дії для "Стан 1"
if (!printedState1) {
Serial.println("Виконуються дії для Стану 1");
printedState1 = true;
}
break;
case STATE_2:
// Дії для "Стан 2"
if (!printedState2) {
Serial.println("Виконуються дії для Стану 2");
printedState2 = true;
}
break;
case STATE_3:
// Дії для "Стан 3"
if (!printedState3) {
Serial.println("Виконуються дії для Стану 3");
printedState3 = true;
}
break;
}
}