In questo progetto costruiremo un pezzo di intrattenimento usando Arduino. Abbiamo tutti l'abitudine di toccare Tavolo o Penna per creare musica casuale. Ovviamente potrebbe non essere considerato un buon manierismo, ma a tutti noi piace farlo almeno una volta. Quindi ho pensato di portarlo al livello successivo utilizzando la capacità di Arduino di suonare i toni. Una volta costruito questo progetto, sarai in grado di generare toni toccando con le dita qualsiasi cosa conduttiva e creare i tuoi ritmi, è come suonare il pianoforte sul palmo della mano. Suona bene, quindi costruiamolo.
Componenti richiesti:
I materiali necessari per questo progetto sono elencati di seguito, non è obbligatorio attenersi agli stessi. Una volta acquisito il concetto, puoi utilizzare il tuo modo di costruirlo.
- Arduini Pro Mini
- Altoparlante Peizo
- Sensore di flessione
- Guanti da dito
- Resistori 10K
- Transistor BC547
- Batteria 9V
Schema del circuito e spiegazione:
Lo schema del circuito per questo Arduino Palm Piano è mostrato di seguito.
Il progetto utilizza un totale di quattro sensori, ovvero due sensori flessibili e due coppie Darlington che agiscono come un sensore tattile. Abbiamo anche usato due resistori pull down R1 e R2 di valore 10k ciascuno, che fungeranno da resistori pull down per il sensore Flex. Qui il sensore Flex viene utilizzato per generare tre toni diversi utilizzando un dito, in base a quanto si è piegato. Quindi possiamo produrre 6 suoni usando due dita. Scopri qui il sensore Flex.
Coppia Darlington:
Prima di procedere è importante sapere cos'è un Darlington e come funziona esattamente nel nostro progetto. La coppia Darlington può essere definita come due transistor bipolari collegati in modo tale che la corrente amplificata dal primo sia ulteriormente amplificata dal secondo transistor. Una coppia Darlington è mostrata nell'immagine qui sotto:
Come mostrato sopra abbiamo utilizzato due transistor BC547 i cui collettori sono legati per raccogliersi e l'emettitore del primo transistor è collegato alla Base del secondo transistor. Questo circuito funge da amplificatore con un guadagno, il che significa che qualsiasi piccolo segnale dato alla base del primo transistor è sufficiente per polarizzare la base del secondo transistor. Il nostro corpo agisce come un terreno qui, quindi ogni volta che tocchiamo la base del transistor il secondo transistor viene polarizzato. Usando questo a nostro favore abbiamo costruito il sensore tattile per questo progetto.
I pin numero 2 e 3 sono i pin di interruzione su Arduino che verranno tirati in alto utilizzando resistori di pull-up interni e quindi questi pin verranno tenuti a terra ogni volta che l'interruttore Darlington si chiude. In questo modo ogni volta che tocchiamo il filo (dalla base del 1 ° transistore) un interrupt verrà attivato dal Arduino.
L'uso di due dita può produrre solo due tipi di toni, quindi ho anche aggiunto un sensore di flessione che altererà il tono in base a quanto è piegato. Ho programmato per produrre tre toni diversi per dito in base a quanto il dito (sensore di flessione) è piegato. È possibile aumentare il numero se si desidera avere più toni a portata di mano.
Ho realizzato la scheda completa su una scheda perf in modo che si adatti facilmente ai miei palmi, ma puoi anche usare una breadboard. Assicurati solo che il tuo corpo tocchi il suolo del circuito ad un certo punto. Una volta saldato tutto, dovrebbe assomigliare a questo
Ho usato due guanti da dito per fissare i fili della coppia Darlington e il sensore di flessione in posizione come mostrato sopra. Puoi venire con la tua idea (meglio se possibile) per fissarli in posizione mentre suoni i tuoi toni.
Programmazione Arduino:
Il programma per questo Arduino Tap Tone Generator è piuttosto semplice. Dobbiamo solo fare attenzione alle interruzioni dai fili Darlington e se ne trova uno dobbiamo riprodurre il tono che dipende da quanto il sensore di flessione è piegato. Il codice completo è fornito alla fine di questo post, ma di seguito ho spiegato alcune parti importanti.
Nota: questo programma funziona con l'aiuto della libreria "pitches.h". Quindi assicurati di aver aggiunto il file di intestazione al tuo programma prima di compilarlo. Puoi scaricare il file di intestazione pitches.h da qui.
Nella funzione di configurazione , inizializziamo i pin 2 e 3 come Input con resistenze di pull-up. Li dichiariamo anche come pin di interrupt ed eseguiamo il tone1 () quando c'è un interrupt sul pin 2 e la funzione tone2 () quando c'è un interrupt sul 3 ° pin. Questi interrupt verranno attivati ogni volta che questi pin diventano LOW dal loro stato di pull-up.
void setup () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, LOW); attachInterrupt (digitalPinToInterrupt (3), tone2, LOW); Serial.begin (9600); }
All'interno della funzione loop , controlliamo costantemente quanto è piegato il sensore di flessibilità. Il mio FlexSensor 1, ad esempio, ha dato valori intorno a 200 se lasciato piatto ed è sceso fino a 130 quando l'ho piegato al massimo, quindi ho mappato il valore da 200 a 130 da 1 a 3 poiché devo giocare 3 tipi diversi di toni. Devi modificare queste due linee in base ai valori del sensore Flex e al numero di toni.
void loop () {flexSensor1 = map (analogRead (A0), 200,130,1,3); // Mappare con i propri valori in base al sensore di flessione flexSensor2 = map (analogRead (A1), 170,185,1,3); // Mappa con i tuoi valori in base al tuo sensore di flessione}
Come abbiamo visto in precedenza, la funzione tone1 () verrà eseguita quando viene rilevato un interrupt sul pin 2. Quello che accade all'interno della funzione tone1 () è mostrato sopra. Guardiamo i valori di FlexSensor1 e suoniamo un tono basato sul valore flexSesnor. I toni verranno riprodotti utilizzando la funzione Tono di Arduino. Abbiamo spiegato la funzione tone () nel nostro progetto precedente.
void tone1 () {if (flexSensor1 == 1) tone (8, NOTE_D4,50); altrimenti if (flexSensor1 == 2) tone (8, NOTE_A3,50); altrimenti if (flexSensor1 == 3) tone (8, NOTE_G4,50); altro tono (8, NOTE_D4,50); }
La riga sotto è usata per suonare il tono. È possibile riprodurre qualsiasi tono disponibile nel file di intestazione "pitches.h". La riga sopra, ad esempio, riproduce NOTE_A3 sul pin per una durata di 50 milli secondi.
tono (8, NOTE_A3,50); // tono (PinNum, nome nota, durata);
Lavorando:
Una volta che l'hardware è pronto, carica il codice e montalo sulle dita. Assicurati che il tuo corpo tocchi il suolo del circuito ad un certo punto. Ora tocca semplicemente qualsiasi materiale conduttivo o il tuo corpo e dovresti essere in grado di sentire il rispettivo tono. Puoi riprodurre la tua melodia o musica toccando a intervalli e posizioni diverse.
Il video sotto mostra il funzionamento completo del progetto. Spero che ti sia piaciuto costruire il progetto, eventuali suggerimenti o domande possono essere pubblicati nella sezione commenti qui sotto. Controlla anche il nostro Arduino Audio Player e Arduino Tone Generator Project.