Internet of Things - Arduino

Tipkala

Upravljivi semafor

Što ćemo naučiti:

Spajanje sklopke

Zadatak

Napravite upravljivi model semafora. Na Arduino spojite crvenu, žutu i zelenu diodu te jednu sklopku. Kada je sklopka otvorena neka semafor radi u normalnom načinu rada, a kada je sklopka zatvorena neka semafor bude u načinu ručnog upravljanja prometom. Kada je semafor u normalnom načinu rada neka na početnu neka bude uključeno crveno svijetlo na tri sekunde. Potom neka svijetle crveno i žuto zajedno jednu sekundu. Nakon toga neka svijetli zeleno tri sekunde. Naposlijetku, 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 Sklopka = 10;

int StanjeSklopke;

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(Sklopka, INPUT_PULLUP);  //postavi izvod Sklopka (10) kao ulazni i aktiviraj pull-up
}

void loop() {
  StanjeSklopke=digitalRead(Sklopka); //očitaj stanje izvoda i pohrani u varijablu StanjeSklopke
  if (StanjeSklopke==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
  } else {                            //inače
    //svijetli crveno 3 sekunde
    digitalWrite(LedCrvena, HIGH);    //uključi crveno svijetlo
    digitalWrite(LedZuta, LOW);       //isključi žuto svijetlo
    digitalWrite(LedZelena, LOW);     //isključi zeleno svijetlo
    delay(3000);                      //čekaj 3 sekunde
    //svijetle crveno i žuto 1 sekundu
    digitalWrite(LedCrvena, HIGH);    //uključi crveno svijetlo
    digitalWrite(LedZuta, HIGH);      //uključi žuto svijetlo
    digitalWrite(LedZelena, LOW);     //isključi zeleno svijetlo
    delay(1000);                      //čekaj 1 sekundu
    //svijetli zeleno 3 sekunde
    digitalWrite(LedCrvena, LOW);     //isključi crveno svijetlo
    digitalWrite(LedZuta, LOW);       //isključi žuto svijetlo
    digitalWrite(LedZelena, HIGH);    //uključi zeleno svijetlo
    delay(3000);                      //čekaj 3 sekunde
    //svijetli žuto 1 sekundu
    digitalWrite(LedCrvena, LOW);     //isključi crveno svijetlo
    digitalWrite(LedZuta, HIGH);      //uključi žuto svijetlo
    digitalWrite(LedZelena, LOW);     //isključi zeleno svijetlo
    delay(1000);                      //čekaj 1 sekundu
  }
}

verzija 1

Pogledajte ostale materijale za tipkala i sklopke