Ребята, привет! Самостоятельно изучаю схемотехнику, андруино и решил немного побаловаться светодиодами. Помогите, пожалуйста, в решении задачи. Имеются три светодиода (красный, желтый и зеленый) и тактовая кнопка. При каждом нажатии кнопки один светодиод гаснет, а другой загорается и так по очереди. Схему собрал. Набросал алгоритм. Приступил к написанию скетча и.. не получается. Предполагаю не получается потому что идет зацикливание, однако у меня же стоит цикл IF. В общем я в растерянности. Код (Text): #include <Bounce.h> #define G_LED 2 #define Y_LED 4 #define R_LED 7 #define BUTTON 12 int G_LED_VAL =0; int Y_LED_VAL =0; int R_LED_VAL =0; Bounce klik = Bounce (BUTTON, 200); void setup () { pinMode (BUTTON, INPUT); pinMode (G_LED, OUTPUT); pinMode (Y_LED, OUTPUT); pinMode (R_LED, OUTPUT); } void loop () { if (klik.update ()) { if (G_LED_VAL == HIGH) //если ЗЕЛЕНЫЙ ВКЛ, то его ГАСИМ, ЖЕЛТЫЙ ВКЛ { G_LED_VAL=LOW; Y_LED_VAL=HIGH; R_LED_VAL=LOW; //digitalWrite (G_LED, G_LED_VAL); //digitalWrite (Y_LED, Y_LED_VAL); //digitalWrite (R_LED, R_LED_VAL); } if (G_LED_VAL != HIGH) //если ЗЕЛЕНЫЙ ВЫКЛ { if (Y_LED_VAL == HIGH) //если ЖЕЛТЫЙ ВКЛ, то его гасим, КРАСНЫЙ ВКЛ { G_LED_VAL=LOW; Y_LED_VAL=LOW; R_LED_VAL=HIGH; // digitalWrite (G_LED, G_LED_VAL); // digitalWrite (Y_LED, Y_LED_VAL); // digitalWrite (R_LED, R_LED_VAL); } if (Y_LED_VAL != HIGH) //если ЖЕЛТЫЙ ВЫКЛ { if (R_LED_VAL == HIGH) // если КРАСНЫЙ ВКЛ, то его гасим, ЗЕЛЕНЫй ВКЛ { G_LED_VAL=HIGH; Y_LED_VAL=LOW; R_LED_VAL=LOW; // digitalWrite (G_LED, G_LED_VAL); // digitalWrite (Y_LED, Y_LED_VAL); // digitalWrite (R_LED, R_LED_VAL); } else // если КРАСНЫЙ ВЫКЛ, то КРАСНЫЙ ВКЛ { G_LED_VAL=LOW; Y_LED_VAL=LOW; R_LED_VAL=HIGH; // digitalWrite (G_LED, G_LED_VAL); // digitalWrite (Y_LED, Y_LED_VAL); // digitalWrite (R_LED, R_LED_VAL); } } } digitalWrite (G_LED, G_LED_VAL); digitalWrite (Y_LED, Y_LED_VAL); digitalWrite (R_LED, R_LED_VAL); } }
Код (Text): void UpdateClick() { boolean changed = debouncer.update(); if (changed) { int value = debouncer.read(); if (value == HIGH) { buttonState = 0; ButtonCounter=ButtonCounter+1; //Счетчик нажатий } else { buttonState = 1; buttonPressTimeStamp = millis(); } } } Сделай со счетчиком и проверяй его. Если = 1 то включай зеленый Если = 2 то включай желтый Если =3 то включай красный Если включен красный и нажали на кнопку, обнуляй счетчик, что бы включился зеленый. Используй библиотеку Bounce2.h
Спасибо за скорый ответ, отзывчивость . Думал про счетчик кнопок, но как реализовать - не знал. Спасибо за пример. С дополнительными модулями и функциями пока не встречался. Почитал еще инет - узнал, что есть библиотеки для опросов кнопок. В общем: есть вектор дальнейшего познания.