Sommario:

Microcontrollore Fabric Tone Generator in codice C: 8 passaggi (con immagini)
Microcontrollore Fabric Tone Generator in codice C: 8 passaggi (con immagini)

Video: Microcontrollore Fabric Tone Generator in codice C: 8 passaggi (con immagini)

Video: Microcontrollore Fabric Tone Generator in codice C: 8 passaggi (con immagini)
Video: Autosufficienza energetica: Collega Bluetti AC300 + fotovoltaico combatti la bolletta SP350 inverter 2024, Luglio
Anonim
Microcontrollore Fabric Tone Generator in codice C
Microcontrollore Fabric Tone Generator in codice C

Alla fine di ottobre dell'anno scorso, l'utente di interactables carmitsu mi ha inviato un messaggio dopo aver visto il mio synth per il pranzo. Dal suo messaggio: Insegno musica alle elementari. Suoniamo un sacco di musica per registratore. cioè i bambini suonano piccoli flauti…… ho diversi bambini con bisogni speciali che possono usare questi cartelloni neri con cerchi che hanno il nome della nota su di essi. Questi studenti spingono sui cerchi con i nomi delle note mentre il resto degli studenti suona una canzone… La maggior parte dei bambini con bisogni speciali può farlo abbastanza bene ea tempo con la musica. Quello che sto cercando è costruire un generatore di suoni molto semplice in modo che questi bambini possano suonare lo stesso tono di quelli suonati dagli studenti sui loro registratori. Vorrei essere solo pochi tiri. Ho pensato di poter attaccare una specie di piccolo pulsante alla parte inferiore dei loro cerchi rotondi in modo che quando li premono il suono uscisse da un piccolo altoparlante, abbastanza forte da poter sentire. Avendo una madre che fa l'insegnante e che gli piaceva la scuola, come potevo resistere? A dire il vero non potevo. Questa è praticamente una cronaca del progetto e le istruzioni su come costruirne uno.

Passaggio 1: l'inizio o perché non riuscivo ad attenermi all'analogico

L'inizio o perché non riuscivo ad attenermi all'analogico
L'inizio o perché non riuscivo ad attenermi all'analogico

Le cose buone iniziano nella pagina successiva. Se vuoi sapere come ho finito per usare le parti che ho fatto, continua a leggere. Il vero timer: Dopo aver riflettuto sul progetto, ho subito pensato al generatore di suoni piezoelettrico dal mio libro sugli amplificatori operazionali Forest Mims III. Sembrava una buona strada da percorrere, è solo un piezo, un IC 741 e un paio di componenti passivi. Nessun grosso problema vero? Beh, ha 2 problemi, 1) quando si preme l'interruttore, è possibile cambiare il tono 2) è quasi impossibile accordare. Il primo potrebbe probabilmente essere superato con una tecnologia antirimbalzo, anche se non sapevo come farlo senza aggiungere un altro contatore. Potrebbe anche essere un problema con l'utilizzo di un piezo. Il secondo problema è diventato ingombrante quando hai iniziato a provare a raggiungere un certo tono. E il 555? La scheda tecnica mostra una funzione di temporizzazione basata su resistori e condensatori. Il che è fantastico finché non inizi a digitare i valori reali delle parti del mondo reale, in quel momento scoprirai che raggiungere un tono di 440Hz inizia a diventare un po' difficile. Puoi usare i trim pot per sintonizzarti, ma nel tempo tendono a muoversi. Accordare costantemente lo strumento, compilato in cima a un rapido aumento del costo e della quantità di parti, e mia moglie che ha fatto il cambio di intonazione quando ha premuto il pulsante ha ucciso il 555 per questo progetto. Op-amp: Nessun problema, le persone hanno creato sintetizzatori con amplificatori operazionali da prima che io nascessi. Quanto può essere difficile realizzarne uno davvero semplice, con poche parti e note specifiche? Più difficile di quanto pensassi. La maggior parte dei progetti là fuori sono molto complicati per questo progetto. I designer di synth sono alla ricerca della forma d'onda/tono perfetta. Questo è direttamente in conflitto con un progetto che dovrebbe essere abbastanza economico per i budget della scuola o degli insegnanti. Costruire una tastiera è abbastanza facile, è solo un mucchio di resistori e potenza o un mucchio di diodi e potenza. È il resto della progettazione del circuito e il costo dei circuiti stampati personalizzati che inizia a sfuggire di mano a qualcuno a un livello di elettronica principiante. Ridefinizione del progetto: quindi il progetto è stato ridefinito prima ancora che iniziassi davvero. Avevo bisogno di qualcosa che potesse attivare un pin dell'altoparlante, in tempo, con la semplice pressione di un pulsante. Non volevo dover progettare e acquistare un PCB. Questo doveva usare il minor numero di componenti possibile ed essere assemblato come un kit per principianti. Mi ha guardato in faccia per tutto il tempo. Eh!! Microcontrollore! Microcontrollore: quindi dopo aver acquistato sia un kit Arduino Bare Bones di Modern Devices che una scheda Simple Target di Evil Mad Scientist e averli lasciati seduti sulla mia scrivania per mesi inutilizzati, ho avuto il progetto introduttivo perfetto. Ho iniziato a guardare il tempo necessario per mettere insieme entrambi, la curva di apprendimento per il codice, il costo, le parti aggiuntive necessarie e fargli fare quello che volevo e mi sono stabilito sulla scheda di destinazione. Il costo era abbastanza uniforme, $ 15 più un cavo FTDI da $ 20 per Arduino, $ 12 più un programmatore USBtinyISP da $ 22. Conoscevo già il C++ dal piccolo college che potevo sopportare e immaginavo che il C per i microcontrollori non sarebbe stato così male, mentre a parte lampeggiare una luce per assicurarmi di mettere insieme il mio kit correttamente, non avevo esperienza con Arduino. Entrambi potrebbero essere montati. È stato praticamente un lancio, quindi ho deciso per il minor numero di parti dei due, il tabellone di destinazione.

