Arduino Mega - Ampel

In diesem Leitfaden lernen Sie, wie Sie ein Ampelmodul mit einem Arduino Mega steuern. Wir behandeln:

Arduino Mega Ampel

Benötigte Hardware

1×Arduino Mega
1×USB 2.0 Kabel Typ A/B
1×Ampelmodul
1×Jumper Kabel
1×(Empfohlen) Screw Terminal Block Shield for Arduino Uno/Mega
1×(Empfohlen) Breadboard Shield for Arduino Mega
1×(Empfohlen) Enclosure for Arduino Mega

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
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.

Über das Ampelmodul

Pinbelegung

Ein Ampelmodul hat vier Pins.

  • Ground-Pin: Dies ist der Masse-Pin. Verbinden Sie ihn mit der Masse des Arduino Mega.
  • Rot (R) Pin: Dieser Pin schaltet das rote Licht ein oder aus. Verbinden Sie ihn mit einem digitalen Ausgang am Arduino Mega.
  • Gelb (Y) Pin: Dieser Pin schaltet das gelbe Licht ein oder aus. Verbinden Sie ihn mit einem digitalen Ausgang am Arduino Mega.
  • Grün (G) Pin: Dieser Pin schaltet das grüne Licht ein oder aus. Verbinden Sie ihn mit einem digitalen Ausgang am Arduino Mega.
Ampel Pinbelegung

Funktionsweise

Schaltplan

Arduino Mega Ampel Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Programmierung für das Ampelmodul

  • Setzen Sie die Pins am Arduino Mega mit der pinMode()-Funktion als digitale Ausgänge.
pinMode(PIN_RED, OUTPUT); pinMode(PIN_YELLOW, OUTPUT); pinMode(PIN_GREEN, OUTPUT);
  • Programm zum Einschalten des roten Lichts mit der digitalWrite()-Funktion.
digital-Write(PIN_RED, HIGH); // Turn the RED LED on digitalWrite(PIN_YELLOW, LOW); // Turn the YELLOW LED off digitalWrite(PIN_GREEN, LOW); // Turn the GREEN LED off delay(RED_TIME); // Keep the RED LED on for RED_TIME milliseconds

Arduino Mega Code

/* * Dieser Arduino Mega Code wurde von newbiely.de entwickelt * Dieser Arduino Mega Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-mega/arduino-mega-traffic-light */ #define PIN_RED 2 // The Arduino Mega pin connected to R pin of traffic light module #define PIN_YELLOW 3 // The Arduino Mega pin connected to Y pin of traffic light module #define PIN_GREEN 4 // The Arduino Mega pin connected to G pin of traffic light module #define RED_TIME 4000 // RED time in millisecond #define YELLOW_TIME 4000 // YELLOW time in millisecond #define GREEN_TIME 4000 // GREEN time in millisecond void setup() { pinMode(PIN_RED, OUTPUT); pinMode(PIN_YELLOW, OUTPUT); pinMode(PIN_GREEN, OUTPUT); } // the loop function runs over and over again forever void loop() { // red light on digitalWrite(PIN_RED, HIGH); // turn on digitalWrite(PIN_YELLOW, LOW); // turn off digitalWrite(PIN_GREEN, LOW); // turn off delay(RED_TIME); // keep red light on during a period of time // yellow light on digitalWrite(PIN_RED, LOW); // turn off digitalWrite(PIN_YELLOW, HIGH); // turn on digitalWrite(PIN_GREEN, LOW); // turn off delay(YELLOW_TIME); // keep yellow light on during a period of time // green light on digitalWrite(PIN_RED, LOW); // turn off digitalWrite(PIN_YELLOW, LOW); // turn off digitalWrite(PIN_GREEN, HIGH); // turn on delay(GREEN_TIME); // keep green light on during a period of time }

Schnelle Schritte

Befolgen Sie diese Schritte nacheinander.

  • Verbinden Sie das Ampelmodul mit dem Arduino Mega entsprechend dem Schaltplan.
  • Verbinden Sie das Arduino Mega Board mit Ihrem Computer über ein USB-Kabel.
  • Öffnen Sie die Arduino IDE auf Ihrem Computer.
  • Wählen Sie das richtige Board (Arduino Mega) und den korrekten Port.
  • Kopieren Sie den Code und öffnen Sie ihn in der Arduino IDE.
  • Klicken Sie auf die Upload-Schaltfläche in der Arduino IDE, um den Code an den Arduino Mega zu senden.
  • Überprüfen Sie, ob das Ampelmodul funktioniert.

