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
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