Arduino Nano - Verkeerslicht
Deze tutorial legt uit hoe u een Arduino Nano gebruikt om een verkeerslichtmodule aan te sturen. We behandelen specifiek de volgende aspecten:
Het tot stand brengen van de verbinding tussen de verkeerslichtmodule en de Arduino Nano
Het programmeren van de Arduino Nano om de RGB verkeerslichtmodule te beheren
Het implementeren van Arduino Nano programmering om het RGB verkeerslicht te regelen zonder gebruik te maken van de delay() functie
Of u kunt de volgende kits kopen:
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.
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.

This image is created using Fritzing. Click to enlarge image
Stel de pinnen van de Arduino Nano in als digitale uitgang met behulp van de functie
pinMode()
pinMode(PIN_RED, OUTPUT);
pinMode(PIN_YELLOW, OUTPUT);
pinMode(PIN_GREEN, OUTPUT);
Programmeer het rood licht aan te zetten met de functie
digitalWrite():
digitalWrite(PIN_RED, HIGH);
digitalWrite(PIN_YELLOW, LOW);
digitalWrite(PIN_GREEN, LOW);
delay(RED_TIME);
#define PIN_RED 3
#define PIN_YELLOW 4
#define PIN_GREEN 5
#define RED_TIME 4000
#define YELLOW_TIME 4000
#define GREEN_TIME 4000
void setup() {
pinMode(PIN_RED, OUTPUT);
pinMode(PIN_YELLOW, OUTPUT);
pinMode(PIN_GREEN, OUTPUT);
}
void loop() {
digitalWrite(PIN_RED, HIGH);
digitalWrite(PIN_YELLOW, LOW);
digitalWrite(PIN_GREEN, LOW);
delay(RED_TIME);
digitalWrite(PIN_RED, LOW);
digitalWrite(PIN_YELLOW, HIGH);
digitalWrite(PIN_GREEN, LOW);
delay(YELLOW_TIME);
digitalWrite(PIN_RED, LOW);
digitalWrite(PIN_YELLOW, LOW);
digitalWrite(PIN_GREEN, HIGH);
delay(GREEN_TIME);
}
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.
#define PIN_RED 3
#define PIN_YELLOW 4
#define PIN_GREEN 5
#define RED_TIME 2000
#define YELLOW_TIME 1000
#define GREEN_TIME 2000
#define RED 0
#define YELLOW 1
#define GREEN 2
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);
}
void loop() {
trafic_light_on(RED);
delay(times[RED]);
trafic_light_on(YELLOW);
delay(times[YELLOW]);
trafic_light_on(GREEN);
delay(times[GREEN]);
}
void trafic_light_on(int light) {
for (int i = RED; i <= GREEN; i++) {
if (i == light)
digitalWrite(pins[i], HIGH);
else
digitalWrite(pins[i], LOW);
}
}
#define PIN_RED 3
#define PIN_YELLOW 4
#define PIN_GREEN 5
#define RED_TIME 2000
#define YELLOW_TIME 1000
#define GREEN_TIME 2000
#define RED 0
#define YELLOW 1
#define GREEN 2
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);
}
void loop() {
for (int light = RED; light <= GREEN; light ++) {
trafic_light_on(light);
delay(times[light]);
}
}
void trafic_light_on(int light) {
for (int i = RED; i <= GREEN; i ++) {
if (i == light)
digitalWrite(pins[i], HIGH);
else
digitalWrite(pins[i], LOW);
}
}
#define PIN_RED 3
#define PIN_YELLOW 4
#define PIN_GREEN 5
#define RED_TIME 2000
#define YELLOW_TIME 1000
#define GREEN_TIME 2000
#define RED 0
#define YELLOW 1
#define GREEN 2
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;
void setup() {
pinMode(PIN_RED, OUTPUT);
pinMode(PIN_YELLOW, OUTPUT);
pinMode(PIN_GREEN, OUTPUT);
trafic_light_on(light);
last_time = millis();
}
void loop() {
if ((millis() - last_time) > times[light]) {
light++;
if (light >= 3)
light = RED;
trafic_light_on(light);
last_time = millis();
}
}
void trafic_light_on(int light) {
for (int i = RED; i <= GREEN; i++) {
if (i == light)
digitalWrite(pins[i], HIGH);
else
digitalWrite(pins[i], LOW);
}
}
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.