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 heeft 4 pinnen:
GND pin: De aarde-pin, verbind deze met GND van de Arduino.
R pin: Pin om het rode licht te besturen, verbind deze met een digitale uitgang van de Arduino.
Y pin: Pin om het gele licht te besturen, verbind deze met een digitale uitgang van de Arduino.
G pin: Pin om het groene licht te besturen, verbind deze met een digitale uitgang van de Arduino.
Hoe het werkt
Aansluitschema
Deze afbeelding is gemaakt met Fritzing. Klik om de afbeelding te vergroten.
Hoe te programmeren voor Verkeerslichtmodule
Stel de Arduino-pinnen in op digitale uitgang met behulp van de pinMode() functie:
Programmeer het rode licht om aan te gaan met behulp van de digitalWrite() functie:
digitalWrite(PIN_RED, HIGH); // zet ROOD aan digitalWrite(PIN_YELLOW, LOW); // digitalWrite(PIN_GREEN, LOW); delay(RED_TIME); // houd rode led aan voor een bepaalde tijd
Arduino Code
/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-traffic-light*/#define PIN_RED 2 // The Arduino pin connected to R pin of traffic light module#define PIN_YELLOW 3 // The Arduino pin connected to Y pin of traffic light module#define PIN_GREEN 4 // The Arduino 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 runs over and over again forevervoidloop() {// 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 de bovenstaande code en open deze met de Arduino IDE
Klik op de Upload knop in de Arduino IDE om de code naar de Arduino te uploaden
Bekijk de verkeerslichtmodule
image source: diyables.io
Het is belangrijk te weten dat de exacte werking van een verkeerslicht kan verschillen afhankelijk van het ontwerp en de gebruikte technologie in verschillende regio's en kruispunten. De hierboven beschreven principes geven een algemeen begrip van hoe verkeerslichten het verkeer regelen en de veiligheid op de weg verbeteren.
De bovenstaande code laat zien hoe individuele lichten worden aangestuurd. Laten we de code nu verbeteren voor een betere optimalisatie.
Arduino Code Optimalisatie
Laten we de code verbeteren door een functie te maken voor het aansturen van de lichten.
/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-traffic-light*/#define PIN_RED 2 // The Arduino pin connected to R pin of traffic light module#define PIN_YELLOW 3 // The Arduino pin connected to Y pin of traffic light module#define PIN_GREEN 4 // The Arduino 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 runs over and over again forevervoidloop() {// 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 code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-traffic-light*/#define PIN_RED 2 // The Arduino pin connected to R pin of traffic light module#define PIN_YELLOW 3 // The Arduino pin connected to Y pin of traffic light module#define PIN_GREEN 4 // The Arduino 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 runs over and over again forevervoidloop() {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 de millis() functie te gebruiken in plaats van delay().
/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-traffic-light*/#define PIN_RED 2 // The Arduino pin connected to R pin of traffic light module#define PIN_YELLOW 3 // The Arduino pin connected to Y pin of traffic light module#define PIN_GREEN 4 // The Arduino 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 runs over and over again forevervoidloop() {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!