Arduino UNO R4 - Verkeerslicht

In deze handleiding leren we hoe we een verkeerslicht module kunnen besturen met Arduino UNO R4. We behandelen:

Arduino UNO R4 verkeerslicht

Over de Verkeerslicht Module

Pinout

Een verkeerslicht module heeft 4 pins:

  • GND pin: Dit is de aarde pin. Verbind deze met de GND op de Arduino UNO R4.
  • R pin: Deze pin bestuurt het rode licht. Verbind deze met een digitale uitgang op de Arduino UNO R4.
  • Y pin: Deze pin bestuurt het gele licht. Verbind deze met een digitale uitgang op de Arduino UNO R4.
  • G pin: Deze pin bestuurt het groene licht. Verbind deze met een digitale uitgang op de Arduino UNO R4.
Verkeerslicht Pinout

Hoe Het Werkt

Bedradingsschema

Arduino UNO R4 verkeerslicht Bedradingsschema

This image is created using Fritzing. Click to enlarge image

Zie De beste manier om Arduino Uno R4 en andere componenten van stroom te voorzien.

Hoe Te Programmeren Voor Verkeerslicht Module

  • Stel de pins van een Arduino UNO R4 in als digitale uitgangen door de pinMode() functie te gebruiken.
pinMode(PIN_RED, OUTPUT); pinMode(PIN_YELLOW, OUTPUT); pinMode(PIN_GREEN, OUTPUT);
  • Programmeer om het rode licht te activeren met de digitalWrite() functie:
digital-Write(PIN_RED, HIGH); // Set the RED LED to on digitalWrite(PIN_YELLOW, LOW); // Set the YELLOW LED to off digitalWrite(PIN_GREEN, LOW); // Set the GREEN LED to off delay(RED_TIME); // Maintain RED LED on state for the duration defined by RED_TIME

Arduino UNO R4 Code

/* * Deze Arduino UNO R4 code is ontwikkeld door newbiely.nl * Deze Arduino UNO R4 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-uno-r4/arduino-uno-r4-traffic-light */ #define PIN_RED 2 // The Arduino UNO R4 pin connected to R pin of traffic light module #define PIN_YELLOW 3 // The Arduino UNO R4 pin connected to Y pin of traffic light module #define PIN_GREEN 4 // The Arduino UNO R4 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 }

Snelle Stappen

Volg deze instructies stap voor stap:

  • Als dit uw eerste keer is met de Arduino Uno R4 WiFi/Minima, raadpleeg dan de tutorial over het instellen van de omgeving voor Arduino Uno R4 WiFi/Minima in de Arduino IDE.
  • Verbind de verkeerslicht module met de Arduino Uno R4 volgens het meegeleverde schema.
  • Verbind het Arduino Uno R4 board met uw computer via een USB kabel.
  • Start de Arduino IDE op uw computer.
  • Selecteer het juiste Arduino Uno R4 board (bijv. Arduino Uno R4 WiFi) en COM poort.
  • Kopieer de code en open deze in Arduino IDE.
  • Klik op de Upload knop in Arduino IDE om de code naar Arduino UNO R4 te uploaden.
  • Controleer de verkeerslicht module.

Verkeerslichten werken anders afhankelijk van hun ontwerp dat in elk gebied wordt gebruikt. De hier gegeven informatie biedt een basisidee van hoe verkeerslichten helpen bij het regelen van verkeer.

De hierboven getoonde code laat u elk licht afzonderlijk besturen. Nu gaan we de code verbeteren om deze beter te laten werken.

Arduino UNO R4 Code Optimalisatie

  • Laten we de code verbeteren door een functie toe te voegen om het licht te besturen.
/* * Deze Arduino UNO R4 code is ontwikkeld door newbiely.nl * Deze Arduino UNO R4 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-uno-r4/arduino-uno-r4-traffic-light */ #define PIN_RED 2 // The Arduino UNO R4 pin connected to R pin of traffic light module #define PIN_YELLOW 3 // The Arduino UNO R4 pin connected to Y pin of traffic light module #define PIN_GREEN 4 // The Arduino UNO R4 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 } }
  • We kunnen de code verbeteren door een for loop te gebruiken.
/* * Deze Arduino UNO R4 code is ontwikkeld door newbiely.nl * Deze Arduino UNO R4 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-uno-r4/arduino-uno-r4-traffic-light */ #define PIN_RED 2 // The Arduino UNO R4 pin connected to R pin of traffic light module #define PIN_YELLOW 3 // The Arduino UNO R4 pin connected to Y pin of traffic light module #define PIN_GREEN 4 // The Arduino UNO R4 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 } }
  • Laten we de code verbeteren door de millis() functie te gebruiken in plaats van delay().
/* * Deze Arduino UNO R4 code is ontwikkeld door newbiely.nl * Deze Arduino UNO R4 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-uno-r4/arduino-uno-r4-traffic-light */ #define PIN_RED 2 // The Arduino UNO R4 pin connected to R pin of traffic light module #define PIN_YELLOW 3 // The Arduino UNO R4 pin connected to Y pin of traffic light module #define PIN_GREEN 4 // The Arduino UNO R4 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

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Opmerkingen

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!