Cerca

modulo attività

modulo tecnica

Con S4A si possono elaborare grandezze fisiche provenienti dall'ambiente grazie alle porte di ingresso analogiche della scheda Arduino Uno.

Molto spesso, grazie ad un componente elettronico chiamato trasduttore, una grandezza fisica qualunque (posizione, velocità, temperatura, luce ...) può essere trasformata in una tensione proporzionale alla grandezza in ingresso.

trasduttore

 La tensione è una grandezza elettrica (quindi può essere utilizzata da un circuito elettronico) ma è analogica e quindi non adatta ad essere usata da un computer o da un processore come quello che fa funzionare Arduino.

 

 

 

 

ArduinoUnoA

Cosa succede se si collega una tensione analogica al pin A0 di Arduino?

Succede che la tensione viene CONVERTITA da un valore analogico ad un valore digitale a 10 bit.

Si dice che la grandezza viene quantizzata cioè il valore della tensione viene codificato con un numero compreso tra 0 e 1023 perché dentro Arduino c’è una circuito che si chiama ADC (Analogic to Digital Converter) che fa questa trasformazione.

Dopo la conversione, all'interno di Arduno non c'è più la tensione ma un numero che la rappresenta.

Il convertitore interno a 10 bit associa un numero compreso fra 0 e 1023 ad una tensione compresa fra 0 e 5V (nota1).

Significa che la gamma 0-5V viene suddivisa in 1023 scalini ed il convertitore individua lo scalino su cui viene collocato il valore di tensione presente in ingresso.

Una simulazione realizzata con Scratch del DAC la puoi vedere qui.

I pin da A0 ad A5 sono collegati con il convertitore interno e consentono l'ingresso di 6 grandezze analogiche contemporaneamente.

 

Programmi come Scratch for Arduino e Snap for Arduino catturano le tensioni presenti sui pin A0-A5 convertendoli in numeri: occorre prelevarli e inserirli nello script.

Il numero catturato è presente con Snap4A con questo simbolo:   

Con Snap4A per catturare un valore di tensione analogico si connette il segnale ad una delle porte analogiche, p.e. A0, Sn letturaA e si crea una variabile per registrare la lettura del valore analogico in modo da inserirla nello script.

Con il triangolino si può selezionare la porta da leggere.

analog varInfine si deve assegnare il valore letto ad una variabile.

 

 

Esempio

lettura analog

Un semplice esercizio lo si può realizzare con un potenziometro da 10 kΩ con gli estremi collegati a GND e +5V ed il cursore all'ingresso analogico; spostando il cursore, si vede che il numero varia di conseguenza.

Con i valori digitali ricavati dalla conversione A-D della tensione in uscita dal potenziometro si può spostare uno sprite verso l'alto o verso il basso in una posizione a piacere manovrando la posizione del cursore del potenziometro.

Una semplice istruzione di ripetizione permanente tiene aggiornato il valore digitale della tensione presente sul pin analogico.

 

I valori a 10 bit variano tra 0 e 1023 mentre sull’asse y sono disponibili le posizioni fra -180 e +180

Per utilizzare tutta l’area disponibile occorre ricondurre i valori in ingresso variabile tra 0 e 1023 entro gamma delle posizioni comprese fra -180 e 180.stage
Si deve eseguire una compressione ed una traslazione dei valori.

Per l’asse y
primo: ricondurre la gamma da 0 a 1023 alla gamma da 0 a 360 (360 sono tutti i punti disponibili lungo l’asse x nella gamma da -180 a +180) (nota2) con l’operazione di riduzione

1023/3=341

(sono un po’ meno di 360 ma va bene così, l'importante è stare dentro gli estremi dello schermo).

A questo punto la grandezza analogica starebbe dentro lo stage ma è tutta positiva; occorre spostare tutti i punti verso il basso.

secondo: traslare i punti verso il basso di 180 posizioni sottraendo 180 ai valori appena calcolati:

L’espressione matematica della trasformazione è:

posizione_x= valore_analogico/3-180

Si realizza lo spostamento tramite potenziometro con le istruzioni:posY

 

 

 

 

 

 Analogamente si può fare per spostare lo sprite lungo l'asse x, ovviamente cambiando i parametri di calcolo.

Se si usano contemporaneamente due potenziometri si può spostare lo sprite in tutta l'area a disposizione ed è quello che si fa con i joystick. Questi terminali sono proprio due potenziometri disposti ad angolo retto per essere manovrati con una sola mano nelle due posizioni x e y.

 

Note

Nota 1: Un bit mi consente di effettuare un scelta fra due possibilità. Un byte (8bit) mi consente di effettuare una scelta fra 256 possibilità. 10 bit consentono di effettuare una scelta tra 1024 possibilità. Ecco da dove viene il numero 1023.

nota 2: in realtà sono 361, c'è anche lo zero.

Tu non hai i permessi necessari per i commenti! Devi registrarti.