mercoledì 6 gennaio 2016

Scratch e Arduino - Progetto #5: Il led a luce variabile

In questo progetto vediamo come accendere un led con un'intensita' di luce variabile. Piu' in generale vediamo come pilotare un pin "analogico" o PWM di arduino.




Obiettivi del progetto

Accendere un led con un'intensita' di luce variabile impostata da un potenziometro.


Lista Componenti

Vediamo di cosa abbiamo bisogno per eseguire il progetto.


Scheda Arduino
Breadboard

Led

Resistenza da 220 ohm 

Potenziometro


Fili Maschio-Maschio




Come abbiamo visto nel progetto del led un pin digitale puo' assumere solo due valori

  • ON/HIGH/ACCESO o 100
  • OFF/LOW/SPENTO o 0

Tuttavia ci sono dei casi in cui vogliamo far assumere ad un pin digitale valori diversi da ON/OFF. Per esempio per accendere un led con un'intensita' di luce tra il massimo (tutto acceso = ON) e il minimo (tutto spento = OFF). In questo caso sul pidino che controlla il led dobbiamo passare valori differenti da ON e OFF.

Per far questo si usa una tecnica di modulazione chiamata PWM (Pulse With Modulation).
In questo modo possiamo far assumere al pin digitale di arduino un qualsiasi valore compreso tra 0 (OFF) e 100 (ON).
Ad ogni valore corrisponde un'intesita' di luce del led diversa.

Potete trovare una descrizione del concetto di PWM qui

Circuito e collegamenti

Qui lo schema dei collegamenti da realizzare. Ho usato il software Fritzing per rappresentare gli schemi di collegamento.




E qui la realizzazione su breadboard del circuito












Il circuito e' molto semplice. E' l'unione dei circuiti gia' realizzati per il led e per il potenziometro.

Abbiamo collegato il pin numero 9 di arduino, tramite il filo arancione, ad uno dei piedini della resistenza. L'altro piedino della resistenza e' collegato sul piedino positivo del led (anodo). Il piedino negativo del led (catodo) e' collegato indirettamente, tramite il filo nero, al pin GND (massa) di arduino (tramite la breadboard).

Abbiamo anche collegato il piedino centrale del potenziometro al pin analogico A0.

In questo modo quando ruoteremo il potenziometro la tensione sul piedino A0 variera' tra un valore di 0 e 100.
Useremo poi questo programma per accendere il led con una luce proporzionale a tale valore.




Programma Scratch

Crea questo script in Scratch usando il mouse







Adesso vediamo cosa fa il programma scratch descrivendo i vari blocchetti dall'alto al basso:





Imposta il Pin Analogio A0 come ingresso per legegre i valori del poteniometro ad esso collegato




Impostiamo il Pin 9 con uscita PWM.
 In questo caso possiamo solo usare i pin 3,5,6,9,10,11 o comunque quelli contrassegnati  con un tilde (~). Questi sono pin digitali speciali sui quali e' possibile impostare un valore qualsiasi tra 0 e 255 usando la tecnica PWM


Questo e' il ciclo principlae che viene eseguito per sempre. All'inizio devi creare una variabile chiamata luminosita. iniziamo il ciclo impostando il valore della variabile luminosita con il valore restituito dalla lettura del potenziometro (valore pin analogico (A) 0). A questo punto portiamo la luminosita' del ledA al valore contenuto nella variabile luminosita che ha sua volta e' il valore letto dal potenziometro. In questo modo al variare della posizione del potenziometro varia la luminosita' del ledA.
Notare che siccome il valore analogico assume valori tra 0 e 1023 sia necessario dividere il valore per 4 per portarlonel range 0 - 255


In questo modo abbiamo creato un programma che ha un input (il potenziometro) ed un output (il la luminosita' del led). Li abbiamo correlati tramite il software.

Faccio notare che questo circuito puo' essere implementato anche senza l'uso di Arduino, ma lo scopo e' di far comprendere l'uso dei pin PWM di arduino.






Complimenti!!! Con questo progetto hai imparato ad utilizzare i pin digitali ed analogici di Arduino in input e output.
Queste nozioni ti saranno utili in qualsiasi progetto arduino.