mercoledì 30 dicembre 2015

Scratch e Arduino - Progetto #4: Il potenziometro

In questo progetto vediamo come effettuare una lettura del valore di un potenziometro ed in generale di un pin analogico di arduino.




Obiettivi del progetto

Visualizzare sullo schermo una barra di progresso proporzionale al grado di rotazione di un potenziometro.

Lista Componenti

Vediamo di cosa abbiamo bisogno per eseguire il progetto.


Scheda Arduino
Breadboard

Potenziometro



Fili Maschio-Maschio




Il Potenziometro

Un potenziometro e' un componente elettronico che puo' essere descritto brevemente come una resistenza variabile o meglio come un partitore di tensione.  Per chi volesse una descrizione piu' dettagliata di cos'e' e come funziona un potenziometro puo' leggere qui






Ha tipicamente 3 piedini che vanno collegati al pin GND, al pin 5V e ad un pin analogico di arduino come illustrato in figura.
In questo modo sul pidino centrale e' presente una tensione proporzionale alla tensione di alimentazione (5V) in base al grado di rotazione del potenziometro.

Quando il potenziometro e' ruotato tutto a sinistra sul piedino centrale ci sono 0 volt.
Qaundo il potenziometro e' ruotato tutto a destra sul piedino centrale ci sono 5 volt.
Quando il potenziometro e' ruotato in una posizione intermedia sul piedino centrale c'e' una tensione tra 0 e 5 volt.




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.
Guardando il potenziometro di fronte collega:

  • Il pin GND di arduino al piedino di sinistra del potenziometro
  • Il pin 5V di arduino al piedino di destra del potenziometro. 
  • Il pin A0 di arduino al piedino centrale del potenziometro.


In questo modo il valore di tensione sul piedino centrale del potenziometro e' presente sul pidino analogico A0 di arduino. COn il programma scratch andremo a leggere questo valore che variera' tra 0 (potenziometro tutto a sinistra) e 100 (potenziometro tutto a destra).

Programma Scratch

Adesso che il circuito e' completo, passiamo alla parte software.
In sostanza dobbiamo leggere il valore del pin analogico A0 e visualizzare una barra di lunghezza proporzionale a tale valore (0-100)

Codice base


Crea questo script in Scratch usando il mouse





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




Per prima cosa crea un nuovo sprite facendo click sull'icona del pennello. Ci serve solo uno sprite vuoto per il nostro programma



Adesso crea un nuovo blocco chiamato disegna Barra. Fai click su opzioni e poi su Aggiungi un parametro numerico. Chiama il parametro %. In questo modo abbiamo creato un blocco vuoto che accetta in ingresso un parametro %.
Adesso aggiungi i blocchetti al blocco Disegna Barra come in figura. Questo blocco ci serve per disegnare una barra di progresso con lunghezza proporzionale al valore in ingresso %.
La prima operazione pulisci pulisce lo schermo
Se il valore % e' uguale a 0 non facciamo nulla (una barra di valore 0).
Se al contrario il valore % e' maggiore di 0 allora iniziamo tirando su la penna. Poi impostiamo il colore della penna e la sua dimensione (50). Adesso spostiamo la penna alle coordinate x=-150 e y=0. Adesso che abbiamo posizionato la penna la abbassiamo (penna giu'). In fine disegniamo la barra spostando la penna a destra (cambia x di) di un valore uguale a tre volte il valore %. Questa e' un modo semplice per disegnare una barra proporzionale ad un valore.
Successivamente passeremo il valore letto dal potenziometro a questo blocco. In questo modo disegneremo una barra di lunghezza uguale al valore letto dal potenziometro

Adesso crea il programma principale come in figura


Quando si preme la bandierina verde il programma inizia impostando il Pin analogico 0. Di fatto questo dice a scratch che dobbiamo effettuare una lettura dal pin analogico 0 (A0) di arduino


Crea una variabile di nome valore.
All'interno di un ciclo infinito (per sempre) assegna alla variabile valore il numero che ci restituisce il comando leggi potenziometro. In questo modo la variabile valore contiene la percentuale di rotazione del potenziometro (0-100).
Siccome la lettura del potenziometro restituisce un valore tra 0 e 1023, divido per 10 in modo da ottenere un valore tra 0 e circa 100.
Adesso chiama il blocco Disegna Barra passandogli come parametro la variabile valore. Questo in effetto disegna sullo schermo una barra proporzionale al valore della variabile valore. Adesso il ciclo ricomincia leggendo il valore del potenziometro e cosi' via all'infinito. Se ruoti il potenziometro una nuova barra della lunghezza giusta viene disegnata sullo schermo.


Come vedete il programma e' molto semplice, ma allo stesso tempo ci permette di imparare come leggere il valore di un pin analogico(potenziometro) ed eseguire una logica per disegnare una barra su schermo.

Queste operazioni per quanto basilari sono utilissime in moltissimi progetti Arduino.

In questo progetto hai anche appreso come creare un blocco di operazioni (funzione, routine) con un parametro d'ingresso. Cio'  sara' utile in moltissimi altri progetti arduino.

Una volta fatto click sulla bandierina verde il programma inizia leggendo il valore dal potenziometro e visualizzando la barra di progresso su schermo.










Complimenti!!! Adesso possiamo leggere il valore di una misura analogica (temperatura, presisone, ...) tramite arduino.