Jukeboxino: scegli il tuo brano con Arduino

Sfruttare Arduino per generare dei toni attraverso un buzzer non è certo una novità. In questo progetto si è voluto integrare diverse periferiche di ingresso e uscita per realizzare un vero e proprio jukebox. Mediante un tastierino numerico (keypad) è possibile scorrere in un menu, visualizzato su uno schermo LCD, per selezionare una tra le 3 tracce memorizzate nello sketch. La traccia selezionata viene poi eseguita per mezzo di un buzzer. Nella sua semplicità il progetto mette insieme diverse conoscenze e applicazioni, come la creazione di menu e sotto-menu per display LCD o l'utilizzo all'interno del codice di diverse periferiche di input/output.

Introduzione

I più giovani, forse, potrebbero non aver mai sentito la parola Jukebox. Si trattava di un apparecchio installato in molti luoghi pubblici che permetteva, in seguito all'introduzione di una moneta, di selezionare ed ascoltare una delle canzoni presenti al suo interno. Il progetto che andremo a presentare si ispira a questo dispositivo ormai vintage, permettendo all'utente di selezionare e ascoltare una melodia tra quelle presenti, senza però aver bisogno di una moneta.

Jukeboxino è un semplice progetto basato su Arduino. L'idea è quella di utilizzare la scheda Arduino Uno per generare onde quadre di opportuna frequenza e durata affinchè siano proporzionali alla frequenza e alla durata delle note di una melodia qualsiasi. In questo modo inviando l'onda quadra in ingresso ad un buzzer, esso genererà in successione le note della melodia. Tra una nota e la successiva occorrerà inserire un opportuno ritardo per garantire così il giusto ritmo alla melodia. Inoltre, grazie ad un display LCD e ad un tastierino numerico sarà possibile scorrere e selezionare tra le melodie memorizzate nel codice.

Funzionamento

Una volta alimentato il progetto, il display LCD visualizzerà la schermata di defualt (Figura 1) in cui si chiede all'utente di scegliere una delle tracce premendo o il tasto 1 o il tasto 2 o il tasto 3 sul keypad. Premendo uno dei tasti si entrerà in un sotto-menu in cui sulla prima riga verrà visualizzato il titolo della traccia con affianco il relativo tasto tra parentesi quadre. Premendo di nuovo il tasto relativo alla traccia, il buzzer intonerà la melodia scelta, e sul display verrà visualizzato sulla prima riga "Hai scelto la traccia" e sulla seconda riga il titolo della traccia. Terminata la traccia, il display tornerà a visualizzare la schermata di default.

Figura 1: a sinistra la schermata di default, al centro il sotto-menu di selezione della traccia e a destra la visualizzazione della traccia selezionata

Nella seconda riga del sotto-menu sono presenti delle frecce con accanto dei numeri. Premendo sui tasti relativi a questi numeri ci si sposterà nei sotto-menu delle altre tracce. Mentre premendo il tasto 0, in qualsiasi dei sotto-menu, si tornerà alla schermata di default.

Schema a blocchi

Il progetto Jukeboxino è realizzato essenzialmente per mezzo di 4 blocchi principali come riportato in Figura 2.

Figura 2: schema a blocchi del progetto Jukeboxino

Analizziamo ora i singoli blocchi:

  • Arduino Uno Rev.3 è una scheda che tutti conoscono, una board per la prototipazione rapida in grado di fornire buone prestazioni ad un prezzo contenuto. Grazie alle numerose librerie integrabili con l'ambiente di sviluppo (IDE), è possibile utilizzare un gran numero di periferiche semplificando lo sviluppo del codice.
  • Display LCD a segmenti da 2 righe per 16 caratteri, con annesso modulo I2C, per poter visualizzare il menu di selezione della traccia. Per poter pilotare un tradizionale display LCD 16x2, il numero di pin da collegare può variare da 16 a 12 a seconda che si voglia comunicare in modalità 4 o 8 bit. Infatti, oltre alle 8 linee dati (DB0, ..., DB7) sono presenti 2 pin per l'alimentazione (VDD, GND), 1 pin per il controllo del contrasto dello schermo (V0),  2 pin di controllo (Enable e Register Select), 1 pin opzionale per la selezione lettura/scrittura (R/W), e 2 pin per la retroilluminazione dello schermo (A, K). Grazie al modulo adattatore/convertitore da bus parallelo a seriale I2C (Figura 3), è possibile utilizzare solo 2 pin (SDA, SCL) per controllare il display, più ulteriori 2 (VCC, GND) per l'alimentazione.

