Hoe maak je een op Arduino gebaseerde verkeerslichtcontroller?
Verkeerslichten zijn signaalgevers die worden gebruikt om de verkeersstroom op de kruispunten van een weg, oversteekplaatsen voor voetgangers en andere locaties te regelen. Het is een combinatie van drie kleuren licht die rood, geel en groen zijn. Het rode lampje vertelt de mensen dat ze moeten stoppen, geel zegt dat ze zich moeten klaarmaken of de motor moeten starten als deze is uitgeschakeld en het groene lampje geeft aan dat je vrij bent om door te gaan.
In dit project gaan we een 4-weg verkeerslichtsysteem maken met behulp van een microcontroller. We zullen een C-code op het Arduino Uno-bord om het te vertellen hoe de LED's moeten worden in- en uitgeschakeld, zodat de perfecte timing van het schakelen kan worden bereikt in het signaleringsproces. Er worden 4 combinaties van 4 LED's gebruikt en op het breadboard geplaatst voor testdoeleinden.
Hoe maak je een 4-weg verkeerslicht met Seeeduino v4.2?
Verkeerslichten zijn het belangrijkste dat op de wegen wordt geïnstalleerd om een vlotte en gestage doorstroming van het verkeer te behouden en het minimaliseert de kans op ongevallen. We kunnen dit project op een klein breadboard maken. Laten we wat informatie over dit project verzamelen en aan de slag gaan.
Stap 1: De componenten verzamelen
De beste benadering om een project te starten, is door aan het begin een lijst met complete componenten te maken en een korte studie van elk onderdeel te doorlopen. Dit helpt ons om de ongemakken midden in het project te vermijden. Een volledige lijst van alle componenten die in dit project worden gebruikt, wordt hieronder gegeven.
Stap 2: de componenten bestuderen
Nu we de samenvatting van ons project kennen en we ook een volledige lijst van alle componenten hebben, laten we een stap verder gaan en een korte studie doornemen van de componenten die we gaan gebruiken.
Seeeduino v4.2is een van de beste Arduino-compatibele boards ter wereld die is gebaseerd op microcontroller Atmega 328 MCU. omdat het gemakkelijk te gebruiken, stabieler en het ziet er beter uit dan veel andere boards. Het is gebaseerd op de Arduino-bootloader. het heeft een ATMEGA16U2 als een UART-naar-USB-converter waardoor het als FTDI-chip kan worden gebruikt. het is verbonden met de computer met behulp van een micro-USB-kabel die over het algemeen een Android-kabel wordt genoemd. Een DC-aansluiting kan ook worden gebruikt om het bord van stroom te voorzien. het ingangsvermogen moet van 7V tot 15V zijn.
EEN Breadboardis een soldeerloos apparaat. Het wordt gebruikt om tijdelijke prototypes van elektronische schakelingen en ontwerpen te maken en te testen. De meeste elektronische componenten zijn eenvoudigweg verbonden met een breadboard door hun pinnen in het breadboard te steken. Een strook metaal wordt langs de gaten van het breadboard gelegd en de gaten worden op een specifieke manier met elkaar verbonden. De aansluitingen van de gaten zijn weergegeven in het onderstaande schema:
Stap 3: Werkingsprincipe
Laten we een korte inleiding geven op het werkingsprincipe van het 4-weg Verkeerslichtproject. Omdat dit een 4-weg is, hebben we twaalf leds nodig en vier combinaties van drie leds. De code is zo geschreven dat als de ene combinatie groen licht geeft, alle andere combinaties rood licht geven. Als een signaal verandert van groen naar geel of rood naar geel, zal een andere combinatie van de LED's ook een transactie tonen van respectievelijk rood naar geel of geel naar rood.
Dit alles zal gebeuren met een tijdsvertraging tussen de overgang van de signalen. Zo blijft een led bijna vijftien seconden groen, een led bijna twee seconden geel. De duur van de rode LED is afhankelijk van de duur van de groene LED. Dit betekent dat als een led vijftien seconden groen is, alle andere rode leds vijftien seconden blijven branden.
Stap 4: Het circuit maken
Nu we de belangrijkste werking van de componenten kennen, laten we doorgaan en beginnen met het samenstellen van de componenten om het circuit te maken. Doorloop de volgende stappen om alle componenten correct in het breadboard aan te sluiten.
- Neem allereerst alle LED's en sluit ze in de juiste volgorde aan op het breadboard als rood, geel en groen.
- Maak een gemeenschappelijke verbinding van de massa van alle LED's. Het is beter om een weerstand van 220 ohm aan te sluiten op de positieve pool van de LED.
- Sluit nu de aansluitdraden dienovereenkomstig aan.
- Verbind nu de LED's met de Arduino zoals weergegeven in het onderstaande schakelschema. LED-1, LED-2 t / m LED-12 worden aangesloten op pin1, pin2 t / m pin12 van het Arduino Uno-bord.
- Upload de code in de Arduino Uno en voed hem met een laptop of de AC naar DC-adapter.
- Het circuit ziet eruit als de onderstaande afbeelding:
Stap 5: Aan de slag met Arduino
Als u nog niet bekend bent met Arduino IDE, hoeft u zich geen zorgen te maken, want hieronder ziet u duidelijke stappen voor het branden van code op het microcontrollerbord met behulp van Arduino IDE. U kunt hier de nieuwste versie van Arduino IDE downloaden en de onderstaande stappen volgen:
1). Wanneer het Arduino-bord is aangesloten op uw pc, opent u "Configuratiescherm" en klikt u op "Hardware en geluid". Klik vervolgens op "Apparaten en printers". Zoek de naam van de poort waarop uw Arduino-bord is aangesloten. In mijn geval is dit "COM14", maar het kan op uw pc anders zijn.
2). Open nu de Arduino IDE. Stel vanuit Tools het Arduino-bord in op Arduino / Genuino UNO.
3). Stel vanuit hetzelfde Tool-menu het poortnummer in dat u in het bedieningspaneel hebt gezien.
4). Download de onderstaande code en kopieer deze naar uw IDE. Om de code te uploaden, klikt u op de upload-knop.
U kunt de code downloaden door hier te klikken.
Stap 6: Code
De code is goed becommentarieerd en spreekt voor zich, maar toch wordt een deel van de code hieronder kort uitgelegd.
1. Aan het begin worden alle pinnen benoemd, die later met Arduino worden verbonden.
int led1 = 1; // rood licht 1 int led2 = 2; // geel licht 1 int led3 = 3; // groen licht 1 int led4 = 4; // rood licht 2 int led5 = 5; // geel licht 2 int led6 = 6; // groen licht 2 int led7 = 7; // rood licht 3 int led8 = 8; // geel licht 3 int led9 = 9; // groen licht 3 int led10 = 10; // rood licht 4 int led11 = 11; // geel licht 4 int led12 = 12; // groen licht 4
2. leegte setup ()is een functie waarin we verklaren dat alle pinnen van het Arduino-bord worden gebruikt als INPUT of OUTPUT. De baudrate wordt ook in deze functie ingesteld. Baudrate is de communicatiesnelheid in bits per seconde waarmee de microcontroller-kaart communiceert met de externe apparaten. Deze functie werkt maar één keer als de inschakelknop van de microcontroller-kaart wordt ingedrukt.
void setup () {Serial.begin (9600;) // Baudrate is ingesteld op 9600 pinMode (led1, OUTPUT); // Alle pinnen die zijn aangesloten op LED's zijn ingesteld als OUTPUT pinMode (led2, OUTPUT); pinMode (led3, OUTPUT); pinMode (led4, OUTPUT); pinMode (led5, OUTPUT); pinMode (led6, UITGANG); pinMode (led7, OUTPUT); pinMode (led8, OUTPUT); pinMode (led9, OUTPUT); pinMode (led10, UITGANG); pinMode (led11, OUTPUT); pinMode (led12, OUTPUT); }
3. void loop is een functie die herhaaldelijk in een loop wordt uitgevoerd. In deze functie coderen we de hele procedure waarmee de microcontroller de externe LED's bestuurt. Een klein stukje code wordt hieronder gegeven. Hier brandt het groene licht van de eerste zijde en alle andere zijden hebben hun rode lampje aan. Deze lichten blijven 15 seconden in deze toestand. Na 15 seconden gaat het gele lampje van de eerste en tweede zijde branden, de andere twee zijden blijven rood branden. Na een vertraging van twee seconden zal de eerste zijde zijn rode lampje hebben en de tweede zijde zijn groene lampje. Dit zal gebeuren totdat alle vier de partijen hun groene lichten hebben ingeschakeld, op hun beurt en dan zal de lus zich herhalen.
digitalWrite (led1, LOW); // Rood lampje van de eerste zijde is uit digitalWrite (led2, LOW); // geel licht f eerste zijde is uit digitalWrite (led3, HIGH); // Groen licht van de eerste kant is op digitalWrite (led4, HIGH); // Rood licht van tweede zijde is op digitalWrite (led5, LOW); // geel lampje van tweede zijde is uit digitalWrite (led6, LOW); // groen licht van tweede zijde is uit digitalWrite (led7, HIGH); // Rood licht van derde zijde is op digitalWrite (led8, LOW); // geel licht van derde zijde is uit digitalWrite (led9, LOW); // groen licht van derde zijde is uit digitalWrite (led10, HIGH); // rood licht van de vierde zijde is op digitalWrite (led11, LOW); // geel licht van de vierde zijde is uit digitalWrite (led12, LOW); // groen licht van de vierde zijde is uit vertraging (15000); // vanwege een vertraging van 15 seconden blijven het groene licht van de eerste zijde en de rode lichten van de andere drie zijden gedurende 15 seconden ingeschakeld digitalWrite (led1, LOW); // rood licht van de eerste zijde is uit digitalWrite (led2, HIGH); // Geel licht van de eerste zijde is op digitalWrite (led3, LOW); // groen licht van de eerste zijde is uit digitalWrite (led4,LOW); // rood lampje van de tweede zijde is uit digitalWrite (led5, HIGH); // Geel licht van tweede zijde is op digitalWrite (led6, LOW); // groen licht van tweede zijde is uit digitalWrite (led7, HIGH); // Rood licht van de derde zijde is op digitalWrite (led8,LOW); // geel licht van derde zijde is uit digitalWrite (led9, LOW); // groen licht van derde zijde is uit digitalWrite (led10, HIGH); // rood licht van de vierde zijde is op digitalWrite (led11, LOW); // geel licht van de vierde zijde is uit digitalWrite (led12, LOW); // groen licht van de vierde zijde is uit vertraging (2000); // vanwege een vertraging van 2 seconden blijft het gele licht van de eerste en tweede zijde ingeschakeld
Dit was dus de hele procedure om een vierrichtingsverkeersein te maken. Nu kun je het leuk vinden om het te maken voor je leer- of schoolproject.