
Sommario:
2025 Autore: John Day | [email protected]. Ultima modifica: 2025-01-23 14:49

Volevo creare un pianoforte che potesse suonare automaticamente ascoltando la mia musica istantaneamente. Quindi ho provato con arduino uno che avevo in giro. Potrebbe essere molto meglio con arduino zero usando una semplice libreria di frequenzimetri ii non ce l'avevo al momento e ho continuato con uno.
Fase 1: Teoria
Il pianoforte viene suonato abbinando la frequenza del cantante al pianoforte. Quindi dobbiamo campionare la frequenza del cantante e riprodurla in tempo reale. Uso un divisore di tensione da un trimpot poiché l'audio è ac e arduino non può gestire tensioni negative quindi utilizzare come riferimento la tensione fornita dal partitore di tensione e impostarla a 2,5v. L'ingresso è fornito sul pin A0 dell'arduino. Ho quindi programmato l'arduino per verificare quando la tensione è a livello di riferimento che ho misurato e chiamato inizialmente e quindi misurato l'intervallo di tempo tra la tensione di riferimento successiva e quindi calcolato la frequenza. viene utilizzata per memorizzare l'ampiezza istantanea del segnale audio per eliminare il rumore che ha un'ampiezza inferiore al valore di 15 adc o 0,0733 volt. Viene posto un limite alla frequenza in modo che valori estremi non interrompano la canzone.
Passaggio 2: materiale richiesto



1) Arduino Uno o equivalente
2) Buzzer piezoelettrico passivo o altoparlante con circuito amplificatore
3) Trimmer ad alta resistenza (assicurarsi che la corrente che lo attraversa a 5v sia piccola in pochi milliampere)
4) fili del ponticello
5) tagliere
6) Jack audio da 3,5 mm o un microfono con circuito amplificatore (ho usato il mio cellulare come amplificatore perché mi sono trovato troppo pigro per costruirne uno)
7) Telefono Android (per riprodurre l'audio)
8) cavo arduino (per programmarlo)
Passaggio 3: connessioni


1) Montare il trimpot sulla breadboard e fornirlo a massa e +5v da arduino utilizzando i cavi dei ponticelli.
2) Collegare la terra del jack da 3,5 mm al terzo pin del trimpot per funzionare come configurazione del divisore di tensione e canale al pin A0 di arduino.
3) Collegare la massa del cicalino alla massa di arduino e segnalare al pin 13 di arduino.
Passaggio 4: codice Arduino

Ecco il codice completo
Ho commentato alcune dichiarazioni di stampa seriale utilizzate per i test
uint64_t curtime=0, ltime=0;uint32_t freq=0; uint16_t iniziale, val, del=0; bool ultimo, curr; void setup() { // inserisci qui il tuo codice di setup, da eseguire una volta: delay(1000); /*Serial.begin(115200); ritardo(1000); Serial.println("sistema avviato");*/ initial = analogRead(A0); if(analogicoLeggi(A0)
void loop() { // inserisci qui il tuo codice principale, per eseguirlo ripetutamente: val=analogRead(A0); if(val>=initial)curr=1; altrimenti curr=0; del=(int)val-(int)initial; if(last==0 && curr==1){ curtime=micros(); freq=1000000/(2*(curtime-ltime)); /*Serial.print(freq, DEC); Serial.print("giù"); Serial.println(del);*/ if(freq>50&&freq15)tone(13, freq, 500); ritardo(100); ltime=micros(); ultimo=1; }
Passaggio 5: accendilo!

Collega il tuo telefono per riprodurre un po' di musica e se vuoi cantare puoi utilizzare tutti gli strumenti dell'app che possono essere scaricati su Play Store. Ecco il link
play.google.com/store/apps/details?id=com.pradhyu.alltoolseveryutility&hl=en
Dopo il download, apri l'opzione microfono e canta!
Ecco come funziona!
Consigliato:
Disinfettante automatico per le mani: 8 passaggi

Disinfettante automatico per le mani: la pandemia di COVID-19 è diventata qualcosa che il pubblico ha sentito molto spesso durante il 2020. Ogni cittadino che sente la parola "COVID-19" penserà immediatamente alla parola "pericoloso", "mortale", "tenere pulito". ", e altre parole. Questo COVID-19 ha anche
Dispenser automatico di disinfettante per le mani fai-da-te: 6 passaggi

Dispenser automatico di disinfettante per le mani fai-da-te: in questo progetto, costruiremo un distributore automatico di disinfettante per le mani. Questo progetto utilizzerà Arduino, sensore a ultrasuoni, pompa dell'acqua e disinfettante per le mani. Un sensore ad ultrasuoni viene utilizzato per verificare la presenza delle mani sotto l'uscita della macchina igienizzante
Spegnimento automatico a carica completa mobile: 20 passaggi

Spegnimento automatico della carica completa del cellulare: la ricarica del telefono cellulare si interrompe automaticamente quando è completamente carica. Non devi preoccuparti della durata della batteria anche se l'hai lasciata durante la notte. I telefoni cellulari sono alimentati dalle batterie. Sebbene le batterie siano pratiche da usare, anche il loro utilizzo richiede alcune precauzioni. Un ma
Atendente Automático Com Python No Google Colab: 5 passaggi

Atendente Automático Com Python No Google Colab: Olá pessoal! Tudo bem ?Meu nome é Guilherme, Nesse projeto nós vamos aprender como criar um ChatBot usando a Linguagem de programação Python e o Google Colab!Sou aluno da https://orbe.ai/ - Escola de Inteligência Artificial Infinita e esse projeto
Dispenser automatico di alcol in gel con Esp32: 9 passaggi

Dispenser automatico di alcol gel con Esp32: nel tutorial vedremo come realizzare un prototipo completo, per assemblare un distributore automatico di alcol gel con esp32, includerà l'assemblaggio passo-passo, il circuito elettronico e anche il codice sorgente spiegato tutto passo dopo passo fare un passo