entrada-POST

Benevnuti in un nuovo post del corso per makers sulla programmazione con Arduino e Protocoder! In questa lezione, utilizzeremo due sensori ad ultrasuoni bat per calcolare la distanza dalla mano, per poi far suonare un cicalino.

Lista dei materiali

  • Scheda di controllo ZUM BT-328 o una scheda Arduino compatibile.
  • 2 x bat sensori ad ultrasuoni
  • Un cicalino/buzzer

Concetti che impareremo

In questa introduzione impariamo ad utilizzare i sensori ad ultrasuoni per calcolare la distanza in centimetri ed utilizzeremo la funzione Tone di Arduino per emettere suoni con il cicalino. Per collegare i bat sensori ad ultrasuoni, seguiamo le indicazioni della tabella:

Sensore Bat 1 Sensore Bat 2
VCC VCC VCC
GND GND GND
ECHO Pin 8 Pin 9
TRIGGER Pin 10 Pin 11

Nell’immagine sotto vedi come collegare i moduli alla scheda:conexion_theremin

Il codice

Iniziamo a dichiarare le variabili globali nel codice per Arduino, che in questo caso definisce le connessioni dei pins.

Procediamo con la funzione setup:

Indicheremo quali pins hanno la funzione di INPUT, e quali di OUTPUT.

Il codice da scrivere all’interno della funzione loop è:

Per prima cosa dichiariamo la variabile locale frec_maxima, che dice ad Arduino qual’è la frequenza massima del suono del cicalino. Poi dichiariamo le variabili distancia_frecuencia e distancia_tiempo, che memorizzano la distanza misurata dai sensori ad ultrasuoni, e trasformano la distanza in parametri che modificano la frequenza e la durata della nota da emettere. Per calcolare la distanza, usiamo la funzione distance che misura la durata dei segnali elettrici provenienti dai pins trigger e echo, che gli vengono forniti come argomenti. Se vuoi approfondire i sensori ad ultrasuoni guarda questo tutorial nel sito web di Arduino. Il codice per la funzione distance è:

Possiamo vedere come questa funzione chiama la funzione TP_init,  alla quale passiamo come argomento i dati dei pins che abbiamo inviato dalla funzione loop. In questo modo possiamo passare dei dati da una funzione ad un altra senza problemi. Il codice della funzione TP_init è di seguito:

In questa funzione, cambiamo lo stato dei pins e inviamo vari segnali da 2 e 10 microsecondi, con il pin Trigger del sensore ad ultrasuoni, e poi usiamo la funzione pulseIn usata con il pin Echo per calcolare il tempo che intercorre nel variare il suo valore da alto a basso. Questo periodo corrisponde al tempo che impiega l’impulso sonoro a ritornare indietro. Per saperne di più, puoi andare alla pagina di riferimento per la funzione pulseIn di Arduino. La funzione TP_init ritorna  il valore calcolato dalla funzione pulseIn in microsecondi, ed all’interno della funzione distance, usiamo il valore ricevuto per calcolare la distanza dall’oggetto. Una volta calcolate le distanze con i sensori ad ultrasuoni, useremo la funzione constrain che abbiamo utilizzato anche nel precedente tutorial, per essere sicuri che le letture effettuate rimangano entro certi margini. Prova a cambiare i valori così da fare più pratica ed imparare ancora di più. Dopo aver utilizzato la funzione constrain, useremo la funzione map, che abbiamo già utilizzato in un altro precedente tutorial, per modificare l’escursione di valori. La variabile distancia_tiempo può moltiplicare il valore per 10, così la funzione map non è più così indispensabile. Per ultimo, facciamo suonare il cicalino usando il comando tone:

La funzione tone è quella che fa suonare il cicalino. Utilizza i parametri pin connesso, frequenza della nota e durata della nota. A seguire creiamo un ritardo dello stesso valore della durata del tono, così che verrà suonato interamente. Come esercizio puoi modificare il minimo e massimo valore della frequenza, modifica la scala con la quale sono mappati e come questo cambia il suono.

Per ora arrivederci!