Ampeln funktionieren je nach Design an verschiedenen Orten unterschiedlich. Diese einfache Erklärung gibt eine grundlegende Vorstellung davon, wie Ampeln bei der Verkehrssteuerung helfen.

Der obige Code ermöglicht es Ihnen, jedes Licht separat zu steuern. Jetzt werden wir den Code verbessern, um ihn besser funktionieren zu lassen.

Arduino Mega Code-Optimierung

  • Lassen Sie uns den Code verbessern, indem wir eine Funktion zum Ein- und Ausschalten der Lichter hinzufügen.
/* * Dieser Arduino Mega Code wurde von newbiely.de entwickelt * Dieser Arduino Mega Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-mega/arduino-mega-traffic-light */ #define PIN_RED 2 // The Arduino Mega pin connected to R pin of traffic light module #define PIN_YELLOW 3 // The Arduino Mega pin connected to Y pin of traffic light module #define PIN_GREEN 4 // The Arduino Mega pin connected to G pin of traffic light module #define RED_TIME 2000 // RED time in millisecond #define YELLOW_TIME 1000 // YELLOW time in millisecond #define GREEN_TIME 2000 // GREEN time in millisecond #define RED 0 // Index in array #define YELLOW 1 // Index in array #define GREEN 2 // Index in array 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); } // the loop function runs over and over again forever void loop() { // red light on trafic_light_on(RED); delay(times[RED]); // keep red light on during a period of time // yellow light on trafic_light_on(YELLOW); delay(times[YELLOW]); // keep yellow light on during a period of time // green light on trafic_light_on(GREEN); delay(times[GREEN]); // keep green light on during a period of time } void trafic_light_on(int light) { for (int i = RED; i <= GREEN; i++) { if (i == light) digitalWrite(pins[i], HIGH); // turn on else digitalWrite(pins[i], LOW); // turn off } }
  • Wir können den Code einfacher gestalten, indem wir eine for-Schleife verwenden.
/* * Dieser Arduino Mega Code wurde von newbiely.de entwickelt * Dieser Arduino Mega Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-mega/arduino-mega-traffic-light */ #define PIN_RED 2 // The Arduino Mega pin connected to R pin of traffic light module #define PIN_YELLOW 3 // The Arduino Mega pin connected to Y pin of traffic light module #define PIN_GREEN 4 // The Arduino Mega pin connected to G pin of traffic light module #define RED_TIME 2000 // RED time in millisecond #define YELLOW_TIME 1000 // YELLOW time in millisecond #define GREEN_TIME 2000 // GREEN time in millisecond #define RED 0 // Index in array #define YELLOW 1 // Index in array #define GREEN 2 // Index in array 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); } // the loop function runs over and over again forever void loop() { for (int light = RED; light <= GREEN; light ++) { trafic_light_on(light); delay(times[light]); // keep light on during a period of time } } void trafic_light_on(int light) { for (int i = RED; i <= GREEN; i ++) { if (i == light) digitalWrite(pins[i], HIGH); // turn on else digitalWrite(pins[i], LOW); // turn off } }
  • Lassen Sie uns den Code verbessern, indem wir millis() anstatt delay() verwenden.
/* * Dieser Arduino Mega Code wurde von newbiely.de entwickelt * Dieser Arduino Mega Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-mega/arduino-mega-traffic-light */ #define PIN_RED 2 // The Arduino Mega pin connected to R pin of traffic light module #define PIN_YELLOW 3 // The Arduino Mega pin connected to Y pin of traffic light module #define PIN_GREEN 4 // The Arduino Mega pin connected to G pin of traffic light module #define RED_TIME 2000 // RED time in millisecond #define YELLOW_TIME 1000 // YELLOW time in millisecond #define GREEN_TIME 2000 // GREEN time in millisecond #define RED 0 // Index in array #define YELLOW 1 // Index in array #define GREEN 2 // Index in array 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; // start with RED light void setup() { pinMode(PIN_RED, OUTPUT); pinMode(PIN_YELLOW, OUTPUT); pinMode(PIN_GREEN, OUTPUT); trafic_light_on(light); last_time = millis(); } // the loop function runs over and over again forever void loop() { if ((millis() - last_time) > times[light]) { light++; if (light >= 3) light = RED; // new circle trafic_light_on(light); last_time = millis(); } // TO DO: your other code } void trafic_light_on(int light) { for (int i = RED; i <= GREEN; i++) { if (i == light) digitalWrite(pins[i], HIGH); // turn on else digitalWrite(pins[i], LOW); // turn off } }

Video Tutorial

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.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!