Grundlagen · 10 Min. Lesezeit

Arduino Taster LED mit if-else: Bedingungen in Blöcken und C++

Arduino Taster und LED mit if-else in Blöcken: Pin lesen, Vergleiche =, ≠, <, >, verschachtelte Bedingungen, Ein/Aus-Schalter, Entprellen und LDR-Nachtlicht.

Mit Arduino, Taster, LED und if-else lernst du, wie ein Programm abhängig von einer Frage einen von zwei Wegen wählt: „Ist der Taster gedrückt? Dann schalte die LED ein, sonst aus.“ In Arduinos C++ heißt diese Struktur if/else, und der Block „falls … mache … sonst“ in der BlueGrays-Blockprogrammierung ist ihr genaues Gegenstück. In diesem Beitrag lernst du an einem Taster-Projekt, wie du einen Pin als Eingang einstellst und ausliest, danach den falls-Block, Vergleichsoperatoren, verschachtelte Bedingungen und wie du zwei Bedingungen mit „und“ verknüpfst, Block für Block und Zeile für Zeile.

Dieser Beitrag ist Teil 3 der Reihe Von Blöcken zum Code. Im vorherigen Teil haben wir unser erstes Programm geschrieben und eine LED mit Blöcken blinken lassen; im nächsten Teil geht es um Schleifen und Variablen.

Bisher haben unsere Programme immer dasselbe getan: LED an, warten, LED aus, wieder warten. Auf die Außenwelt haben sie nie gehört. Sobald Bedingungen ins Spiel kommen, entscheidet das Board anhand eines Tasters, eines Lichtsensors oder einer gemessenen Entfernung, und genau da beginnt der eigentliche Spaß beim Programmieren von Robotern. Alle Beispiele hier stammen aus kostenlosen Blockprojekten. Du kannst ihre Blöcke und ihren Code auf der Seite zur Blockprogrammierung oder in der App öffnen und parallel mitlesen.

Eingang und Ausgang: In welche Richtung arbeitet ein Pin?

Die digitalen Pins des Arduino erledigen eine von zwei Aufgaben. Ein Pin als Ausgang gibt 5 V (HIGH) oder 0 V (LOW) aus; so steuerst du eine LED, einen Summer oder ein Relais. Ein Pin als Eingang gibt nichts aus, er lauscht nur auf die Spannung: Beim Arduino Uno liest er alles über etwa 3 V als HIGH und alles unter 1,5 V als LOW. In Blöcken legst du das im Setup fest: Der Block „Pin 13 als EINGANG setzen“ wird in C++ zu pinMode(13, INPUT); und „Pin 7 als AUSGANG setzen“ zu pinMode(7, OUTPUT);. Zum Auslesen dient der Block „Pin 13 lesen“. Er sieht anders aus als die übrigen: Er ist kein Befehl zum Stapeln, sondern ein abgerundeter Wertblock, der in eine Lücke eines anderen Blocks gesteckt wird. Sein C++-Gegenstück ist digitalRead(13), das HIGH oder LOW zurückgibt. Weil HIGH beim Arduino 1 und LOW 0 entspricht, kannst du das Ergebnis auch wie eine Zahl in einer Variablen speichern. Kurz gesagt: Befehlsblöcke tun etwas, Wertblöcke liefern ein Ergebnis, und nur so ein Ergebnis passt in den Bedingungsplatz des falls-Blocks.

BlockC++-EntsprechungWas er tut
Pin 13 als EINGANG setzenpinMode(13, INPUT);Schaltet den Pin auf Lauschen (einmal im Setup)
Pin 7 als AUSGANG setzenpinMode(7, OUTPUT);Lässt den Pin eine Spannung ausgeben
Pin 13 lesendigitalRead(13)Gibt HIGH (1) oder LOW (0) zurück
HOCH an Pin 7 schreibendigitalWrite(7, HIGH);Legt 5 V an den Pin, die LED leuchtet
analog lesen A0analogRead(A0)Gibt eine Zahl von 0 bis 1023 zurück
falls … mache … sonstif (…) { … } else { … }Führt je nach Bedingung einen von zwei Wegen aus

