Arduino 2 LEDs mit einem Taster an und aus schalten?
z.B Wenn ich den Taster drücke soll eine blaue LED leuchten und wenn ich denn nochmal drücke dann eine rote LED.
Habe es bis jetzt nur mit 2 Taster geschafft und auch nur wenn ich denn Taster gedrückt halte.
Ich kenne mich noch nicht richtig aus in diesem Bereich .
3 Antworten
Wenn ich das richtig verstehe, dann möchtest du mal die blaue LED anhaben, wenn du wieder loslässt, soll diese wieder ausgehen und wenn du dann wieder drückst soll die rote LED an und wieder ausgehen.
Das kannst du hiermit realisieren:
const int ledRed = x // x = Pin-Nummer
const int ledBlue = y // y = Pin-Nummer
const int button = z // z = Pin-Nummer
void setup() {
pinMode(ledRed, OUTPUT);
pinMode(ledBlue, OUTPUT);
pinMode(button, INPUT);
}
void loop() {
int counter = 0;
while(true) {
if(button == HIGH) {
if(counter % 2 == 0) { //Modulo-Funktion
digitalWrite(ledRed, HIGH);
counter += 1;
} else {
digitalWrite(ledBlue, HIGH);
counter += 1;
}
} else {
digitalWrite(ledBlue, LOW);
digitalWrite(ledRed, LOW);
}
}
}
}
ist schon etwas her, dass ich mit Arduino gearbeitet habe. Probier es mal aus, kann auch falsch sein.
Wenn du den Taster drückst soll die blaue dann ausgehen und die rote an? Oder die rote zusätzlich?
Im ersteren Fall würde ich etwa so arbeiten:
LED_blau = !LED_blau;
LED_rot = !LED_rot;
im zweiteren Fall müsstest du eine Art counter für den Tastendruck einführen und auf diesen counter abfragen (if counter == 1 LED_blau=HIGH; if counter == 2 LED_rot=HIGH;
Vergiss das switch debouncing nicht
Den Taster hast du aber schon richtig hinbekommen mit Prellschutz?
Eig ganz einfach.
Du gibst deinen LEDs Zustände und programmierst einen Zustandsautomaten
Ganz simpel (kannst du auch mit nem integer statt ner enumeration machen, so ists aber schöner) :
(Normalerweise macht man einen Zustandsautomaten im switch case, hab ich mir hier wegen der Größe mal gespart)
enum eZustand {
aus,
blau,
rot
};
eZustand state = aus;
if state==aus then
//mach Lampe blau
state = blau;
else if state==blau then
//mach Lampe rot
state = rot;
else if state==rot then
//mach Lampe aus
state=aus;
end