In questo quarto episodio vediamo un esempio applicativo nel quale si può creare, a partire da una scheda Freedom NXP, un brano musicale e imparare a suonare semplici melodie. Vedremo anche come convertire un file MIDI in codice utilizzabile con MicroPython, grazie al tool Online Sequencer disponibile in rete.
Per prima cosa, apriamo Visual Studio Code e premiamo il pulsante nell’angolo in basso a sinistra, selezionando "Crea un nuovo progetto MicroPython".
Scegliamo poi "Crea un progetto MicroPython vuoto", assegniamo un nome al progetto e selezioniamo una posizione in cui salvarlo.
Ora colleghiamo la scheda al computer e premiamo il pulsante in basso a sinistra per selezionare la porta COM a cui la scheda stessa è collegata.
Come configurare l'hardware
A questo punto, configuriamo l'hardware. Collegheremo un buzzer a un pin PWM (Pulse Width Modulation) della scheda. Un buzzer, o cicalino, è un dispositivo di segnalazione audio. Può essere meccanico, elettromeccanico o piezoelettrico e viene utilizzato in vari dispositivi per segnalare eventi acusticamente, come allarmi, timer o per fornire feedback acustici in applicazioni come i computer.
Un pin PWM , in generale, può essere utilizzato per generare un segnale digitale che varia la sua larghezza dell'impulso, creando così un'uscita "analogica apparente". Questo significa che, invece di avere solo due stati (alto o basso), il pin può simulare livelli di tensione intermedi, variando il rapporto tra il tempo in cui il segnale è alto (duty cycle) e il periodo totale del segnale. Il pin PWM è comunemente utilizzato per il controllo della luminosità dei LED, della velocità dei motori, degli attuatori, e per la generazione di segnali analogici, come nel nostro caso.
La scrittura del codice
Nello scrivere il codice, per prima cosa dobbiamo importare alcuni moduli, poi definiremo il pin per il buzzer. Passiamo quindi a definire le funzioni Tone, noTone e Delay: sono funzioni di Arduino che semplificano la riproduzione di note musicali, e dobbiamo ricrearle in MicroPython.
Dobbiamo quindi definire un dizionario contenente le note musicali sotto forma di frequenze. Una classe chiamata player conterrà alcuni metodi utili per leggere la sequenza MIDI e riprodurla in uscita sul buzzer.
