# Arduino: semaforo (scuola media)
## Semaforo con Arduino

L'obiettivo di questa attività è costruire un semaforo con Arduino$^{VK}$ e tre led$^{VK}$: rosso, giallo e verde.

#### Cose da sapere prima

Installare e testare Arduino
* collegate la scheda Arduino al pc tramite cavo USB
* installate Ide Arduino
** su Linux Ubuntu: avviate Ubuntu Software Center, cercate Arduino, installate e avviate.
** su Windows seguite la guida
* testate l'installazione e il collegamento
** lanciate IDE-Arduino
** scegliete File, Esempi, Basics, Blinck e caricatelo sulla scheda con il tasto Freccia, il led a bordo della scheda comincia a lampeggiare
* installate Visualino seguendo le guide dul sito

## Hardware e software

* Hardware: Arduino Uno, ma si può fare anche con Arduino 2009
* Software:
** Visualino editor a blocchi per Arduino, simile a Scratch, che in più permette di vedere anche il codice,
** IDE standard di Arduino (integrated development environment = ambiente di sviluppo integrato), per il quale è necessario scrivere in linguaggio processing$^{VK}$.

## Semaforo arduino

Il tutorial ci guiderà nella produzione di un semaforo costruito con Arduino e i tre led.
E' possibile costruire il semaforo sia con una breadboard, immagine a sinistra, sia inserendo i led direttamente sulla scheda Arduino, immagine a destra.
Useremo l'immagine con i led innestati direttamente sulla sche Arduino come riferimento per il tutorial. Come è possibile osservare, eventualmente ingrandendo un po' l'immagine i tre led sono stati innestati sulle porte digital:
* Led Verde catodo, pin corto, su GND e anodo, pin lungo, su Digital 13
* Led Giallo catodo su GND e anodo su Digital 12
* Led Rosso catodo su GND e anodo su Digital 13

## Come funziona un semaforo

Il semaforo funziona con tre luci: verde, rosso e giallo; e serve a regolare il traffico. Se è accesa la luce rossa si deve stare fermi, il segnale per poter passare corrisponde allo spegnimento della luce rossa e alla contemporanea accensione della luce verde. L'accensione della luce gialla, a verde ancora acceso, ci avverte che tra pochi secondi si accenderà la luce rossa, ed infatti passati pochi secondi si spengono verde e giallo e si accende il rosso. E così avanti. Come potete osservare nella gif animata qui a sinistra.

## Primo script led blincking

Cominciamo con il fare lampeggiare a tempo il led verde.
Usando i blocchi di Visualino scriviamo il codice che farà accendere il led verde per un secondo, 1000 millisecondi$^{VK}$, e poi lo terrà spento per un secondo:
Sulla destra della finestra di Visualino è possibile leggere il processing.
Collegato Arduino al computer, dovrebbe essere possibile inviare il codice ottenuto alla scheda direttamente dalla finestra di Visualino, tasto upload, cosa che comporta l'apertura dell'IDE. Se così non fosse basta lanciare l'IDE di Arduino e copiare nella finestra di input il codice e lanciare caricare da lì il codice sulla scheda. Dopo un attimo per il caricamento, verificabile osservando il lampeggiamento dei piccoli led TX e RX sulla scheda, il led verde dovrebbe cominciare a lampeggiare ad intervalli regolari di un secondo. Riportiamo qui sotto anche il codice processing.

## Script per il semaforo

A questo punto dovremmo con un minimo di attenzione produrre lo script per far funzionare il semaforo. La successione deve essere:
* led verde acceso -digitalWrite(13,HIGH);-, si può passare, durata possibile due secondi -delay(2000);-
* led verde e il led giallo accesi insieme, si ootiene accendendo il led giallo -digitalWrite(12,HIGH);- si può passare ma attenzione sta per arrivare lo stop, durata un secondo -delay(1000);-
* led rosso acceso -digitalWrite(11,HIGH);- e contemporaneamente si spengono i led verde -digitalWrite(13,LOW);- e giallo -digitalWrite(12,LOW);-, stop, durata tre secondi -delay(3000);-
* ricominciamo si spegne led rosso -digitalWrite(11,LOW);- e si accende quello verde...
Ottenuto il codice procediamo a caricarlo sulla scheda con l'IDE di Arduino. I led di trasmissione lampeggeranno e se tutto va bene il nostro semaforo comincerà a funzionare.

## Il semaforo in funzione

Il semaforo si metterà a funzionare appena finito il caricamento del codice. A questo punto possiamo staccarlo dal pc ed alimentandolo con una batteria lo facciamo funzionare con il solo Arduino.

## Semaforo con scheda breadboard

E' possibile costruire il semaforo anche usando una scheda breadboard che facilita le connessioni dei led , nell'immagine qui sotto lo schema dei collegamenti.

## In sintesi

| Foto e video | Spiegazione | Visualino | Codice processing |
| Arduino collegato al pc | Ecco come si presenta il nostro setup per il lavoro. Arduino è collegato al pc tramite cavo usb e sul pc abbiamo in funzione Visualino e l'IDE-Arduino. | Visualino | IDE-Arduino |
| Arduino con led collegati sulla scheda | Colleghiamo i led direttamente alla scheda Arduino, rispettando i numeri sulle porte. Spostando i blocchi in Visualino, aiutandovi con i colori, scriviamo il codice necessario e lo carichiamo sulla scheda. | Blocchi Visualino per semaforo | void setup { pinMode(13,OUTPUT); pinMode(12,OUTPUT); pinMode(11,OUTPUT); } void loop { digitalWrite(13,HIGH); delay(2000); digitalWrite(12,HIGH); delay(1000); digitalWrite(13,LOW); digitalWrite(12,LOW); digitalWrite(11,HIGH); delay(3000); digitalWrite(11,LOW); } |

## Programmi usati

* Ide di Arduino per il codice: https://www.arduino.cc/
* Visualino per i blocchi: http://www.visualino.net/

## Videotutorial

* Video per chi non ama leggere: ARDURINO-ER, Progetto 05 – Lezione 02. Semaforo. Accensione di tre LED pilotati da Arduino, su YouTube, 26 ago 2019.