Schaltung: Taster an 13, LED an 7, Pull-down-Widerstand ist Pflicht

Im Projekt LED mit Taster schalten (Push) hängt der Taster an D13 und die LED an D7. Ein Beinchen des Tasters geht an 5V, das andere an D13, und zwischen D13 und GND sitzt ein Pull-down-Widerstand mit 10 kΩ. Ist der Taster losgelassen, zieht der Widerstand den Pin auf GND, und er liest LOW. Drückst du, liegen die 5V direkt am Pin, und er liest HIGH. Weil der Widerstand groß ist, fließt beim Drücken nur etwa ein halbes Milliampere von 5V nach GND. Das lange Bein der LED geht über einen 220-Ω-Widerstand an D7, das kurze an GND.

BauteilAnschlussArduino-Uno-Pin
Taster, Bein 1Direkt5V
Taster, Bein 2 (diagonal)DirektD13
10-kΩ-Widerstand (Pull-down)Zwischen D13 und GNDD13 – GND
LED langes Bein (Anode)Über 220-Ω-WiderstandD7
LED kurzes Bein (Kathode)DirektGND
Lässt du den Pull-down-Widerstand weg, hängt D13 bei losgelassenem Taster in der Luft; das nennt man einen offenen (floatenden) Eingang. Der Pin fängt elektrische Störungen ein, digitalRead() liefert zufällig HIGH oder LOW, und die LED flackert, ohne dass du etwas berührst, oder leuchtet sogar, wenn deine Hand näher kommt. Bei Tastern mit vier Beinen sind die zwei Beine auf derselben Seite innen schon verbunden, nimm deshalb diagonale Beine. Mehr dazu in Taster am Arduino anschließen und Pull-up- und Pull-down-Widerstand.

Der falls-Block und if/else: LED leuchtet, solange der Taster gedrückt ist

Die Blockversion des Projekts hat zwei Bereiche. In „Setup (läuft einmal)“ wird Pin 13 als EINGANG und Pin 7 als AUSGANG gesetzt. In „immer wiederholen“ steht ein einziger großer Block: falls … mache … sonst. In seinem sechseckigen Bedingungsplatz steckt der Vergleich „Pin 13 lesen = HOCH“. Ist die Bedingung wahr, läuft der Block „HOCH an Pin 7 schreiben“ im mache-Zweig, sonst der Block „NIEDRIG an Pin 7 schreiben“ im sonst-Zweig.

Arduino Taster LED if-else als Blöcke: Projekt LED mit Taster schalten (Push)
Pin 13 ist EINGANG, Pin 7 AUSGANG; liest Pin 13 HOCH, leuchtet die LED, sonst geht sie aus.
C++ (Arduino IDE)
1void setup() {
2  pinMode(13, INPUT);    // Buton girişi (harici pull-down) / Button input (external pull-down)
3  pinMode(7, OUTPUT);    // LED çıkışı / LED output
4}
5
6void loop() {
7  if (digitalRead(13) == HIGH) {   // Buton basılı mı? / Is the button pressed?
8    digitalWrite(7, HIGH);         // Basılı: LED yanar / Pressed: LED on
9  } else {
10    digitalWrite(7, LOW);          // Bırakıldı: LED söner / Released: LED off
11  }
12}
13

Legst du Code und Blöcke nebeneinander, ist die Zuordnung eindeutig. Das Wort if entspricht „falls“, die Bedingung digitalRead(13) == HIGH in Klammern dem Bedingungsplatz, das erste Paar geschweifter Klammern dem mache-Zweig und else mit seinen Klammern dem sonst-Zweig. Jeder Block, den du in einen Zweig legst, wird im Code zu einer Zeile innerhalb der passenden Klammern. Da loop() zigtausendmal pro Sekunde läuft, liest das Board den Taster ständig neu; sobald du den Finger hebst, ist die Bedingung im nächsten Durchlauf falsch und die LED geht aus. Darum heißt das Projekt „Push“: Die LED leuchtet nur, solange du drückst. Der sonst-Zweig ist optional; ein falls-Block nur mit mache-Zweig wird zu einem if ohne else. Entfernst du hier aber den sonst-Zweig, geht die LED nach dem ersten Einschalten nie wieder aus, weil keine Zeile mehr übrig ist, die sie ausschaltet. Bei jeder Bedingung an beide Zweige zu denken, ist eine gute Gewohnheit.

