Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.
Over de Verkeerslichtmodule
Pinout
Een verkeerslichtmodule bestaat uit vier pins:
GND pin: Verbind deze pin met GND van de Arduino Nano.
R pin: Stuurt het rode licht aan; verbind deze pin met een digitale output van de Arduino Nano.
Y pin: Bedient het gele licht; verbind deze pin met een digitale output van de Arduino Nano.
G pin: Regelt het groene licht; verbind deze pin met een digitale output van de Arduino Nano.
Hoe Het Werkt
Bedradingsschema
Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
Hoe Te Programmeren Voor Verkeerslichtmodule
Stel de pinnen van de Arduino Nano in als digitale uitgang met behulp van de functie pinMode()
Programmeer het rood licht aan te zetten met de functie digitalWrite():
digitalWrite(PIN_RED, HIGH); // zet ROOD aan digitalWrite(PIN_YELLOW, LOW); // digitalWrite(PIN_GREEN, LOW); delay(RED_TIME); // houd rode LED enige tijd aan
Arduino Nano Code
/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-traffic-light*/#define PIN_RED 3 // The Arduino Nano pin connected to R pin of traffic light module#define PIN_YELLOW 4 // The Arduino Nano pin connected to Y pin of traffic light module#define PIN_GREEN 5 // The Arduino Nano 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 millisecondvoidsetup() {pinMode(PIN_RED, OUTPUT);pinMode(PIN_YELLOW, OUTPUT);pinMode(PIN_GREEN, OUTPUT);}// The loop function repeats indefinitelyvoidloop() {// red light ondigitalWrite(PIN_RED, HIGH); // turn ondigitalWrite(PIN_YELLOW, LOW); // turn offdigitalWrite(PIN_GREEN, LOW); // turn offdelay(RED_TIME); // keep red light on during a period of time// yellow light ondigitalWrite(PIN_RED, LOW); // turn offdigitalWrite(PIN_YELLOW, HIGH); // turn ondigitalWrite(PIN_GREEN, LOW); // turn offdelay(YELLOW_TIME); // keep yellow light on during a period of time// green light ondigitalWrite(PIN_RED, LOW); // turn offdigitalWrite(PIN_YELLOW, LOW); // turn offdigitalWrite(PIN_GREEN, HIGH); // turn ondelay(GREEN_TIME); // keep green light on during a period of time}
Snelle Stappen
Kopieer bovenstaande code en open deze in de Arduino IDE
Klik op de Upload knop in de Arduino IDE om de code naar de Arduino Nano te uploaden
Controleer de werking van de verkeerslichtmodule
Het is belangrijk te weten dat de precieze werking van een verkeerslicht kan verschillen afhankelijk van het specifieke ontwerp en de gebruikte technologie in verschillende regio’s en kruispunten. De hierboven beschreven principes geven een algemeen begrip van hoe verkeerslichten verkeer reguleren en de veiligheid op de weg verbeteren.
De bovenstaande code toont de controle van de individuele lichten. Laten we de code nu optimaliseren voor betere prestaties.
Arduino Nano Code Optimalisatie
Laten we de code verbeteren met een functie voor lichtbesturing.
/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-traffic-light*/#define PIN_RED 3 // The Arduino Nano pin connected to R pin of traffic light module#define PIN_YELLOW 4 // The Arduino Nano pin connected to Y pin of traffic light module#define PIN_GREEN 5 // The Arduino Nano 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 arrayconstint pins[] = { PIN_RED, PIN_YELLOW, PIN_GREEN };constint times[] = { RED_TIME, YELLOW_TIME, GREEN_TIME };voidsetup() {pinMode(PIN_RED, OUTPUT);pinMode(PIN_YELLOW, OUTPUT);pinMode(PIN_GREEN, OUTPUT);}// The loop function repeats indefinitelyvoidloop() {// 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 onelsedigitalWrite(pins[i], LOW); // turn off }}
Laten we de code verbeteren door een for-lus te gebruiken.
/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-traffic-light*/#define PIN_RED 3 // The Arduino Nano pin connected to R pin of traffic light module#define PIN_YELLOW 4 // The Arduino Nano pin connected to Y pin of traffic light module#define PIN_GREEN 5 // The Arduino Nano 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 arrayconstint pins[] = {PIN_RED, PIN_YELLOW, PIN_GREEN};constint times[] = {RED_TIME, YELLOW_TIME, GREEN_TIME};voidsetup() {pinMode(PIN_RED, OUTPUT);pinMode(PIN_YELLOW, OUTPUT);pinMode(PIN_GREEN, OUTPUT);}// The loop function repeats indefinitelyvoidloop() {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 onelsedigitalWrite(pins[i], LOW); // turn off }}
Laten we de code verbeteren door in plaats van delay() de functie millis() te gebruiken.
/* * Deze Arduino Nano code is ontwikkeld door newbiely.nl * Deze Arduino Nano code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-nano/arduino-nano-traffic-light*/#define PIN_RED 3 // The Arduino Nano pin connected to R pin of traffic light module#define PIN_YELLOW 4 // The Arduino Nano pin connected to Y pin of traffic light module#define PIN_GREEN 5 // The Arduino Nano 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 arrayconstint pins[] = { PIN_RED, PIN_YELLOW, PIN_GREEN };constint times[] = { RED_TIME, YELLOW_TIME, GREEN_TIME };unsignedlong last_time = 0;int light = RED; // start with RED lightvoidsetup() {pinMode(PIN_RED, OUTPUT);pinMode(PIN_YELLOW, OUTPUT);pinMode(PIN_GREEN, OUTPUT); trafic_light_on(light); last_time = millis();}// The loop function repeats indefinitelyvoidloop() {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 onelsedigitalWrite(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.
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!