31 sij Upravljivi semafor
Zadatak
Napravite upravljivi model semafora. Na Arduino spojite crvenu, žutu i zelenu diodu te jedno tipkalo. Kada tipkalo nije pritisnuto neka semafor radi u normalnom načinu rada, a kada je tipkalo pritisnuto neka semafor bude u načinu ručnog upravljanja prometom. Kada je semafor u normalnom načinu rada neka bude uključeno crveno svjetlo na tri sekunde. Potom neka svijetle crveno i žuto zajedno jednu sekundu. Nakon toga neka svijetli zeleno tri sekunde. Naposljetku, neka svijetli samo žuto na jednu sekundu i neka se ciklus ponavlja ispočetka. Kada je semafor u načinu ručnog upravljanja prometom neka na njemu blinka žuto svijetlo – pola sekunde neka bude uključeno pa pola sekunde isključeno.
Prikaz spajanja
Arduino kod
int LedCrvena = 6; int LedZuta = 7; int LedZelena = 8; int Tipkalo = 10; int StanjeTipkala; void setup() { pinMode(LedCrvena, OUTPUT); //postavi izvod LedCrvena (6) kao izlazni pinMode(LedZuta, OUTPUT); //postavi izvod LedZuta (7) kao izlazni pinMode(LedZelena, OUTPUT); //postavi izvod LedZelena (8) kao izlazni pinMode(Tipkalo, INPUT_PULLUP); //postavi izvod Tipkalo (10) kao ulazni } void loop() { //očitaj stanje izvoda i pohrani u varijablu StanjeTipkala StanjeTipkala = digitalRead(Tipkalo); if (StanjeTipkala == LOW) { //ako je tipkalo pritisnuto digitalWrite(LedCrvena, LOW); //isključi prvu diodu digitalWrite(LedZuta, HIGH); //uključi drugu diodu digitalWrite(LedZelena, LOW); //isključi treću diodu delay(500); //čekaj pola sekunde digitalWrite(LedCrvena, LOW); //isključi prvu diodu digitalWrite(LedZuta, LOW); //isključi drugu diodu digitalWrite(LedZelena, LOW); //isključi treću diodu delay(500); //čekaj pola sekunde } if (StanjeTipkala == HIGH) { //svijetli crveno 3 sekunde digitalWrite(LedCrvena, HIGH); //uključi crveno svjetlo digitalWrite(LedZuta, LOW); //isključi žuto svjetlo digitalWrite(LedZelena, LOW); //isključi zeleno svjetlo delay(3000); //čekaj 3 sekunde //svijetle crveno i žuto 1 sekundu digitalWrite(LedCrvena, HIGH); //uključi crveno svjetlo digitalWrite(LedZuta, HIGH); //uključi žuto svjetlo digitalWrite(LedZelena, LOW); //isključi zeleno svjetlo delay(1000); //čekaj 1 sekundu //svijetli zeleno 3 sekunde digitalWrite(LedCrvena, LOW); //isključi crveno svjetlo digitalWrite(LedZuta, LOW); //isključi žuto svjetlo digitalWrite(LedZelena, HIGH); //uključi zeleno svjetlo delay(3000); //čekaj 3 sekunde //svijetli žuto 1 sekundu digitalWrite(LedCrvena, LOW); //isključi crveno svjetlo digitalWrite(LedZuta, LOW); //uključi žuto svjetlo digitalWrite(LedZelena, HIGH); //isključi zeleno svjetlo delay(1000); //čekaj 1 sekundu } }