giovedì 19 novembre 2015

ARDUINO - [PROGETTO] Semaforo (v. 1.1)

Bentornati al progetto del semaforo con Arduino. Con questo post continueremo lo sviluppo del programma del semaforo, introducendo alcune semplificazioni. Questa è la versione 1.1 del programma.

Materiale occorrente
  • Arduino;
  • 2x LED Rossi;
  • 2x LED Gialli;
  • 2x LED Verdi;
  • 1x resistori da 220 Ohm;
  • Breadboard e cavi di collegamento.
Funzionamento del circuito 

Incrocio di riferimento

Il funzionamento del circuito è uguale a quello della versione 1.0 del programma.











Lo sketch
A livello di sketch introduciamo una semplificazione eliminando tutte le istruzioni inutili tra una passaggio e l'altro.
Se, per esempio, abbiamo pin 13 acceso e pin 12 spento nel passaggio uno e, nel passaggio 2, pin 13 spento e pin 12 spento, allora nel passaggio due potremmo evitare di scrivere che il pin 12 è spento. Questo perché Arduino ha memorizzato lo stato del pin e non lo cambia se non gli viene detto di farlo.
Utilizzando questa semplificazione abbiamo risparmiato ben 12 istruzioni nel void loop. Questo si traduce in un risparmio nella memoria di Arduino e in meno tempo per eseguire i vari passaggi. Il minor tempo impegato per eseguire i vari passaggi in alcuni casi potrebbe dare fastidio, nel nostro caso però possiamo applicare questa semplificazione e ottenere lo sketch che segue.

//Semaforo v. 1.1
void setup() {  //Dichiarazione pin
  //Semaforo 1
  pinMode (13, OUTPUT);  //LED Rosso
  pinMode (12, OUTPUT);  //LED Giallo
  pinMode (11, OUTPUT);  //LED Verde
  //Semaforo 2
  pinMode (10, OUTPUT);  //LED Rosso
  pinMode (9,  OUTPUT);  //LED Giallo
  pinMode (8,  OUTPUT);  //LED Verde
  
  //Dichiarazione stato iniziale pin
  //Tutti i led all'inizio sono spenti
  digitalWrite (13, LOW);
  digitalWrite (12, LOW);
  digitalWrite (11, LOW); 
  digitalWrite (10, LOW);
  digitalWrite (9,  LOW);
  digitalWrite (8,  LOW);
}
void loop() {
  // Semaforo 1: Rosso - Semaforo 2: Verde
  digitalWrite (13, HIGH);  //Rosso  1
  digitalWrite (12, LOW);   //Giallo 1
  digitalWrite (10, LOW);   //Rosso  2
  digitalWrite (8,  HIGH);  //Verde  2
  delay (4500);
  // Semaforo 1: Rosso - Semaforo 2: Giallo
  digitalWrite (9,  HIGH);  //Giallo 2
  digitalWrite (8,  LOW);   //Verde  2
  delay (1500);
  // Semaforo 1: Verde - Semaforo 2: Rosso
  digitalWrite (13, LOW);   //Rosso  1
  digitalWrite (11, HIGH);  //Verde  1
  digitalWrite (10, HIGH);  //Rosso  2
  digitalWrite (9,  LOW);   //Giallo 2
  delay (4500);
  // Semaforo 1: Giallo - Semaforo 2: Rosso
  digitalWrite (12, HIGH);  //Giallo 1
  digitalWrite (11, LOW);   //Verde  1
  delay (1500);
}

 
Il circuito 
Il circuito è anch'esso molto semplice. Si tratta di sei led collegati alle sei uscite che abbiamo utilizzato. Sapendo che i led sono collegati tutti a massa e che non è importante che la resistenza sia posta sul catodo o sull'anodo del led, colleghiamo tutti i catodi insieme e li mandiamo ad un'unica resistenza da 220 Ohm. Con questa piccola semplificazione abbiamo risparmiato ben 5 resistenze rispetto alla precedente versione del programma.


Se il mio lavoro vi è piaciuto commentate e ci diamo appuntamento al prossimo sketch!
Lo staff di elettromatica.blogspot.com 

Nessun commento:

Posta un commento