Vergleichsblöcke: =, ≠, < und >

Zeichen im BlockC++BedeutungBeispiel aus den Projekten
===gleichdigitalRead(13) == HIGH (LED mit Taster, Push)
≠!=ungleichbutton != lastButton (LED ein/aus mit Taster)
<<kleiner alsvalue < 50 (Nachtlicht mit LDR)
>>größer alsdistance > minDistance (HC-SR04-Abstand)
Das Zeichen „=“ im Vergleichsblock wird in C++ als == geschrieben. Ein einfaches Gleichheitszeichen ist in C++ kein Vergleich, sondern eine Zuweisung. Schreibst du if (button = 1), hält dich der Compiler nicht auf: button bekommt den Wert 1, das Ergebnis ist ungleich null, die Bedingung ist also in jedem Durchlauf wahr, und die LED leuchtet, ohne je auf den Taster zu schauen. Mit Blöcken passiert dir das nicht, weil Zuweisung („setze … auf …“) und Vergleich getrennte Blöcke sind. Sobald du zum Code wechselst, ist es aber der häufigste Fehler überhaupt.

Ein/Aus mit einem Taster: verschachteltes falls und eine Zustandsvariable

Im Push-Projekt leuchtete die LED nur, solange du den Taster gedrückt hieltest. Soll sie sich wie ein echter Lichtschalter verhalten, „einmal drücken an, nochmal drücken aus“, muss sich das Programm zwei Dinge merken: ob die LED gerade an ist und was der Taster im letzten Durchlauf gelesen hat. Das Projekt LED mit Taster ein- und ausschalten deklariert dafür im Bereich „globale Variablen (ganz oben)“ zwei Ganzzahlen: ledState (0 = aus, 1 = an) und lastButton (der vorherige Wert). Die Schaltung bleibt gleich: Taster an D13 mit externem Pull-down, LED an D7.

