Arduino Nano ESP32 - Ampel

In diesem Tutorial werden wir untersuchen, wie man den Arduino Nano ESP32 verwendet, um ein Ampelmodul zu steuern. Im Detail werden wir lernen:

Erforderliche Hardware

1×Arduino Nano ESP32
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Ampel-Modul
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Breakout-Erweiterungsboard für Arduino Nano
1×(Empfohlen) Stromverteiler für Arduino Nano ESP32

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 enthält 4 Pins:

  • GND-Pin: Der Masse-Pin, verbinden Sie diesen Pin mit dem GND des Arduino Nano ESP32.
  • R-Pin: Der Pin zur Steuerung des roten Lichts, verbinden Sie diesen Pin mit einem digitalen Ausgang des Arduino Nano ESP32.
  • Y-Pin: Der Pin zur Steuerung des gelben Lichts, verbinden Sie diesen Pin mit einem digitalen Ausgang des Arduino Nano ESP32.
  • G-Pin: Der Pin zur Steuerung des grünen Lichts, verbinden Sie diesen Pin mit einem digitalen Ausgang des Arduino Nano ESP32.
Ampel-Pinbelegung

Wie es funktioniert

Verdrahtungsdiagramm

Ampel-Schaltplan für Arduino Nano ESP32

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

Wie man das Ampelmodul programmiert

  • Konfigurieren Sie die Pins eines ESP32 in den digitalen Ausgabemodus, 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); // LED ROT einschalten digitalWrite(PIN_YELLOW, LOW); // digitalWrite(PIN_GREEN, LOW); delay(RED_TIME); // Rote LED für eine bestimmte Zeit eingeschaltet halten

Arduino Nano ESP32-Quellcode

/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 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-nano-esp32/arduino-nano-esp32-traffic-light */ #define PIN_RED D3 // The Arduino Nano ESP32 pin connected to R pin of traffic light module #define PIN_YELLOW D4 // The Arduino Nano ESP32 pin connected to Y pin of traffic light module #define PIN_GREEN D5 // The Arduino Nano ESP32 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 repeats indefinitely 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

Um mit dem Arduino Nano ESP32 zu beginnen, folgen Sie diesen Schritten:

  • Wenn Sie neu bei Arduino Nano ESP32 sind, lesen Sie das Tutorial über wie man die Umgebung für Arduino Nano ESP32 in der Arduino IDE einrichtet.
  • Verdrahten Sie die Bauteile gemäß dem bereitgestellten Diagramm.
  • Verbinden Sie das Arduino Nano ESP32-Board mit Ihrem Computer über ein USB-Kabel.
  • Starten Sie die Arduino IDE auf Ihrem Computer.
  • Wählen Sie das Arduino Nano ESP32-Board und den entsprechenden COM-Port aus.
  • Kopieren Sie den obigen Code und öffnen Sie ihn in der Arduino IDE.
  • Klicken Sie in der Arduino IDE auf Hochladen, um den Code auf das Arduino Nano ESP32 zu übertragen.
  • Schauen Sie sich das Ampelmodul an.

Es ist wichtig zu beachten, dass die genauen Funktionsweisen einer Ampel je nach dem jeweiligen Design und der in verschiedenen Regionen und an Kreuzungen verwendeten Technologien variieren können. Die oben beschriebenen Grundsätze geben ein allgemeines Verständnis davon, wie Ampeln funktionieren, um den Verkehr zu steuern und die Verkehrssicherheit auf den Straßen zu erhöhen.

Der obige Code demonstriert die individuelle Lichtsteuerung. Jetzt optimieren wir den Code für eine bessere Optimierung.

Arduino Nano ESP32 Code-Optimierung

  • Lass uns den Code verbessern, indem wir eine Funktion zur Lichtsteuerung implementieren.
/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 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-nano-esp32/arduino-nano-esp32-traffic-light */ #define PIN_RED D3 // The Arduino Nano ESP32 pin connected to R pin of traffic light module #define PIN_YELLOW D4 // The Arduino Nano ESP32 pin connected to Y pin of traffic light module #define PIN_GREEN D5 // The Arduino Nano ESP32 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 repeats indefinitely 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 } }
  • Lass uns den Code verbessern, indem wir eine For-Schleife verwenden.
/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 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-nano-esp32/arduino-nano-esp32-traffic-light */ #define PIN_RED D3 // The Arduino Nano ESP32 pin connected to R pin of traffic light module #define PIN_YELLOW D4 // The Arduino Nano ESP32 pin connected to Y pin of traffic light module #define PIN_GREEN D5 // The Arduino Nano ESP32 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 repeats indefinitely 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 } }
  • Lass uns den Code verbessern, indem wir die millis()-Funktion statt delay() verwenden.
/* * Dieser Arduino Nano ESP32 Code wurde von newbiely.de entwickelt * Dieser Arduino Nano ESP32 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-nano-esp32/arduino-nano-esp32-traffic-light */ #define PIN_RED D3 // The Arduino Nano ESP32 pin connected to R pin of traffic light module #define PIN_YELLOW D4 // The Arduino Nano ESP32 pin connected to Y pin of traffic light module #define PIN_GREEN D5 // The Arduino Nano ESP32 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 repeats indefinitely 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!