Sommario:
- Passaggio 1: convertire la partitura musicale in note digitali: valori di ritardo
- Passaggio 2: convertire la partitura musicale in note digitali: valori Hertz
- Passaggio 3: progettazione del circuito
- Passaggio 4: caricamento del codice: istruzioni
- Passaggio 5: caricamento del codice: cosa significa tutto ciò?
- Passaggio 6: finito!
Video: Digitalizzare una canzone con Arduino: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:04
Volevo creare un progetto che unisse due delle mie materie preferite: scienza e musica. Ho pensato a tutti i modi in cui avrei potuto combinare questi due domini e ho pensato che sarebbe stato interessante far suonare ad Arduino Fur Elise mentre mostrava il tono della nota in Hertz. Ora, iniziamo a costruire!
Avrai bisogno di un Arduino Uno o Mega, molti cavi jumper, un cicalino piezoelettrico, una breadboard, uno schermo LCD 16 * 2 con tutti i pin del tergicristallo in posizione e un potenziometro da 10k (potresti anche sentirli chiamare potmeters). È meglio mettere insieme tutte queste forniture prima di iniziare la costruzione.
Passaggio 1: convertire la partitura musicale in note digitali: valori di ritardo
Ci sono due passaggi per trascrivere digitalmente una nota dalla partitura nel suo equivalente digitale. Per prima cosa, dovremo scrivere il tempo in cui la nota dura in millisecondi. Ho impiegato un grafico trovato online per questo compito. In base al fatto che una nota fosse una mezza nota, una semiminima, un'ottava nota, ecc., Ho trascritto la lunghezza della nota in millisecondi. Puoi vedere questi numeri nel mio codice come delay(); funzione e il numero tra parentesi sarà il valore di ritardo in millisecondi che abbiamo determinato in questo passaggio.
Passaggio 2: convertire la partitura musicale in note digitali: valori Hertz
Prima di iniziare questo passaggio, vorrei definire alcuni termini tecnici. Il "valore" di una nota può essere utilizzato in modo intercambiabile con le parole "altezza", "valore" e "nota". Ora devi leggere ogni nota della canzone dalla partitura. Dovrai quindi tradurre ogni nota in Hertz utilizzando una tabella da musica a Hertz, che puoi trovare facilmente online. Una cosa da ricordare è che il Do centrale è indicato come C4 sul tavolo e un'ottava più in alto è C5, e così via. Una volta che queste note sono state tutte trascritte in Hertz, inserirete i valori nella funzione tone(x, y, z); dove X è il numero di pin o const int, un modo per definire le variabili che spiegherò più avanti. Y sarà il valore Hertz che hai appena trascritto e Z sarà la durata della nota in millisecondi arrotondata al centesimo più vicino. Il ritardo(); i valori saranno la durata della nota. Ora progettiamo il circuito in grado di riprodurre la musica.
Passaggio 3: progettazione del circuito
Ora che abbiamo tradotto tutte le note in valori digitali che un computer può comprendere, è il momento di costruire il circuito. Inizia prendendo una breadboard e posizionando lo schermo LCD con il primo pin (GND) nella riga 14. Posiziona il cicalino dove preferisci e posiziona un potenziometro accanto ad esso. L'obiettivo è quello di allineare tutto, per ridurre al minimo l'ingombro dei fili. Posiziona Arduino accanto alla breadboard e collega il pin 5v alla guida positiva della breadboard e il pin di terra alla guida negativa. Ora siamo pronti per collegare i jumper tra Arduino e i componenti.
Ora parliamo dei pin sull'LCD e di come collegarli.
GND sta per terra, questo è il filo negativo in corrente continua. Collegare GND alla guida negativa della breadboard.
VCC sta per Voltage at the Common Collector, ed è qui che colleghi la tua fonte di alimentazione a 5 volt (il binario di alimentazione positivo).
VO sta per Contrasto, collegalo al pin centrale del potenziometro. Collegare il pin sinistro del potenziometro al binario di alimentazione positivo e il pin destro al binario di alimentazione di terra.
RS sta per Register Select e viene utilizzato da Arduino per indicare al display dove memorizzare i dati. Collega questo pin al pin 12 di Arduino.
RW è l'acronimo di Read/Write pin, che Arduino utilizza per verificare se lo schermo mostra ciò che è stato programmato per mostrare. Collega questo pin al binario negativo sulla breadboard.
E sta per Enable, che indica all'LCD quali pixel abilitare (accendere) o disabilitare (spegnere). Collega questo pin al pin 11 di Arduino.
D4, D5, D6 e D7 sono pin di visualizzazione che controllano i caratteri e le lettere visualizzati. Collegali rispettivamente ai pin 5, 4, 3 e 2 di Arduino.
Il pin A, a volte etichettato come LED, è l'anodo del LED per la retroilluminazione. Collegalo alla barra di alimentazione positiva con un filo o con un resistore da 220 ohm. Il resistore è migliore per un uso più lungo in quanto risparmia l'LCD, ma se il dispositivo non verrà utilizzato giorno e notte, non è necessario il resistore.
Il pin K, a volte anche (confusamente) etichettato come LED, è il pin di massa del LED. Collegalo alla sbarra di alimentazione di terra.
Passaggio 4: caricamento del codice: istruzioni
Collega il tuo Arduino alla porta USB del tuo computer. Carica il seguente codice utilizzando il programmatore IDE di Arduino.
#includere
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LCD a cristalli liquidi (rs, en, d4, d5, d6, d7);
void setup() {
// imposta il numero di colonne e righe del display LCD: lcd.begin(16, 2); // Stampa un messaggio sul display LCD. lcd.print("Passo Hertz:!"); ritardo(1000); void loop() { // riproduce e4 delay(600);//pausa per 0,6 secondi tone(10, 329.63, 300);//play e al cicalino al pin 10, dura 0,3 secondi lcd.print(" 329.63");//visualizza un messaggio sul display LCD "329.63"
ritardo (350); // ritardo per 0,35 secondi
lcd.clear();//cancella LCD e resetta per il messaggio successivo // riproduce d4# tone(10, 311.13, 300); lcd.print("311.13"); ritardo(350); lcd.clear(); // suona mi4 tone(10, 329.63, 300); lcd.print("329.63"); ritardo(350); lcd.clear(); // suona d4# tone(10, 311.13, 300); lcd.print("311.13"); ritardo(350); lcd.clear(); // suona mi4 tone(10, 329.63, 300); lcd.print("329.63"); ritardo(350); lcd.clear(); // suona il tono b3(10, 246,94, 300); lcd.print("246.94"); ritardo (400); lcd.clear(); // suona d4 tone(10, 293,66, 300); lcd.print("293.66"); ritardo (400); lcd.clear(); // suona il tono c4 (10, 261.63, 300); lcd.print("261.63"); ritardo (400); lcd.clear(); // suona un tono a3(10, 220, 900); lcd.print("220.0"); ritardo(1000); lcd.clear();//line60//helpsave//avrdude.failure.eeprom // riproduce il tono d3(10, 146.83, 300); lcd.print("146.63"); ritardo(350); lcd.clear(); //riproduci il tono f3(10, 174.61, 300); lcd.print("174.61"); ritardo (400); lcd.clear(); //riproduci un tono a3(10, 220, 300); lcd.print("220"); ritardo (400); lcd.clear(); // suona il tono b3(10, 246,94, 900); lcd.print("246.94"); ritardo(1000); lcd.clear();
// suona e3
tono(10, 164,81, 300); lcd.print("164.81"); ritardo (400); lcd.clear(); // suona g3# tone(10, 207.65, 300); lcd.print("207.65"); ritardo (400); lcd.clear(); // suona il tono b3(10, 246,94, 300); lcd.print("246.94"); ritardo (400); lcd.clear(); // suona il tono c4(10, 261.63, 900); lcd.print("261.63"); ritardo(1000); lcd.clear(); //riproduci e tone(10, 164.81, 300); lcd.print("164.81"); ritardo (400); lcd.clear(); // suona mi4 tone(10, 329.63, 300); lcd.print("329.63"); ritardo (400); lcd.clear(); // suona d4# tone(10, 311.13, 300); lcd.print("311.13"); ritardo (400); lcd.clear(); // suona mi4 tone(10, 329.63, 300); lcd.print("329.63"); ritardo (400); lcd.clear(); // suona d4# tone(10, 311.13, 300); lcd.print("311.13"); ritardo (400); lcd.clear(); // suona mi4 tone(10, 329.63, 300); lcd.print("329.63"); ritardo (400); lcd.clear(); // suona il tono b3(10, 246,94, 300); lcd.print("246.94"); ritardo (400); lcd.clear(); // suona d4 tone(10, 293,66, 300); lcd.print("293.66"); ritardo (400); lcd.clear(); // suona il tono c4(10, 261.63, 300); lcd.print("261.63"); ritardo (400); lcd.clear(); // suona un tono a3(10, 220, 900); lcd.print("220.0"); ritardo(1000); lcd.clear(); // suona d3 tone(10, 146.83, 300); lcd.print("146.83"); ritardo (400); lcd.clear(); // riproduce il tono f3(10, 174.61, 300); //eeprom 20--6 sì, flash 65--0 no lcd.print("174.61"); ritardo (400); lcd.clear(); // suona un tono a3(10, 220, 300); lcd.print("220.0"); ritardo (400); lcd.clear(); // suona il tono b3(10, 246,94, 900); lcd.print("246.94"); ritardo(1000); lcd.clear(); // riproduce il tono f3(10, 174.61, 300); lcd.print("174.61"); ritardo (400); lcd.clear(); // suona il tono c4 (10, 261.63, 300); lcd.print("261.63"); ritardo (400); lcd.clear(); // suona il tono b3(10, 246,94, 300); lcd.print("246.94"); ritardo (400); lcd.clear(); // suona un tono a3(10, 220, 900); lcd.print("220.0"); ritardo(1000); lcd.clear(); // suona il tono b3(10, 246,94, 300); lcd.print("246.94"); ritardo (400); lcd.clear(); // suona il tono c4(10, 261.63, 300); lcd.print("261.63"); ritardo (400); lcd.clear(); // suona d4 tone(10, 293,66, 300); lcd.print("293.66"); ritardo (400); lcd.clear(); // suona mi4 tone(10, 329.63, 900); lcd.print("329.63"); ritardo(1000); lcd.clear(); // suona il tono g3(10, 196, 300); lcd.print("196.0"); ritardo (400); lcd.clear(); // riproduce il tono f4(10, 349.23, 300); lcd.print("349,23"); ritardo (400); lcd.clear(); //riproduci tono mi4(10, 329.23, 300); lcd.print("329.23"); ritardo (400); lcd.clear(); // suona d4 tone(10, 293.63, 900); lcd.print("293.63"); ritardo(1000); lcd.clear(); // suona il tono mi3(10, 164.81, 300); lcd.print("164.81"); ritardo (400); lcd.clear(); // suona mi4 tone(10, 329.63, 300); lcd.print("329.63"); ritardo (400); lcd.clear(); // suona d4 tone(10, 293.63, 300); lcd.print("293.63"); ritardo (400); lcd.clear(); // suona il tono c4(10, 261.63, 900); lcd.print("261.63"); ritardo(1000); lcd.clear(); // suona d3 tone(10, 146.83, 300); lcd.print("146.83"); ritardo (400); lcd.clear(); // suona d4 tone(10, 293.63, 300); lcd.print("293.63"); ritardo (400); lcd.clear(); // suona il tono c4 (10, 261.63, 300); lcd.print("261.63"); ritardo (400); lcd.clear(); // suona il tono b3(10, 246,94, 900); lcd.print("246.94"); ritardo(1000); lcd.clear(); // suona mi4 tone(10, 329.63, 300); lcd.print("329.63"); ritardo (400); lcd.clear(); // suona d4# tone(10, 311.13, 300); lcd.print("311.13"); ritardo(350); lcd.clear(); // suona mi4 tone(10, 329.63, 300); lcd.print("329.63"); ritardo(350); lcd.clear(); // suona d4# tone(10, 311.13, 300); lcd.print("311.13"); ritardo(350); lcd.clear(); // suona mi4 tone(10, 329.63, 300); lcd.print("329.63"); ritardo(350); lcd.clear(); // suona il tono b3(10, 246,94, 300); lcd.print("246.94"); ritardo (400); lcd.clear(); // suona d4 tone(10, 293,66, 300); lcd.print("293.66"); ritardo (400); lcd.clear(); // suona il tono c4 (10, 261.63, 300); lcd.print("261.63"); ritardo (400); lcd.clear(); // suona un tono a3(10, 220, 900); lcd.print("220.0"); ritardo(1000); lcd.clear(); // suona d3 tone(10, 146.83, 300); lcd.print("146.83"); ritardo(350); lcd.clear(); //riproduci il tono f3(10, 174.61, 300); lcd.print("174.61"); ritardo (400); lcd.clear(); //riproduci un tono a3(10, 220, 300); lcd.print("220.0"); ritardo (400); // riproduci b3 lcd.clear(); tono (10, 246,94, 900); lcd.print("246.94"); ritardo(1000); lcd.clear(); // suona il tono mi3(10, 164.81, 300); lcd.print("164.81"); ritardo (400); lcd.clear(); // suona sol#3 tone(10, 207.65, 300); lcd.print("207.65"); ritardo (400); lcd.clear(); // suona il tono b3(10, 246,94, 300); lcd.print("246.94"); ritardo (400); lcd.clear(); // suona il tono c4(10, 261.63, 900); lcd.print("261.63"); ritardo(1000); ritardo(300); lcd.clear(); //riproduci il tono mi3(10, 164.81, 300); lcd.print("164.81"); ritardo (400); lcd.clear(); // suona mi4 tone(10, 329.63, 300); lcd.print("329.63"); ritardo (400); lcd.clear(); // suona d4# tone(10, 311.13, 300); lcd.print("311.13"); ritardo (400); lcd.clear(); // suona mi4 tone(10, 329.63, 300); lcd.print("329.63"); ritardo (400); lcd.clear(); // suona d4# tone(10, 311.13, 300); lcd.print("311.13"); ritardo (400); lcd.clear(); // suona mi4 tone(10, 329.63, 300); lcd.print("329.63"); ritardo (400); lcd.clear(); // suona il tono b3(10, 246,94, 300); lcd.print("246.94"); ritardo (400); lcd.clear(); // suona d4 tone(10, 293,66, 300); lcd.print("293.66"); ritardo (400); lcd.clear(); // suona il tono c4(10, 261.63, 300); lcd.print("261.63"); ritardo (400); lcd.clear(); // suona un tono a3(10, 220, 900); lcd.print("220.0"); ritardo(1000); lcd.clear(); // suona d3 tone(10, 146.83, 300); lcd.print("146.83"); ritardo (400); lcd.clear(); // riproduce il tono f3(10, 174.61, 300); lcd.print("174.61"); ritardo (400); lcd.clear(); // suona un tono a3(10, 220, 300); lcd.print("220.0"); ritardo (400); lcd.clear(); // suona il tono b3(10, 246,94, 900); lcd.print("246.94"); ritardo(1000); lcd.clear(); // riproduce il tono f3(10, 174.61, 300); lcd.print("174.61"); ritardo (400); lcd.clear(); // suona il tono c4 (10, 261.63, 300); lcd.print("261.63"); ritardo (400); lcd.clear(); // suona il tono b3(10, 246,94, 300); lcd.print("246.94"); ritardo (400); lcd.clear(); // suona un tono a3(10, 220, 900); lcd.print("220.0"); ritardo(1000); lcd.clear(); }
Passaggio 5: caricamento del codice: cosa significa tutto ciò?
Definiamo alcune funzioni in inglese, così puoi capire il codice.
tono (x, y, z); = suona un tono con un passo di y Hertz, su un cicalino al pin x, per z millisecondi.
lcd.print("XYZ"); = stampa un messaggio con i caratteri XYZ sullo schermo LCD. (es. visualizzare il passo Hertz)
ritardo(x); = pausa per x millisecondi.
const int X=Y = imposta una variabile costante X sul pin Y e usa X o Y per assegnare compiti al dispositivo.
lcd.clear(); = cancella lo schermo LCD e ripristina per un nuovo display
pinMode(X, USCITA); = impostare il pin X per la modalità di uscita
Una volta comprese tutte queste funzioni, puoi facilmente sostituire le variabili con i dati che raccogli durante la traduzione di una canzone e puoi quindi codificare la tua canzone!
Passaggio 6: finito!
O hai un Arduino che riproduce Fur Elise e visualizza i valori delle note in Hertz, oppure hai creato un Arduino che riproduce la melodia della canzone che hai scelto e mostra il testo che volevi mostrare. Grazie per aver visitato questo tutorial, e spero che questo progetto su Arduino.
Consigliato:
Come digitalizzare diapositive e negativi di pellicola con una reflex digitale: 12 passaggi (con immagini)
Come digitalizzare diapositive e negativi di pellicola con una reflex digitale: una configurazione versatile e stabile per la digitalizzazione di diapositive e negativi con una reflex digitale o qualsiasi fotocamera con un'opzione macro. Questa istruzione è un aggiornamento di Come digitalizzare i negativi da 35 mm (caricato a luglio 2011) con diversi miglioramenti per espandere la sua
Come riprodurre una canzone sul tuo Yamaha EZ-220: 5 passaggi
Come riprodurre una canzone sul tuo Yamaha EZ-220: questi passaggi ti aiuteranno a riprodurre la tua canzone usando il libro dei brani
Come codificare una canzone usando gli spartiti in Sonic Pi: 5 passaggi
Come codificare una canzone usando gli spartiti in Sonic Pi: questo istruttivo illustrerà alcuni passaggi di base e pezzi di codice da utilizzare quando si codifica una canzone in Sonic Pi usando gli spartiti! C'è un milione di altri pezzi di codice per cercare di aggiungere sapore al tuo pezzo finito, quindi assicurati di giocare anche intorno a te
Registrazione di una canzone su un iPad: 11 passaggi (con immagini)
Registrazione di una canzone su un iPad: una mia amica di recente ha chiesto come avrebbe potuto registrare alcune delle sue canzoni solo con una chitarra e un iPad. Le ho chiesto se avesse un altro hardware di registrazione come un microfono e un'interfaccia di registrazione. Sfortunatamente, la risposta è stata no, e lei no
Sveglia LED Sunrise con sveglia con canzone personalizzabile: 7 passaggi (con immagini)
Sveglia a LED all'alba con sveglia personalizzabile: la mia motivazione Quest'inverno la mia ragazza ha avuto molti problemi a svegliarsi al mattino e sembrava soffrire di SAD (disturbo affettivo stagionale). Mi accorgo anche di quanto sia più difficile svegliarsi d'inverno visto che il sole non è ancora arrivato