Passaggio 2: cosa ti serve Rev 1

Cosa ti serve Rev 1
Cosa ti serve Rev 1

Costo delle partiUSBtinyISP AVR Programmer Kit (USB SpokePOV Dongle)v2.0 $22.00https://www.adafruit.com/index.php?main_page=product_info&cPath=16&products_id=46Evil Mad Scientist laboratori ATmegaXX8 Mini Dev Kits $12Headers, DIP a 6 pin, 5-pk $2.75https://evilmadscience.com/tinykitlist/74-atmegaxx8Speaker (8-ohm Mini) $2.79https://www.radioshack.com/product/index.jsp?productId=2062406SPST Interruttori momentanei normalmente aperti (abbiamo usato 5) $3,49 (4pack) https://www.radioshack.com/product/index.jsp?productId=2062539 Portabatterie "AAA" $1,79https://www.radioshack.com/product/index.jsp?productId=2102735SPST Submini Slide Switch (opzionale per l'interruttore di alimentazione) $ 2,69 (2 pezzi) https://www.radioshack.com/product/index.jsp?productId=2062490LED e resistore (opzionale, se si desidera una luce di alimentazione) $ dovrebbe essere gratuito se sono in giroWire $ dovrebbe anche essere in giroSilver solder (se questo sta andando da qualche parte vicino ai bambini probabilmente non dovresti usare il piombo, i genitori diventano piuttosto strani su quel genere di cose;))Alcol (per ri spostare il flusso) Se si desidera risparmiare denaro in alcuni posti, non è necessario ottenere parti da RadioShack. L'ho fatto perché sono vicini e prevedibili.

Passaggio 3: assemblaggio Rev 1

Assemblaggio Rev 1
Assemblaggio Rev 1
Assemblaggio Rev 1
Assemblaggio Rev 1

Metti insieme le parti come mostrato. Assicurati di usare alcol denaturato e un pennello per il flusso quando hai finito per eliminare qualsiasi flusso dalla saldatura. Lo schema è di seguito per coloro che lo preferiscono. D1 e R1 possono essere quello che vuoi, è solo una luce di alimentazione. C1 serve solo a rendere la potenza un po' più consistente. Ho usato un 10uF. Questo schema è lo stesso per le versioni successive, basta sostituire i pulsanti con gli interruttori in tessuto. nell'ultima revisione ho aggiunto gli switch a PC4 e PC5 o ai pin 27 e 28.

Passaggio 4: cosa ti serve Rev 2

Cosa ti serve Rev 2
Cosa ti serve Rev 2

