Код по зажиганию одного рандомного светодиода из семи
Есть 7 светодиодов и одна кнопка. Нужно чтобы при нажатии кнопки рандомно загорался один светодиод, при следующем нажатии, гас этот светодиод и так же рандомно загорался другой светодиод.
Накидал вот такой код. Код рабочий. Понимаю, что код плохой, но вырасти без код ревью иначе нельзя. Если можно его как то оптимизировать или я, что то не так сделал, подскажите пожалуйста.
#define bt 12
int buttonstate;
int butflag;
uint32_t tmr;
int x; // ПЕРЕМЕННАЯ ХРАНЯЩЕЕ РАНДОМНОЕ ЗНАЧЕНИЕ
int led[] = {4,5,6,7,8,9};
void setup() {
randomSeed(analogRead(0));
pinMode(4, OUTPUT); //
pinMode(5, OUTPUT); //
pinMode(6, OUTPUT); //
pinMode(7, OUTPUT); //
pinMode(8, OUTPUT); //
pinMode(9, OUTPUT); //
pinMode(bt, INPUT_PULLUP); //ИНИЦИАЛИЗИРУЕМ ПИНЫ
}
void loop() {
buttonstate = digitalRead(bt);
if(buttonstate == HIGH && butflag == 0 && millis() - tmr > 100)
{
butflag = 1;
tmr = millis();
x = led[random(0,6)];
if(butflag == 1)
{
digitalWrite(x, HIGH);
}
}
if(buttonstate == LOW && butflag == 1 && millis() - tmr > 100)
{
tmr = millis();
butflag = 0;
if(butflag == 0)
{
digitalWrite(x, LOW);
}
}
}