Figura 3: il modulo adattatore/convertitore da bus parallelo a seriale I2C utilizzato per semplificare il collegamento tra display LCD e scheda Arduino

  • Un buzzer anche noto in italiano come cicalino è un dispositivo audio di segnalazione. Può essere di tipo meccanico, elettromeccanico o piezoelettrico. Nel nostro caso si tratta della tipologia piezoelettrica. A seconda della frequenza del segnale inviato al buzzer, esso emetterà un differente suono. Utilizzando la funzione tone(pin,frequenza,durata) sarà possibile generare un'onda quadra della frequenza specificata (e duty cycle del 50%) su un pin. Se non viene specificata una durata, l'onda continuerà fino a una chiamata della funzione noTone().
  • Un tastierino numerico (keypad) con il quale selezionare il numero della traccia scelta. I pulsanti su un keypad sono disposti in righe e colonne. Nel caso del nostro progetto si è trattato di una tastiera 4x4, quindi con 4 righe e 4 colonne. Sotto ogni tasto c'è un interruttore a membrana. Ogni riga e colonna viene mostrata su un singolo pin, per un totale di 8 pin su una tastiera 4x4. Premendo un pulsante si chiude l'interruttore tra una colonna e un riga, consentendo alla corrente di scorrere. Arduino rileva quale pulsante è stato premuto rilevando il pin di riga e colonna collegati al pulsante.
  • Una breadboard.

Collegamenti

In Figura 4 vengono riportati i collegamenti tra i vari componenti del progetto. I colori dei collegamenti sono coerenti tra loro, nel senso che:

  • tutti i collegamenti di colore giallo rappresentano una connessione a GND;
  • tutti i collegamenti di colore blu rappresentano l'alimentazione VCC;
  • il collegamento color porpora connette il pin digitale di uscita 12 al terminale positivo del buzzer;
  • il colore rosso è stato utilizzato per connettere i pin del keypad ai pin d'ingresso della scheda Arduino. In particolare i pin 9, 8, 7, 6 sono stati associati alle righe del keypad, mentre i pin 5, 4, 3, 2 sono stati riservati alle colonne dello stesso;
  • infine i collegamenti di colore grigio e bianco sono stati dedicati per connettere i pin di controllo dell'adattatore I2C per display LCD, rispettivamente ai pin A5 e A4.

Figura 4: configurazione dei collegamenti tra i vari componenti utilizzati nel progetto

Analisi dello sketch

Analizziamo il codice dello sketch, suddividendolo in sezioni. Come al solito nella parte iniziale richiamiamo le librerie utilizzate nel progetto, quella per il keypad e quella per lo schermo LCD. Per implementare questo progetto abbiamo scelto di utilizzare un display LCD con interfaccia I2C, semplificando così il numero dei collegamenti, per questo occorre includere la libreria LiquidCrystal_I2C.h. Inoltre, andiamo a inizializzare la libreria attraverso il comando LiquidCrystal_I2C lcd(), facendo attenzione a modificare l'indirizzo del dispositivo da 0x3F a 0x27 (che sono i due valori di default) nel caso il primo non dovesse funzionare.

#include <Keypad.h> //Libreria keypad
#include <LiquidCrystal_I2C.h> // Libreria LCD I2C

LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE );

Passiamo quindi alla configurazione del keypad. Il keypad utilizzato nell'esempio è un 4x4, avente quindi 16 tasti, bisognerà allora apportare le modifiche opportune nel caso si utilizzi uno di dimensioni diverse (come un 4x3). Alle righe del keypad sono stati associati i pin digitali 6,7,8,9 mentre alle colonne i pin 5,4,3,2. Nel caso si volessero impiegare configurazioni di pin differenti, ricordarsi di modificare le relative righe di codice. [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2237 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend