Здравствуйте! Совсем недавно начал изучать тему с Arduino и электроникой, и хотел сделать для практики светильник. Но наткнулся на проблему одну. Надо что бы после первого нажатия на тактовую кнопку, светодиод горел, а после повторного нажатия - потухал. Спасибо заранее
Код:
Код:
Код:
const int BLED = 11;
const int GLED = 10;
const int RLED = 9;
const int btn = 2;
int active_color;
bool turn = true;
bool lastButton = LOW;
bool currentButton = LOW;
int ledMode = 0;
int mode = 0;
int invert(int value) {
return map(value, 0, 255, 255, 0);
}
void setup() {
pinMode(BLED, OUTPUT);
pinMode(GLED, OUTPUT);
pinMode(RLED, OUTPUT);
pinMode(btn, INPUT);
active_color = BLED;
analogWrite(RLED, invert(255));
analogWrite(GLED, invert(0));
analogWrite(BLED, invert(0));
}
bool debounce(bool last) {
bool current = digitalRead(btn);
if (last != current) {
delay(5);
current = digitalRead(btn);
return current;
}
}
void loop() {
currentButton = debounce(lastButton);
if (lastButton == LOW && currentButton == HIGH) {
ledMode++;
}
lastButton = currentButton;
if(currentButton == HIGH) {
switch (active_color) {
case RLED:
active_color = BLED;
break;
case GLED:
active_color = RLED;
break;
case BLED:
active_color = GLED;
break;
}
if (!turn)
for(int i = 0; i <=255; i++) {
analogWrite(active_color, i);
delay(5);
}
else
for(int i = 255; i>=0; i--) {
analogWrite(active_color, i);
delay(5);
}
turn = !turn;
}
else if(currentButton == LOW) {
analogWrite(RLED, LOW);
analogWrite(GLED, LOW);
analogWrite(BLED, LOW);
}
}
Изменено: