Arduino - Ampel
In diesem Tutorial lernen wir, wie man Arduino verwendet, um das Ampelmodul zu steuern. Im Detail werden wir lernen:
Wie man das Ampelmodul mit Arduino verbindet
Wie man Arduino programmiert, um das RGB-Ampelmodul zu steuern
Wie man Arduino programmiert, um das RGB-Ampelmodul ohne die delay()-Funktion zu steuern
Oder Sie können die folgenden Kits kaufen:
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.
Ein Ampelmodul umfasst 4 Pins:
GND-Pin: Der Massepin; verbinden Sie diesen Pin mit dem GND des Arduino.
R-Pin: Der Pin zur Steuerung des roten Lichts, verbinden Sie diesen Pin mit einem digitalen Ausgang des Arduino.
Y-Pin: Der Pin zur Steuerung des gelben Lichts, verbinden Sie diesen Pin mit einem digitalen Ausgang des Arduino.
G-Pin: Der Pin zur Steuerung des grünen Lichts, verbinden Sie diesen Pin mit einem digitalen Ausgang des Arduino.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Konfigurieren Sie die Pins eines Arduinos in den digitalen Ausgangsmodus, indem Sie die
pinMode()-Funktion verwenden.
pinMode(PIN_RED, OUTPUT);
pinMode(PIN_YELLOW, OUTPUT);
pinMode(PIN_GREEN, OUTPUT);
Programm zum Einschalten des roten Lichts mithilfe der Funktion
digitalWrite():
digitalWrite(PIN_RED, HIGH);
digitalWrite(PIN_YELLOW, LOW);
digitalWrite(PIN_GREEN, LOW);
delay(RED_TIME);
#define PIN_RED 2
#define PIN_YELLOW 3
#define PIN_GREEN 4
#define RED_TIME 4000
#define YELLOW_TIME 4000
#define GREEN_TIME 4000
void setup() {
pinMode(PIN_RED, OUTPUT);
pinMode(PIN_YELLOW, OUTPUT);
pinMode(PIN_GREEN, OUTPUT);
}
void loop() {
digitalWrite(PIN_RED, HIGH);
digitalWrite(PIN_YELLOW, LOW);
digitalWrite(PIN_GREEN, LOW);
delay(RED_TIME);
digitalWrite(PIN_RED, LOW);
digitalWrite(PIN_YELLOW, HIGH);
digitalWrite(PIN_GREEN, LOW);
delay(YELLOW_TIME);
digitalWrite(PIN_RED, LOW);
digitalWrite(PIN_YELLOW, LOW);
digitalWrite(PIN_GREEN, HIGH);
delay(GREEN_TIME);
}
Kopieren Sie den obigen Code und öffnen Sie ihn mit der Arduino IDE
Klicken Sie in der Arduino IDE auf die Hochladen-Schaltfläche, um den Code auf den Arduino hochzuladen
Schauen Sie sich das Ampelmodul an
image source: diyables.io
Es ist wichtig zu beachten, dass die genaue Funktionsweise einer Ampel je nach spezifischem Design und der in verschiedenen Regionen und an Kreuzungen verwendeten Technologie variieren kann. Die oben beschriebenen Grundsätze vermitteln ein allgemeines Verständnis dafür, wie Ampeln den Verkehr steuern und die Sicherheit im Straßenverkehr erhöhen.
Der obige Code demonstriert die individuelle Lichtsteuerung. Jetzt optimieren wir den Code für eine bessere Optimierung.
#define PIN_RED 2
#define PIN_YELLOW 3
#define PIN_GREEN 4
#define RED_TIME 2000
#define YELLOW_TIME 1000
#define GREEN_TIME 2000
#define RED 0
#define YELLOW 1
#define GREEN 2
const int pins[] = { PIN_RED, PIN_YELLOW, PIN_GREEN };
const int times[] = { RED_TIME, YELLOW_TIME, GREEN_TIME };
void setup() {
pinMode(PIN_RED, OUTPUT);
pinMode(PIN_YELLOW, OUTPUT);
pinMode(PIN_GREEN, OUTPUT);
}
void loop() {
trafic_light_on(RED);
delay(times[RED]);
trafic_light_on(YELLOW);
delay(times[YELLOW]);
trafic_light_on(GREEN);
delay(times[GREEN]);
}
void trafic_light_on(int light) {
for (int i = RED; i <= GREEN; i++) {
if (i == light)
digitalWrite(pins[i], HIGH);
else
digitalWrite(pins[i], LOW);
}
}
#define PIN_RED 2
#define PIN_YELLOW 3
#define PIN_GREEN 4
#define RED_TIME 2000
#define YELLOW_TIME 1000
#define GREEN_TIME 2000
#define RED 0
#define YELLOW 1
#define GREEN 2
const int pins[] = {PIN_RED, PIN_YELLOW, PIN_GREEN};
const int times[] = {RED_TIME, YELLOW_TIME, GREEN_TIME};
void setup() {
pinMode(PIN_RED, OUTPUT);
pinMode(PIN_YELLOW, OUTPUT);
pinMode(PIN_GREEN, OUTPUT);
}
void loop() {
for (int light = RED; light <= GREEN; light ++) {
trafic_light_on(light);
delay(times[light]);
}
}
void trafic_light_on(int light) {
for (int i = RED; i <= GREEN; i ++) {
if (i == light)
digitalWrite(pins[i], HIGH);
else
digitalWrite(pins[i], LOW);
}
}
#define PIN_RED 2
#define PIN_YELLOW 3
#define PIN_GREEN 4
#define RED_TIME 2000
#define YELLOW_TIME 1000
#define GREEN_TIME 2000
#define RED 0
#define YELLOW 1
#define GREEN 2
const int pins[] = { PIN_RED, PIN_YELLOW, PIN_GREEN };
const int times[] = { RED_TIME, YELLOW_TIME, GREEN_TIME };
unsigned long last_time = 0;
int light = RED;
void setup() {
pinMode(PIN_RED, OUTPUT);
pinMode(PIN_YELLOW, OUTPUT);
pinMode(PIN_GREEN, OUTPUT);
trafic_light_on(light);
last_time = millis();
}
void loop() {
if ((millis() - last_time) > times[light]) {
light++;
if (light >= 3)
light = RED;
trafic_light_on(light);
last_time = millis();
}
}
void trafic_light_on(int light) {
for (int i = RED; i <= GREEN; i++) {
if (i == light)
digitalWrite(pins[i], HIGH);
else
digitalWrite(pins[i], LOW);
}
}
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.