OPDRACHT 3 STOPLICHTEN
Bouw deze eerst na en maak vervolgens een tweede knop of dubbele lichten.
De schakeling (schets) is wat ingewikkelder, maar ook hierbij deels de uitleg.
Zoals je ziet zit er een knipper in (blink)
Deze werkt niet zuiver. Maak een schema om dat zuiverder te maken en pas aan.
Bedenk daarbij een zeer praktische functie en aanpassing . Dat is dus zowel inhoudelijk als uiterlijk.
EINDWERKOPDRACHT
Neem deze schakeling over.

SCHETS |
int rood = 13; //variabele voor pin 13 int geel = 12; //variabele voor pin 12 int groen= 11; //variabele voor pin 11 int roodvoet= 10; //variabele voor pin 10 int groenvoet= 9; //variabele voor pin 9 int button = 8; //variabele voor pin 8 int buttonStatus; //variabele waarmee we kijken of de button is ingedrukt
void setup() { pinMode(rood, OUTPUT); //output wil zeggen er komt stroom op pinMode(geel, OUTPUT); pinMode(groen, OUTPUT); pinMode(roodvoet, OUTPUT); pinMode(groenvoet, OUTPUT); pinMode(button, INPUT); //zorgt dat de button input is digitalWrite(button, HIGH); //en zorgt dat bij indrukken de button een signaal afgeeft }
void loop() { //standaard staat groen aan en mogen auto’s rijden. Voetgangers moeten wachten digitalWrite(rood, LOW); digitalWrite(geel, LOW); digitalWrite(groen, HIGH); digitalWrite(roodvoet, HIGH); digitalWrite(groenvoet, LOW);
buttonStatus = digitalRead(button); //controleer de hele tijd of de button wordt ingedrukt if(buttonStatus == LOW) //(if) als de button wordt ingedrukt dan gebeurt er onderstaande {
delay(3000); //3 seconden wachten digitalWrite(geel, HIGH); //eerst geel voor de auto’s digitalWrite(groen, LOW); //groen is op uit gebleven delay(1000); //wacht een seconde digitalWrite(rood, HIGH); //zet op rood voor auto’s digitalWrite(geel, LOW); //geel gaat nu uit digitalWrite(roodvoet, LOW); //rood voor wandelaars gaat uit digitalWrite(groenvoet, HIGH); //groen voor wandelaars gaat aan blink(groenvoet, 4); delay(3000); //wacht drie seconden digitalWrite(geel, HIGH); //zet geel voor auto aan delay(1000); //wacht een seconde en we beginnen bij begin van de loop
} } void blink(int pin, int times) { for(int i = 0; i < times; i++){ digitalWrite(pin, LOW); delay(500); digitalWrite(pin, HIGH); delay(500); } }
|