Quindi in pratica stai sostituendo i pulsanti di Radio Shack con quelli in tessuto fatti a mano. Hai bisogno di: più colori di tessuto, o un colore se vuoi che ogni nota sia dello stesso colore. La sezione trapuntatura del tuo negozio di tessuti più vicino è il posto migliore per ottenerla a buon mercato. I quarti di quilting sono $ 1,50 e puoi ottenere un sacco di interruttori da uno. Tessuto conduttivo, suggerisco il tessuto Flectron di LessEMF, costa $ 20 per un pezzo da 12 "x54" Occhielli per attaccare il filo al tessuto. Puoi trovarli nella maggior parte dei negozi di tessuti a buon mercato. JoAnn ha lo strumento e 25 per $ 2 Avrai bisogno di un martello per questo. Filo, ho usato 22 AWG, suggerisco più piccolo se ce l'hai. Fusione, per far aderire il tessuto colorato e conduttivo. Chiedi al negozio e probabilmente puoi acquistarlo dal cortile. Questo probabilmente funzionerebbe bene, anche se ti suggerisco di chiedere a qualcunoBatting, all'inizio ho usato una roba molto larga, poi sono passato a qualcosa di più stretto. Ti suggerisco di provarne un paio diversi finché non trovi quello che funziona meglio. Guaine termorestringenti, questo ha reso il tutto molto più gestibile. i fili termoretraibili insieme mentre si passano l'un l'altro e rimarranno molto meglio.

Passaggio 5: assemblaggio Rev 2

Assemblea Rev 2
Assemblea Rev 2
Assemblea Rev 2
Assemblea Rev 2
Assemblea Rev 2
Assemblea Rev 2

Stendete il tessuto multicolore uno sopra l'altro e ritagliate un quadrato, non deve essere perfetto. Stira il tessuto per ottenere eventuali pieghe, sovrapponili nuovamente uno sopra l'altro e assicurati che i bordi corrispondano tutti. Taglia tutti i bordi che non lo fanno. Taglia la parte superiore e inferiore arrotondata, lasciando dritti i lati sinistro e destro. Invertirai l'interruttore dopo aver cucito, quindi non arrotondare troppo i lati arrotondati e lasciare un'altezza sufficiente sui lati piatti per spingere facilmente l'interruttore quando hai finito. Arrotondare il lato piatto del primo e dell'ultimo interruttore. Passare alla macchina da cucire e unire due dei tondi in modo che il lato buono sia rivolto l'uno verso l'altro e cucire le parti piatte. Una volta che le parti superiori dei bottoni sono cucito, ritagliare i quadrati dal tessuto conduttivo e fondere un lato. Tagliare il filo a misura e spellare un'estremità. saldare il filo attorno a uno degli occhielli. (la saldatura non si attaccherà probabilmente all'occhiello) Tagliare una piccola fessura nel tessuto in un angolo e martellare l'occhiello per fissare il tessuto e il filo. rimuovere il supporto dalla fusione e fondere il tessuto conduttivo sul retro del tessuto colorato. Ripetere per tutti gli interruttori. Per semplificare le cose, puoi termorestringere i fili insieme ogni volta che un filo passa il filo per l'interruttore successivo. Prendi o fai un pezzo di tessuto della lunghezza del set di interruttori e taglia una striscia di tessuto conduttivo della lunghezza di esso. A differenza degli interruttori colorati, questo è un pezzo lungo. Questo sarà ciò che i pulsanti toccano per effettuare la connessione. Taglia una piccola fessura e attaccaci un filo con un occhiello, come le parti superiori degli interruttori colorate. Uniscilo al retro del tessuto inferiore. Cuci la parte superiore e inferiore insieme con il tessuto conduttivo rivolto verso l'esterno, usa un bastoncino per invertire il set dopo averlo cucito. Taglia alcuni piccoli fori nell'imbottitura, ho usato una bacchetta per ottenere un cerchio, quindi rimuovere le bacchette e fare il taglio. Tagliarli a forma e inserirli negli interruttori. Questo è ciò che tiene separato il tessuto conduttivo. Potrebbe essere più facile inserire l'imbottitura mentre si invertono gli interruttori anziché dopo. La roba che ho usato si è strappata abbastanza male mentre la stavo inserendo e ho dovuto ottenere un'imbottitura diversa. Infine aggancia i fili alla scheda bersaglio e sei a posto. La lunga striscia inferiore sarà rettificata.

