Das folgende Beispiel simuliert eine Verkehrsampel mit drei LEDs.
Zum Anschluss der LEDs an ein Arduino Board wird folgendes benötigt:
Vom Arduino GND Pin wird ein schwarzes Jumperkabel zur Masse Reihe (blau) gesteckt. Die LEDs werden wie in der Abbildung auf das Steckbrett gesteckt.
Für die rote LED wird ein Jumperkabel vom Arduino Pin 11 zur Anode der LED (längerer Draht) gesteckt. Ein 220 Ohm Widerstand wird zwischen der Kathode der LED (abgeflachte Seite des Gehäuses) und der GND Reihe gesteckt.
Für die gelbe LED wird ein Jumperkabel vom Arduino Pin 10 zur Anode der LED (längerer Draht) gesteckt. Ein 220 Ohm Widerstand wird zwischen der Kathode der LED (abgeflachte Seite des Gehäuses) und der GND Reihe gesteckt.
Für die grüne LED wird ein Jumperkabel vom Arduino Pin 9 zur Anode der LED (längerer Draht) gesteckt. Ein 220 Ohm Widerstand wird zwischen der Kathode der LED (abgeflachte Seite des Gehäuses) und der GND Reihe gesteckt.
Steckbrett Ansicht:
Schaltplan:
Für die Pins 11, 10 und 9, an denen die LEDs angeschlossen werden, wird jeweils eine Konstante global erzeugt und mit den Werten 11, 10 und 9 (der Pin an dem die LED angeschlossen wird) initialisiert. Falls wir die LED später an einem anderen Pin anschliessen wollen, brauchen wir nur den Wert der Konstanten ändern und nicht überall im Programm
const int redLedPin = 11;
const int yellowLedPin = 10;
const int greenLedPin = 9;
In der Setup Funktion des Arduino Programms wird der Pin für die LED als Ausgang mit dem pinMode() Befehl gesetzt.
pinMode(redLedPin, OUTPUT);
pinMode(yellowLedPin, OUTPUT);
pinMode(greenLedPin, OUTPUT);
Für die Rot Phase In der Loop Funktion wird zunächst die rote LED zunächst mit digitalWrite() auf HIGH Pegel gesetzt. Anschliessend wird mit der delay() Funktion zwei Sekunden (2000ms) gewartet.
digitalWrite(redLedPin, HIGH);
delay(2000);
Für die rot-gelbe Phase wird dann die gelbe LED auf HIGH Pegel gesetzt und 1 Sekunde gewartet.
digitalWrite(yellowLedPin, LOW);
delay(1000);
Die Grün-Phase dauert wiederum 2 Sekunden. Rote glebe LED werden ausgeschaltet und die grüne LED an
digitalWrite(redLedPin, LOW); // Schalte die rote LED aus.
digitalWrite(yellowLedPin, LOW); // Schalte die gelbe LED aus
digitalWrite(greenLedPin, HIGH); // Schalte die gruene LED an.
delay(2000); // Warte 1000 Millisekunden.
Für die gelb-Phase wird dann die gelbe LED auf HIGH Pegel gesetzt und 1 Sekunde gewartet.
digitalWrite(yellowLedPin, HIGH); // Schalte die gelbe LED an
digitalWrite(greenLedPin, LOW); // Schalte die gruene LED aus.
delay(1000);
Als letztes wird die gelbe LED ausgeschaltet und die Schleife beginnt von Neuem mit der Rot-Phase
digitalWrite(yellowLedPin, LOW); // Schalte die gelbe LED aus
Die Loop Funktion wird ständig aufgerufen, solange der Arduiuno läuft.
Das Programm lässt die LED im 1 Sekunden Rhythmus blinken.
So sieht das komplette Programm aus:
int redLedPin=11; //Rote LED an Pin 11
int yellowLedPin=10; //Gelbe LED an Pin 10
int greenLedPin=9; //Grüne LED an Pin 9
void setup() //Wir starten mit dem Setup
{
pinMode(redLedPin, OUTPUT); // Pin 5 ist ein Ausgang.
pinMode(yellowLedPin, OUTPUT); // Pin 6 ist ein Ausgang.
pinMode(greenLedPin,OUTPUT); // Pin 7 ist ein Ausgang.
}
void loop() // Das Hauptprogramm beginnt
{
/* Rotphase: rote LED an, gelbe und gruene LED aus */
digitalWrite(redLedPin, HIGH); // Schalte die rote LED an.
delay(2000); // Warte 1000 Millisekunden.
/* Gelbphase: Rote und Gelbe LED an */
digitalWrite(yellowLedPin, HIGH); // Schalte die gelbe LED an.
delay(1000); // Warte 1000 Millisekunden.
/* Gruenphase: Grüne LED an */
digitalWrite(redLedPin, LOW); // Schalte die rote LED aus.
digitalWrite(yellowLedPin, LOW); // Schalte die gelbe LED aus.
digitalWrite(greenLedPin, HIGH); // Schalte die gruene LED an.
delay(2000); // Warte 1000 Millisekunden.
/* Gelbpase: Grüne LED aus, Gelbe LED an */
digitalWrite(greenLedPin, LOW); // Schalte die grüne LED aus.
digitalWrite(yellowLedPin, HIGH); // Schalte die gelbe LED an.
delay(1000); // Warte 1000 Millisekunden.
digitalWrite(yellowLedPin, LOW); // Schalte die LED an Pin6 aus.
}
// Hier am Ende springt das Programm an den Start des Loop-Teils.
Es gibt eine Simulation für TinkerCAD Circuits. Hier kann die LED Ampel simuliert werden, inklusive des Arduino Programm in Blocks bzw C++.
Hier das Programm in Blocks:
Und so sieht die Simulation der Schaltung aus.
Der Link zur TinkerCAD Circuits Simulation. Ein Klick auf Start Simulation startet die Simulation.
Tinkercad Circuits - Arduino LED Ampel