Sommario:
- Forniture
- Passaggio 1: Panoramica
- Passaggio 2: assemblaggio del circuito
- Passaggio 3: come funziona il circuito
- Passaggio 4: come funziona il codice
- Passaggio 5: programmare una canzone
- Passaggio 6: feedback
Video: Creare canzoni con un Arduino e un motore CC: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
L'altro giorno, mentre scorrevo alcuni articoli su Arduino, ho notato un progetto interessante che utilizzava motori passo-passo controllati da Arduino per creare brevi melodie. L'Arduino utilizzava un pin PWM (Pulse Width Modulation) per far funzionare il motore passo-passo a frequenze specifiche, corrispondenti alle note musicali. Cronometrando quali frequenze suonavano quando, si poteva sentire una melodia chiara dal motore passo-passo.
Tuttavia, quando l'ho provato da solo, ho scoperto che il motore passo-passo che ho non può ruotare abbastanza velocemente per creare un tono. Invece, ho usato un motore DC, che è relativamente semplice da programmare e collegare a un Arduino. Un comune IC L293D può essere utilizzato per pilotare facilmente il motore da un pin PWM Arduino e la funzione tone() nativa in Arduino può generare la frequenza necessaria. Con mia grande sorpresa, non ho trovato alcun esempio o progetto online che utilizza un motore CC, quindi questo Instructables è la mia risposta per rimediare a questo. Iniziamo!
P. S. Presumo che tu abbia già una certa esperienza con Arduino e abbia familiarità con il suo linguaggio di programmazione e hardware. Dovresti sapere cosa sono gli array, cos'è il PWM e come usarlo e come funzionano la tensione e la corrente, solo per citarne alcune. Se non ci sei ancora o hai appena iniziato Arduino, non preoccuparti: prova questa pagina introduttiva dal sito Web ufficiale di Arduino e torna quando sei pronto.:)
Forniture
- Arduino (ho usato un UNO ma puoi usare un Arduino diverso se lo desideri)
- Motore standard 5V DC, preferibilmente uno in grado di avere una ventola collegata (vedere l'immagine in "Assemblaggio del circuito"
- L293D IC
- Tanti pulsanti quante sono le note della canzone che vuoi suonare
- tagliere
- Cavi per ponticelli
Passaggio 1: Panoramica
Ecco come funziona il progetto: Arduino genererà un'onda quadra a una data frequenza, che emetterà all'L293D. L'L293D è collegato a un alimentatore esterno che utilizza per alimentare il motore alla frequenza data da Arduino. Impedendo all'albero del motore CC di ruotare, si può sentire il motore spegnersi e accendersi alla frequenza, che produce un tono o una nota. Possiamo programmare Arduino per riprodurre le note quando vengono premuti i pulsanti o per riprodurle automaticamente.
Passaggio 2: assemblaggio del circuito
Per assemblare il circuito, segui semplicemente lo schema di Fritzing sopra.
Mancia: La nota del motore si sente meglio quando l'albero non gira. Ho messo una ventola sull'albero del mio motore e ho usato del nastro adesivo per tenere ferma la ventola mentre il motore funzionava (vedi foto). Ciò ha impedito all'albero di girare e ha prodotto un tono chiaro e udibile. Potrebbe essere necessario apportare alcune modifiche per ottenere un tono pulito dal motore.
Passaggio 3: come funziona il circuito
L293D è un IC utilizzato per pilotare dispositivi ad alta tensione e corrente relativamente alta come relè e motori. L'Arduino non è in grado di pilotare la maggior parte dei motori direttamente dalla sua uscita (e l'EMF posteriore del motore può danneggiare i circuiti digitali sensibili di Arduino), quindi un IC come L293D può essere utilizzato con un alimentatore esterno per guidare facilmente il motore CC. L'immissione di un segnale nell'L293D emetterà lo stesso segnale al motore CC senza rischiare di danneggiare l'Arduino.
Sopra c'è uno schema di piedinatura/funzionale dell'L293D dalla sua scheda tecnica. Poiché stiamo guidando solo 1 motore (l'L293D può guidarne 2), abbiamo bisogno solo di un lato dell'IC. Il pin 8 è alimentazione, i pin 4 e 5 sono GND, il pin 1 è l'uscita PWM dall'Arduino e i pin 2 e 7 controllano la direzione del motore. Quando il pin 2 è ALTO e il pin 7 è BASSO, il motore gira in un senso e quando il pin 2 è BASSO e il pin 7 è ALTO, il motore gira nell'altro senso. Dal momento che non ci interessa in che modo gira il motore, non importa se i pin 2 e 7 sono LOW o HIGH, purché siano diversi l'uno dall'altro. I pin 3 e 6 si collegano al motore. Se lo desideri, puoi collegare tutto all'altro lato (pin 9-16), ma tieni presente che i pin di alimentazione e PWM cambiano posizione.
Nota: se stai usando un Arduino che non ha abbastanza pin per ogni pulsante, puoi usare una rete di resistori per connettere tutti gli switch a un pin analogico, come in questo instructables. Il modo in cui funziona è al di fuori dello scopo di questo progetto, ma se hai mai usato un DAC R-2R dovresti trovarlo familiare. Si noti che l'utilizzo di un pin analogico richiederà la riscrittura di grandi porzioni del codice, poiché la libreria Button non può essere utilizzata con pin analogici.
Passaggio 4: come funziona il codice
Per semplificare la gestione di tutti i pulsanti, ho utilizzato una libreria chiamata "Button" di madleech. Ho incluso la libreria per prima cosa. Successivamente, nelle righe 8-22, ho definito le frequenze per le note necessarie per suonare Twinkle, Twinkle, Little Star (la canzone di esempio), il pin che userò per pilotare l'L293D e i pulsanti.
Nella funzione di configurazione, ho inizializzato la seriale, i pulsanti e ho impostato il pin del driver per l'L293D in modalità di uscita.
Infine, nel ciclo principale ho verificato se è stato premuto un pulsante. In caso affermativo, Arduino riproduce la nota corrispondente e stampa il nome della nota sul monitor seriale (utile per sapere quali note sono sulla breadboard). Se viene rilasciata una nota, l'arduino interrompe qualsiasi suono con noTone().
Sfortunatamente, a causa del modo in cui è strutturata la libreria, non sono riuscito a trovare un modo per verificare se un pulsante è stato premuto o rilasciato in modo meno dettagliato rispetto all'utilizzo di 2 condizionali per nota. Un altro difetto di questo codice è che se dovessi premere due pulsanti contemporaneamente e poi rilasciarne uno, entrambe le note verrebbero fermate, perché noTone() interrompe qualsiasi nota generata indipendentemente da quale nota l'ha attivata.
Passaggio 5: programmare una canzone
Invece di utilizzare i pulsanti per riprodurre le note, puoi anche programmare Arduino per riprodurre automaticamente una melodia. Ecco una versione modificata del primo sketch che riproduce Twinkle, Twinkle, Little Star sul motore. La prima parte dello schizzo è la stessa: definire le frequenze delle note e il tonePin. Arriviamo alla nuova parte a bpm="100". Ho impostato i battiti al minuto (bpm), quindi uso un po' di matematica per calcolare il numero di millisecondi per battito a cui il bpm corrisponde. Per fare questo, ho usato una tecnica chiamata analisi dimensionale (non preoccuparti, non è così difficile come sembra). Se hai mai seguito un corso di chimica al liceo, hai sicuramente usato l'analisi dimensionale per convertire tra le unità. I floats() sono lì per garantire che nulla nell'equazione sia arrotondato fino alla fine per la precisione.
Dopo aver ottenuto il numero di ms/battito, l'ho diviso o moltiplicato in modo appropriato per trovare i valori in millisecondi delle diverse durate delle note trovate nella musica. Quindi creo un array di ogni nota in ordine cronologico e un altro con la durata di ogni nota. È fondamentale che l'indice di ogni nota corrisponda all'indice della sua durata, altrimenti la tua melodia suonerà a vuoto. Ho inserito le note per Twinkle, Twinkle, Little Star qui come esempio, ma puoi provare qualsiasi canzone o sequenza di note che desideri.
La vera magia avviene nella funzione loop. Per ciascuna delle note, suono il tono per un tempo che ho specificato nell'array beat_values. Invece di usare il ritardo qui, che farebbe sì che il tono non venga riprodotto, ho registrato il tempo dall'avvio del programma con la funzione millis() e lo ho sottratto dall'ora corrente. Quando il tempo supera il tempo in cui ho specificato la nota per durare nell'array beat_values, interrompo la nota. Il ritardo dopo il ciclo for è lì per aggiungere uno spazio tra le note, assicurando che le note successive con la stessa frequenza non si fondono insieme.
Passaggio 6: feedback
Questo è tutto per questo progetto. Se c'è qualcosa che non capisci, o se hai qualche suggerimento, non esitare a contattarmi. Poiché questo è il mio primo Instructables, apprezzerei molto commenti e suggerimenti su come migliorare questo contenuto. Arrivederci alla prossima!
Consigliato:
Motore passo-passo controllato da motore passo-passo senza microcontrollore (V2): 9 passaggi (con immagini)
Motore passo-passo controllato da motore passo-passo senza microcontrollore (V2): in uno dei miei precedenti Instructables, ti ho mostrato come controllare un motore passo-passo usando un motore passo-passo senza microcontrollore. È stato un progetto veloce e divertente, ma è arrivato con due problemi che verranno risolti in questo Instructable. Quindi, spirito
Motore passo-passo controllato da motore passo-passo - Motore passo-passo come encoder rotativo: 11 passaggi (con immagini)
Motore passo-passo controllato da motore passo-passo | Motore passo-passo come encoder rotativo: hai un paio di motori passo-passo in giro e vuoi fare qualcosa? In questo Instructable, utilizziamo un motore passo-passo come encoder rotativo per controllare la posizione di un altro motore passo-passo utilizzando un microcontrollore Arduino. Quindi, senza ulteriori indugi, ge
Riproduci canzoni usando il motore passo-passo!!: 11 passaggi (con immagini)
Riproduci canzoni usando il motore passo-passo!!: Questo progetto riguarda la progettazione di una semplice interfaccia dinamica, che consentirà di interagire con un motore passo-passo in due modi diversi. La prima interfaccia controllerà la direzione e la velocità del motore passo-passo attraverso l'uso di un semplice GUI, che h
Tastiera MIDI Arduino con LED di insegnamento delle canzoni: 8 passaggi
Tastiera MIDI Arduino con LED di insegnamento della canzone: questo è un tutorial su come creare una tastiera MIDI, insieme a LED per insegnarti una canzone e un LCD per visualizzare quale canzone è selezionata. I LED possono guidarti su quali tasti premere per una particolare canzone. Seleziona la canzone con i tasti sinistro e destro
Come creare una suoneria dalle canzoni: 3 passaggi
Come creare suonerie dalle canzoni: Avrai bisogno di questo istruibile un telefono cellulare che riproduca file wav e hai un modo per collegarlo al tuo computer. Esempi di connessione potrebbero essere infrarossi, bluetooth, USB o un cavo dati per il tuo telefono. Dovrai anche avere Audacity