Passaggio 6: cosa ti serve Rev 3

Cosa ti serve Rev 3
Cosa ti serve Rev 3

In Rev 3 ho reso gli interruttori indipendenti dal cablaggio. Questo ha risparmiato un sacco di tempo. Mi piace anche molto di più l'aspetto del risultato finale. Quindi, ecco le nuove parti di cui hai bisogno: Snaps, appena ricevuti da JoAnn's. Sono venuti con uno strumento di installazione non male per $ 7 Suggerirei invece uno degli strumenti a pinza dato che ho dovuto smontare il mio strumento per installare gli snap nel mezzo. Cucire sarebbe una buona alternativa, anche se impiegano più tempo per aderire. Filato conduttivo, Spark Fun ha cose che possono andare nella tua macchina da cucire. Ho dovuto andare molto lentamente nella mia macchina o il filo si sarebbe rotto. Il tuo chilometraggio può variare

Passaggio 7: assemblaggio Rev 3

Assemblaggio Rev 3
Assemblaggio Rev 3
Assemblaggio Rev 3
Assemblaggio Rev 3
Assemblaggio Rev 3
Assemblaggio Rev 3
Assemblaggio Rev 3
Assemblaggio Rev 3

Questa revisione è stata molto migliore della precedente in termini di tempo fino alla costruzione. Inoltre, avere interruttori rimovibili ha salvato la mia sanità mentale più di una volta. Inizia creando la base. È solo un quarto di quilt piegato a metà. Metti uno strato di imbottitura sulla parte superiore e cuci, lasciando un buco per capovolgerlo. Spingi la cosa attraverso il foro e fondamentalmente hai una cosa tipo cuscino. L'ho trapuntato così era più facile lavorarci. Usa filo normale e impazzisci. Ho fatto dei diamanti su questo, ma forse la prossima volta metterò un drago sul retro, o qualcosa di interessante. Ora, passiamo agli interruttori. Mi piace questo design perché puoi praticamente crearne un sacco in anticipo e usare solo quello che vuoi. inizia usando un pezzo di cartone, carta o tessuto di scarto e ritagliane una forma a pera. Usalo come guida per tagliare una parte superiore e una inferiore per ogni interruttore. Ho tagliato un colore per ogni fondo e un colore diverso per la parte superiore, ma puoi essere creativo e fare quello che vuoi. Riduci la tua guida a una forma di lecca-lecca che si adatterà facilmente all'interno dell'interruttore. Allunga il "bastone" in modo che possa avvolgere il bordo della "pera". Tagliare la forma dal tessuto fusore e conduttivo e fondere un lato del tessuto conduttivo. Rimuovere il supporto dal materiale di fusione e fonderlo sulla parte superiore del tessuto che sarà sul fondo e sul fondo del tessuto che sarà sulla parte superiore. Avvolgi la punta in più intorno alla parte superiore. Vai alla tua macchina da cucire e metti l'imbottitura con i fori tra il tessuto superiore e inferiore. Cucire all'esterno del tessuto conduttivo e saltare la parte "bastone" dell'interruttore. Ho scoperto che è possibile cucire il tessuto conduttivo superiore a quello inferiore creando un corto. È meglio non cucire attraverso il tessuto conduttivo. Attacca gli snap e l'interruttore è fatto. Ho trovato più semplice utilizzare lo snap maschio per tutte le connessioni inferiori/GND e lo snap femmina per tutte le parti superiori. Questo rende tutti gli interruttori intercambiabili. Il circuito: il problema del taglio dei round è che hai un sacco di bit in più. Ho preso i miei ritagli, ho fuso grandi pezzi di fusione in grandi pezzi di tessuto conduttivo e li ho usati per ritagliare i rettangoli più piccoli che ho usato come cuscinetti. Disponi approssimativamente i tuoi interruttori e unisci i pad alla base con spazio sufficiente per cucire una linea e avere uno scatto. Il piedino della macchina da cucire che ho usato non amava essere molto vicino allo scatto, quindi tienilo a mente e concediti un po' di spazio. Dato che ho un filo conduttivo che potrebbe andare nella mia macchina da cucire, ho appena cucito una linea da un pad all'altro e viceversa. Dovevo andare piano o il filo si sarebbe rotto, ma era molto più veloce del cucito a mano. Anche con il filo conduttivo sulla bobina e sull'ago, ho ottenuto una connessione davvero buona e solida. La roba si sfilaccia come un matto, ma un po 'di colla artigianale o Elmers lo risolve perfettamente. Cerca di tenere le linee ben lontane l'una dall'altra e non dovresti avere problemi. Assemblaggio finale: aggancia tutti i tuoi interruttori, collega la scheda, carica il codice e il gioco è fatto. Ho usato il filo per andare dalla tavola al pad e poi ho cucito a mano il filo alla base. Per la prossima versione, monterò la scheda in una scatola di plastica con bottoni automatici per fissarla alla base in modo che le dita oziose non la separino.