Blöcke des Projekts LED mit Taster ein- und ausschalten: verschachteltes falls, Vergleich ≠ und nicht-Block
Das äußere falls erkennt eine Änderung am Taster, das innere prüft, ob es ein Drücken ist; nicht ledState kehrt den LED-Zustand um.
C++ (Arduino IDE)
1int ledState = 0;     // LED durumu: 0 = sönük, 1 = yanık / LED state: 0 = off, 1 = on
2int lastButton = 0;   // Butonun önceki okuması / Previous button reading
3
4void setup() {
5  pinMode(13, INPUT);   // Buton girişi (harici pull-down) / Button input (external pull-down)
6  pinMode(7, OUTPUT);   // LED çıkışı / LED output
7}
8
9void loop() {
10  int button = digitalRead(13);   // Butonu oku / Read the button
11  if (button != lastButton) {     // Buton durumu değişti / Button state changed
12    if (button == 1) {            // Yalnız basış anında (LOW -> HIGH) / Only at the press (LOW -> HIGH)
13      ledState = !ledState;       // Durumu ters çevir / Flip the state
14      digitalWrite(7, ledState);
15    }
16    delay(50);                    // Sıçramayı atlamak için kısa bekleme / Short wait to skip the bounce
17    lastButton = button;          // Bu okumayı sakla / Store this reading
18  }
19}
20
BlockC++-ZeileAufgabe
deklariere Ganzzahl (int) ledState = 0int ledState = 0;Speichert den LED-Zustand
deklariere Ganzzahl (int) lastButton = 0int lastButton = 0;Speichert den vorherigen Tasterwert
setze button auf Pin 13 lesenint button = digitalRead(13);Liest den aktuellen Tasterzustand
falls button ≠ lastButtonif (button != lastButton) {Geht hinein, wenn sich der Zustand geändert hat
falls button = 1if (button == 1) {Geht hinein, wenn die Änderung ein Drücken ist (0 auf 1)
setze ledState auf nicht ledStateledState = !ledState;Macht aus 0 eine 1 und aus 1 eine 0
ledState an Pin 7 schreibendigitalWrite(7, ledState);Bringt die LED in den neuen Zustand
50 ms wartendelay(50);Überspringt das Prellen des Kontakts
setze lastButton auf buttonlastButton = button;Merkt sich den Wert für den nächsten Durchlauf

Das Herz des Programms sind die zwei verschachtelten falls-Blöcke. Die äußere Bedingung button ≠ lastButton ist nur in dem Durchlauf wahr, in dem sich der Tasterzustand ändert; in den tausenden Durchläufen, in denen du den Taster hältst oder gar nicht berührst, passiert nichts. Eine Änderung kann in zwei Richtungen gehen: Drücken (0 auf 1) oder Loslassen (1 auf 0). Die innere Bedingung button = 1 wählt davon nur das Drücken aus. So ändert sich die LED einmal pro Tastendruck und beim Loslassen gar nicht. Im Code erkennst du verschachtelte ifs an Klammern in Klammern. In Blöcken sitzt das innere falls im mache-Zweig des äußeren, sodass du auf einen Blick siehst, welche Zeile von welcher Bedingung abhängt.

Der Block nicht ledState wird in C++ als !ledState geschrieben. Das Ausrufezeichen bildet das logische Gegenteil: Das Gegenteil von 0 ist 1, das Gegenteil jeder Zahl ungleich null ist 0. Weist du ledState sein eigenes Gegenteil zu, kippt der Zustand bei jedem Drücken. Der folgende Block „ledState an Pin 7 schreiben“ ist die Zeile digitalWrite(7, ledState); weil HIGH 1 und LOW 0 entspricht, lässt sich der Wert der Variablen direkt an den Pin schreiben. Zum Schluss bekommt lastButton den Wert dieses Durchlaufs, damit der Vergleich im nächsten Durchlauf stimmt. Vergisst du diese Zuweisung, bleibt lastButton immer 0; solange du drückst, ist die äußere Bedingung in jedem Durchlauf wahr, und die LED blinkt schnell.

Der Block 50 ms warten ist keine Deko, sondern eine einfache Form des Entprellens. Die Metallkontakte eines Tasters öffnen und schließen sich beim Drücken einige Millisekunden lang mehrfach; das Board liest so schnell, dass es einen Tastendruck für mehrere halten kann, und die LED bleibt zufällig an oder aus. 50 ms Warten nach einer Änderung gibt dem Prellen Zeit abzuklingen. Während delay() wartet, kann das Board nichts anderes tun; für Timing ohne Anhalten des Programms lies millis() und delay().

Analoge Bedingung: Nachtlicht mit LDR

Bedingungen gibt es nicht nur für HIGH und LOW. Im Projekt Nachtlicht mit LDR wandelt der Block „setze value auf analog lesen A0“ die Spannung an A0, wo der LDR angeschlossen ist, in eine Zahl zwischen 0 und 1023 um; in C++ ist das die Zeile value = analogRead(A0);. Danach prüft der falls-Block value < 50. Liegt der Wert unter 50, gilt es als dunkel und die LED an D13 geht an, sonst aus. Der Aufbau ist derselbe wie beim Push-Projekt; nur der Vergleich im Bedingungsplatz ist ein anderer.

Blöcke des Projekts Nachtlicht mit LDR: analog lesen A0 und die Bedingung value < 50
Eine Analogmessung liefert eine Zahl von 0 bis 1023; ist value kleiner als 50, leuchtet die LED, sonst geht sie aus.
C++ (Arduino IDE)
1int value;   // Işık okuması (0-1023) / Light reading (0-1023)
2
3void setup() {
4  pinMode(13, OUTPUT);   // LED çıkışı / LED output
5}
6
7void loop() {
8  value = analogRead(A0);   // Işık seviyesini oku / Read the light level
9
10  // Eşik 50: altı karanlık sayılır, hassasiyeti bu sayıyla ayarla
11  // Threshold 50: anything below counts as dark. Tune the sensitivity with this number
12  if (value < 50) {
13    digitalWrite(13, HIGH);   // Karanlık: LED yanar / Dark: LED on
14  } else {
15    digitalWrite(13, LOW);    // Aydınlık: LED söner / Bright: LED off
16  }
17}
18

Je nach LDR und Widerstand in der Schaltung kann der Schwellwert 50 für dein Zimmer zu niedrig oder zu hoch sein. Um die richtige Zahl zu finden, beobachte zuerst mit dem Projekt Lichtstärke messen mit LDR die Hell- und Dunkelwerte im seriellen Monitor und lege den Schwellwert dazwischen. Pendelt der Wert genau um die Schwelle, kann die LED flackern; zwei getrennte Schwellen für Ein und Aus sind eine schöne Lösung. Wie ein LDR funktioniert, erfährst du im Beitrag LDR-Lichtsensor.

Bedingungen verknüpfen: der und-Block und &&

Manchmal reicht eine Bedingung nicht. Im Projekt HC-SR04 Abstandsmessung (serielle Anzeige) wird die gemessene Entfernung nur dann im seriellen Monitor ausgegeben, wenn sie zwischen 3 cm und 100 cm liegt. In Blöcken werden zwei Vergleiche mit einem und-Block nebeneinander verbunden: „distance > minDistance und distance < maxDistance“. In C++ wird daraus if (distance > minDistance && distance < maxDistance). Der Operator && macht das Ergebnis nur wahr, wenn beide Seiten wahr sind; ist auch nur eine falsch, ist die Bedingung falsch. So landen unsinnige Werte außerhalb des Messbereichs gar nicht erst auf dem Bildschirm. „Oder“ schreibt man in C++ als ||, dann genügt eine wahre Bedingung. Die Wahrheitstabellen von UND, ODER und NICHT kannst du im Werkzeug Logikgatter ausprobieren.

Dieselben Bedingungen auf dem ESP32: interner Pull-up und umgekehrte Logik

Das Projekt ESP32 LED-Steuerung mit Drucktaste (Push) nutzt denselben falls-Block auf einem ESP32, mit zwei Unterschieden. Die LED hängt an GPIO 5, der Taster an GPIO 4, und der Tasterpin bekommt im Pin-Block die Eingangsoption mit Pull-up. In C++ ist das pinMode(BUTTON_PIN, INPUT_PULLUP);: Ein Widerstand im Chip zieht den Pin auf HIGH, ein externer Widerstand ist nicht nötig. Diesmal geht der Taster an GND, also liest der Pin beim Drücken LOW, und die Bedingung lautet „Pin BUTTON_PIN lesen = NIEDRIG“. Das Projekt ESP32 LED Steuerung mit Taster (Toggle) erledigt das Ein- und Ausschalten statt mit 50 ms Warten mit dem Zeitblock für millis() und verknüpft wieder zwei Bedingungen mit einem und-Block. ESP32-Pins arbeiten mit 3,3 V; schließe den Taster nicht an 5 V an.

Häufige Fehler und Lösungen

FehlerSymptomLösung
Kein Pull-down-WiderstandDie LED flackert von selbst und leuchtet, wenn die Hand näher kommt10 kΩ zwischen D13 und GND oder INPUT_PULLUP verwenden und die Logik umdrehen
Einfaches Gleichheitszeichen: if (button = 1)Die LED leuchtet immer und ignoriert den TasterFür Vergleiche == verwenden
Semikolon am Ende der if-ZeileDer Code in den Klammern läuft unabhängig von der Bedingung in jedem DurchlaufDas ; nach if (…) löschen
Tasterbeine auf derselben Seite benutztDer Pin liest immer HIGH oder immer LOWDiagonale Beine verwenden
lastButton wird nicht aktualisiert oder keine WartezeitDie LED blinkt beim Halten oder landet zufällig an oder auslastButton = button und die 50 ms Wartezeit ergänzen
Bei INPUT_PULLUP HIGH für gedrückt haltenDie LED arbeitet verkehrt herum und leuchtet beim LoslassenMit internem Pull-up bedeutet LOW gedrückt
LDR-Schwellwert passt nicht zum RaumDie LED leuchtet nie oder dauerndWert im seriellen Monitor beobachten und neuen Schwellwert wählen

Blöcke und Code in der App nebeneinander öffnen

Alle Projekte aus diesem Beitrag gehören zu den kostenlosen Blockprojekten in der BlueGrays-App. Schaltest du im Codebereich eines Projekts den Schalter Als Blöcke zeigen ein, erscheint statt des Codes dasselbe Programm als Blöcke; tippst du auf das Bild, öffnet es sich im Vollbild. Der Tab Blöcke verstehen erklärt das Programm Schritt für Schritt: Jeder Schritt zeigt nur seine eigenen Blöcke und was sie tun, so kannst du verschachtelte falls-Blöcke einzeln verfolgen. Auch die if/else- und digitalRead-Beispiele im Code-Guide gibt es als Blöcke. Blöcke werden nicht direkt aufs Board geladen, und eigene Programme aus Blöcken zusammenstellen kannst du vorerst nicht; aufs Board kommt immer der echte C++-Code des Projekts, den du in die Arduino IDE kopierst und hochlädst. Zum Wiederholen stellen dir die Fragen des Tages jeden Tag 5 Fragen auf den Stufen A1 bis C2.

Jetzt, wo du Bedingungen kennst, geht es als Nächstes um Wiederholungen und Zähler: Im Teil Schleifen und Variablen siehst du, wie „immer wiederholen“ mit loop() und der Zählblock mit einer for-Schleife zusammenhängt. Bis dahin kannst du dir in der BlueGrays-App Schaltplan und Code der Projekte LED mit Taster, Nachtlicht mit LDR und der ESP32-Taster ansehen, mit Als Blöcke zeigen zur Blockansicht und mit Blöcke verstehen zur Schritt-für-Schritt-Erklärung wechseln.

Häufige Fragen

Was macht der falls-Block in der Blockprogrammierung?

Der falls-Block lässt ein Programm entscheiden: Ist die Bedingung wahr, laufen die Blöcke im mache-Zweig, sonst die im sonst-Zweig. In Arduino-Projekten prüft man damit meist, ob ein Taster gedrückt ist oder ob ein Sensorwert eine Schwelle überschritten hat. Das C++-Gegenstück ist die if/else-Anweisung.

Was ist der Unterschied zwischen if und else beim Arduino?

if führt den Code in seinen geschweiften Klammern aus, wenn die Bedingung in den runden Klammern wahr ist. else ist optional und enthält Code, der nur läuft, wenn die Bedingung falsch ist. Ohne else passiert bei falscher Bedingung nichts, und das Programm macht mit der nächsten Zeile weiter.

Was ist der Unterschied zwischen = und == beim Arduino?

Ein einfaches Gleichheitszeichen (=) weist einer Variablen einen Wert zu, ein doppeltes (==) vergleicht zwei Werte. if (x = 1) setzt x auf 1 und macht die Bedingung immer wahr; richtig ist if (x == 1). In Blöcken wird das „=“ im Vergleichsblock im Code zu ==.

Warum leuchtet meine Arduino-LED, ohne dass ich den Taster drücke?

Wahrscheinlich hängt der Tasterpin in der Luft, es fehlt also ein Pull-down- oder Pull-up-Widerstand. Der Pin liest dann Störungen aus der Umgebung und wirkt zufällig HIGH oder LOW. Setze einen 10-kΩ-Widerstand zwischen Pin und GND oder nutze pinMode(pin, INPUT_PULLUP) und schließe den Taster an GND an.

Wie schalte ich eine LED mit einem Taster am Arduino ein und aus?

Speichere den LED-Zustand in einer Variablen (ledState) und den vorherigen Tasterwert in einer anderen (lastButton). Ändert sich der Tasterzustand und ist der neue Zustand gedrückt, kehrst du ihn mit ledState = !ledState um und schreibst ihn mit digitalWrite auf die LED. Eine kurze Wartezeit von etwa 50 ms überspringt das Prellen; genau das macht das Projekt LED mit Taster ein- und ausschalten.

Kann ich die BlueGrays-Blöcke auf meinen Arduino laden?

Nein, die Blöcke werden nicht direkt aufs Board geladen. Sie entsprechen eins zu eins dem echten Code des Projekts und helfen dir, das Programm zu verstehen. Aufs Board kommt immer der C++-Code des Projekts, den du in die Arduino IDE kopierst und hochlädst.

Alle Projekte ansehen
LED mit Taster schalten (Push)
#9Anfänger

LED mit Taster schalten (Push)

Wie bei einer Türklingel: Das Licht leuchtet, solange du drückst, und geht aus, wenn du loslässt. Der Arduino horcht ständig auf den Taster; solange er gedrückt ist, leuchtet die LED, und sobald du de

4.8(113)
229
LED mit Taster ein- und ausschalten
#10Anfänger

LED mit Taster ein- und ausschalten

Einmal drücken und das Licht geht an, noch einmal drücken und es geht aus, genau wie der Lichtschalter in deinem Zimmer. Der Arduino bemerkt jeden Druck und schaltet die LED in den jeweils anderen Zus

4.8(100)
167
Nachtlicht mit LDR
#12Anfänger

Nachtlicht mit LDR

Ein kleines Nachtlicht, das von selbst angeht, wenn es dunkel wird, und am Morgen wieder ausgeht. Ein Lichtsensor misst, wie hell es im Zimmer ist; ist es dunkel genug, schaltet der Arduino die LED ei

4.8(102)
204
HC-SR04 Abstandsmessung (serielle Anzeige)
#27Anfänger

HC-SR04 Abstandsmessung (serielle Anzeige)

Der Sensor HC-SR04 funktioniert wie eine Fledermaus, die im Dunkeln ihren Weg findet: Er sendet einen Ton, den du nicht hörst, lauscht auf das Echo und misst, wie weit der Gegenstand vor ihm entfernt

4.6(46)
71
ESP32 LED-Steuerung mit Drucktaste (Push)
#104Anfänger

ESP32 LED-Steuerung mit Drucktaste (Push)

Die LED leuchtet auf, wenn die Taste gedrückt wird und geht aus, wenn sie losgelassen wird. Zeigt, wie der digitale Eingangspin des ESP32 und der interne Pull-up-Widerstand verwendet werden. Dank des INPUT_PULLUP-Modus ist kein externer Widerstand erforderlich.

4.6(36)
55
ESP32 LED Steuerung mit Taster (Toggle)
#105Anfänger

ESP32 LED Steuerung mit Taster (Toggle)

Jedes Mal, wenn die Taste gedrückt wird, ändert sich der Zustand der LED: ist sie an, schaltet sie aus, ist sie aus, schaltet sie ein. Klassisches Toggle-Muster. Mit der Entprellung wird das mechanische Geräusch des Tasters beseitigt, um ein einmaliges Umschalten mit einem einzigen Druck zu gewährleisten.

4.6(39)
57
Lichtstärke messen mit LDR
#11Anfänger

Lichtstärke messen mit LDR

Willst du sehen, wie hell dein Zimmer ist, und zwar als Zahl? Der LDR, ein kleines lichtempfindliches Bauteil, misst das Umgebungslicht, und der Arduino schreibt den Wert jede halbe Sekunde auf deinen

4.6(81)
138
LED Blinken
#1Anfänger

LED Blinken

Das allererste Hallo der Elektronik: eine einzelne LED an- und ausschalten. Der Arduino schaltet die LED in kurzen Abständen ein und aus, das Licht blinkt also schnell. So siehst du ganz einfach, wie

4.6(188)
1125