Arduino verkeerslicht

Het testje met Toon op een schoolvrije dag is uitgegroeid tot een heus recuperatie-projectje. Enkel de arduino is nieuw, alle andere componentjes zijn eigenlijk recup van andere dingen.

En het resultaat mag er dan ook wezen. Het heeft al goed dienst gedaan in de tuin. En zelfs op school op de sportdag heeft het een hele dag staan knipperen… en de 12v batterij die “slechts” recup is uit een oude ups is nog steeds niet leeg :-).

De schakelingen en het programma zijn (oer-) simpel, heel waarschijnlijk niet de beste manier om te programmeren, maar ik ben toch tevreden :-). Het verkeerslicht blijft een random-tijd groen en een randomtijd rood… kwestie van het spannend te houden 🙂

 

Het schema is redelijk “simpel”. 12v batterij is de stroombron. Dus voor 12v-led-lampen dien je uit veiligheid een DC-to-DC te gebruiken. Een opgeladen batterij is eerder 14v als 12v. Led-verlichting vindt dit niet leuk…
De tweede transfo dient om de arduino te voeden. Verder is het makkelijk. Alle lampen een gedeelde pool en de andere pool wordt onderbroken door de relays. Kostprijs van het arduino-gedeelte: 2 DC-to-DC voor een 10dollar(maximum), de arduino 2,69dollar, het relay-bordje van 4 2dollar. Een hoopje overschot MDF en een likje verf. Plastiek voor het kleuren van de lampen komt uit tussenschotjes uit oude mappen. Om de “paal” van het verkeerslicht rond te maken heb ik een stukje karton-buis gebruikt waarin iets (ik vermoed carbon latjes of de stickerset van de moto) is verstuurd geweest.

resultaat na wat coderen: priceless!

 

 

#include “Wire.h”
/*
Connect 5V on Arduino to VCC on Relay Module
Connect GND on Arduino to GND on Relay Module
Connect GND on Arduino to the Common Terminal (middle terminal) on Relay Module. */
//relay module on pin 8
#define CH1 8
#define CH2 9
#define CH3 10

long randNumber;
int analogpin;
void setup()
{
Serial.begin(9600); // start serial for output
// for nano, let the led blink 1=green, 2 = orange, 3 is red

//setup the channel for the relay
pinMode(CH1, OUTPUT);
//Turn OFF any power to the Relay channels
digitalWrite(CH1,LOW);

//setup the channel for the relay
pinMode(CH2, OUTPUT);
//Turn OFF any power to the Relay channels
digitalWrite(CH2,LOW);
//setup the channel for the relay
pinMode(CH3, OUTPUT);
//Turn OFF any power to the Relay channels
digitalWrite(CH3,LOW);
pinMode(13, OUTPUT);

Wire.begin();
delay(2000);
}

void loop()
{
// testmodule:
/*
setSchakelaar(true);
Serial.println(“back on”);
delay(10000);
setSchakelaar(false);
Serial.println(“back off end test, restart loop”);
//end tesmodule
*/
// print a random number
randNumber = random(6000, 12000);
Serial.println(randNumber);

//GROEN
blinkLED(3);
digitalWrite(CH1,HIGH);
digitalWrite(CH2,LOW);
digitalWrite(CH3,LOW);
delay(randNumber) ;

//ORANJE
blinkLED(2);
digitalWrite(CH1,LOW);
digitalWrite(CH2,HIGH);
digitalWrite(CH3,LOW);

delay(2000);

randNumber = random(6000, 12000);

Serial.println(randNumber);
//ROOD
blinkLED(1);
digitalWrite(CH1,LOW);
digitalWrite(CH2,LOW);
digitalWrite(CH3,HIGH);
delay(randNumber);
}
/*
* Functions
*/
void setSchakelaar(boolean onoff)
{
if(onoff)
{
digitalWrite(CH1,HIGH);
}
else
{
digitalWrite(CH1,LOW);
}

}

void blinkLED(int x)
{
for (int i=0; i<x; i++)
{
blinkLED();
}
delay(1000);

}

void blinkLED()
{
digitalWrite(13, HIGH);
delay(200);
digitalWrite(13, LOW);
delay(200);
}

Leave a Reply

Your email address will not be published. Required fields are marked *