Passaggio 8: codice

Codice
Codice

Se non hai mai programmato un chip prima, questo è un compito alquanto arduo. Non aiuta che gli strumenti siano traballanti e la maggior parte delle volte devi eseguire la stessa operazione più volte. Le due migliori risorse che ho trovato per capire cosa sta succedendo sono la pagina per USBtinyISP, https://www.ladyada.net/make/usbtinyisp/ e il corso accelerato nella programmazione del giocattolo del rumore, http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html Questi dovrebbero essere in grado di iniziare.

A molte persone piace Arduino per questa codifica e non c'è niente di sbagliato nell'usarlo, tranne che sento che aggiunge molto peso a un programma normalmente semplice. Inoltre, conoscevo C e non conosco Arduino. Forse un giorno, se ci sarà tempo.:) Codice: {{{ #include //Usa un pin per accendere l'SPK /// Typedefs ////////// typedef unsigned char u8; int main(void) { u8 btnState0; u8 btnStato1; u8 btnStato2; u8 btnStato3; u8 btnStato4; u8 btnStato5; u8 btnStato6; DDRB = (1 << DDB6); //Imposta SPK per l'output PORTD =(1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4); //Imposta pulsante alto PORTC = (1 << PC4) | (1<PC6); TCCR2B = (1 << CS21); //Imposta il timer mentre (1) { btnState0 = ~PINC & (1 << PC5); btnState1 = ~PINC & (1 << PC4); btnState2 = ~PIND & (1 << PD0); btnState3 = ~PIND & (1 << PD1); btnState4 = ~PIND & (1 << PD2); btnState5 = ~PIND & (1 << PD3); btnState6 = ~PIND & (1 << PD4); if (btnState0) { if (TCNT2 >= 190) { PORTB ^= (1 << PD6); //Capovolgere SPK Pin TCNT2 = 0; } } if (btnState1) { if (TCNT2 >= 179) { PORTB ^= (1 << PD6); //Capovolgere SPK Pin TCNT2 = 0; } } if (btnState2) { if (TCNT2 >= 159) { PORTB ^= (1 << PD6); //Capovolgere SPK Pin TCNT2 = 0; } } if (btnState3) { if (TCNT2 >= 142) { PORTB ^= (1 << PD6); //Capovolgere SPK Pin TCNT2 = 0; } } if (btnState4) { if (TCNT2 >= 126) { PORTB ^= (1 << PD6); //Capovolgere SPK Pin TCNT2 = 0; } } if (btnState5) { if (TCNT2 >= 119) { PORTB ^= (1 << PD6); //Capovolgere SPK Pin TCNT2 = 0; } } if (btnState6) { if (TCNT2 >= 106) { PORTB ^= (1 << PD6); //Capovolgere SPK Pin TCNT2 = 0; } } } } }}} Da dove vengono le piazzole? Ci voleva un po' di matematica. Il timer dell'atmega 168 funziona a 1MHz. È troppo veloce per l'audio, quindi dobbiamo usare il prescaler /8. Quindi, poiché dobbiamo capovolgere il pin di uscita in alto e poi in basso per fare 1 ciclo, dobbiamo dividere la risposta per 2 per ottenere il passo giusto. La formula è simile a questa, Passo da inserire in code= (1000000/8)/(Target frequency*2) Per A(440) questo sarebbe 125000/880=142.045 o 142 per i nostri scopi, poiché il valore deve essere un numero intero. Le frequenze target delle note possono essere trovate praticamente ovunque online e generalmente sono tutte uguali. Voglio ancora aggiungere un'istruzione case invece di usare un mucchio di If e usare PWM per controllare meglio il volume e l'intonazione dell'altoparlante, ma per ora funziona.

Consigliato: