Satura rādītājs:

Mikrokontrollera auduma toņu ģenerators C kodā: 8 soļi (ar attēliem)
Mikrokontrollera auduma toņu ģenerators C kodā: 8 soļi (ar attēliem)

Video: Mikrokontrollera auduma toņu ģenerators C kodā: 8 soļi (ar attēliem)

Video: Mikrokontrollera auduma toņu ģenerators C kodā: 8 soļi (ar attēliem)
Video: I Bought A DESTROYED Hellcat Daytona At Salvage Auction! 2024, Jūlijs
Anonim
Mikrokontrollera auduma toņu ģenerators C kodā
Mikrokontrollera auduma toņu ģenerators C kodā

Pagājušā gada oktobra beigās pamācību lietotājs carmitsu man nosūtīja ziņu, redzot manu pusdienu kastes sintezatoru. No viņa vēstījuma: es mācu mūziku pamatskolā. Mēs spēlējam daudz ierakstu mūzikas. i., bērni spēlē mazas flautas …… Man ir vairāki bērni ar īpašām vajadzībām, kuri var izmantot šos melnos plakātu dēļus ar apļiem, uz kuriem ir piezīmes nosaukums. Šie skolēni spiež uz apļiem ar piezīmju nosaukumiem, bet pārējie skolēni spēlē dziesmu….. Lielākā daļa bērnu ar īpašām vajadzībām to var izdarīt diezgan labi un savlaicīgi ar mūziku. Es vēlos izveidot ļoti vienkāršu skaņas ģeneratoru, lai šie bērni varētu atskaņot tādu pašu piķi kā tie, ko studenti spēlē savos ierakstītājos. Es būtu tikai daži laukumi. Es domāju, ka varētu apaļo apļu apakšā piestiprināt kādu mazu pogu, lai, piespiežot tos, skaņa iznāktu no maza skaļruņa, pietiekami skaļi, lai viņi varētu dzirdēt. Ja man bija skolotāja māte un man patika skola, kā es varētu pretoties? Patiesību sakot, es nevarēju. Šī ir gandrīz projekta hronika un norādījumi par to, kā izveidot savu.

1. solis: sākums vai kāpēc es nevarēju pieturēties pie analoga

Sākums vai kāpēc es nevarēju pieturēties pie analoga
Sākums vai kāpēc es nevarēju pieturēties pie analoga

Labās lietas sākas nākamajā lapā. Ja vēlaties uzzināt, kā es beidzot izmantoju daļas, kuras es darīju, lasiet tālāk. Patiesais taimeris: Pēc projekta domāšanas es uzreiz domāju par pjezo toņu ģeneratoru no manas op-amps Forest Mims III grāmatas. Šķiet, ka tas ir labs veids, kā iet, tas ir tikai pjezo, 741 IC un pāris pasīvi komponenti. Nav liela darījuma, vai ne? Nu, tam ir 2 problēmas, 1) nospiežot slēdzi, ir iespējams mainīt piķi 2) to ir sasodīti gandrīz neiespējami noregulēt. Pirmo, iespējams, varētu pārvarēt, izmantojot kādu debounce tehnoloģiju, lai gan es nezināju, kā to izdarīt, nepievienojot citu skaitītāju. Tā varētu būt arī problēma, izmantojot pjezo. Otrais jautājums kļuva tikpat smags, kad sākāt mēģināt trāpīt noteiktā laukumā. Kā ir ar 555? Datu lapa parāda laika aiztures funkciju, kuras pamatā ir rezistori un kondensatori. Tas ir lieliski, līdz sākat rakstīt reālās pasaules daļu faktiskās vērtības, un tad jūs pamanīsit, ka 440 Hz piķa sasniegšana kļūst nedaudz sarežģīta. Lai to noregulētu, varat izmantot apdares podus, taču laika gaitā tie mēdz kustēties. Pastāvīgi pielāgojot instrumentu, kas tika apkopots papildus straujam detaļu izmaksu un daudzuma pieaugumam, un mana sieva, mainot piķi, nospiežot pogu, šim projektam nogalināja 555. Op-amp: Nav problēmu, cilvēki ir radījuši sintezatorus ar op-amps kopš manas dzimšanas. Cik grūti varētu būt izveidot patiešām vienkāršu, ar dažām daļām un konkrētām piezīmēm? Grūtāk, nekā es domāju. Lielākā daļa tur esošo dizainu šim projektam ir ļoti sarežģīti. Synth dizaineri meklē ideālu viļņu formu/toni. Tas ir tieši pretrunā ar projektu, kas, domājams, ir pietiekami lēts skolu vai skolotāju budžetam. Tastatūras izveide ir pietiekami vienkārša, tas ir tikai rezistoru un jaudas ķekars vai diodes un jauda. Tas ir pārējais shēmas dizains un pielāgoto PCB izmaksas, kas sāk izkļūt no rokas kādam elektronikas sākumā. Projekta pārdefinēšana: Tātad projekts tika no jauna definēts, pirms es pat īsti sāku. Man vajadzēja kaut ko tādu, kas ar pogas nospiešanu savlaicīgi varētu pārslēgt skaļruņa tapu. Es negribēju, lai man būtu jāprojektē un jāiegādājas PCB. Tam bija jāizmanto pēc iespējas mazāk sastāvdaļu, un tas bija jāsamontē kā iesācēju komplekts. Tas visu laiku skatījās man sejā. Duh !! Mikrokontrolleris! Mikrokontrolleris: Tātad, iegādājoties gan Modern Devices Bare Bones Arduino komplektu, gan Evil Mad Scientist Simple Target Board un ļaujot viņiem mēnešiem ilgi sēdēt uz mana galda, kad tos neizmantoja, man bija ideāls ievadprojekts. Es sāku aplūkot laiku, kas nepieciešams, lai saliktu abus kopā, koda apguves līkni, izmaksas, nepieciešamās papildu detaļas un likt tai darīt to, ko es vēlos, un nokārtot uz mērķa dēļa. Izmaksas bija diezgan vienmērīgas, 15 USD plus 20 USD FTDI kabelis Arduino, 12 USD plus 22 USD USBtinyISP programmētājs. Es jau zināju C ++ no mazās koledžas, kuru es varētu izturēt, un sapratu, ka mikrokontrolleru C nebūtu tik slikti, bet, izņemot gaismas mirgošanu, lai pārliecinātos, ka es pareizi saliku komplektu, man nebija Arduino pieredzes. Abus varēja uzstādīt. Tas bija diezgan daudz mest uz augšu, tāpēc es nolēmu par mazāk daļām no diviem, mērķa kuģa.

2. darbība. Kas jums nepieciešams 1. red

Kas jums nepieciešams Rev 1
Kas jums nepieciešams Rev 1

Daļu izmaksasUSBtinyISP AVR programmētāju komplekts (USB SpokePOV dongle) v2.0 $ 22.00 https://www.adafruit.com/index.php? Main_page = product_info & cPath = 16 & products_id = 46 5-pk $ 2,75https://evilmadscience.com/tinykitlist/74-atmegaxx8Speaker (8-omu Mini) $ 2,79https://www.radioshack.com/product/index.jsp? ProductId = 2062406SPST Parasti atvērti mirkļa slēdži (mēs izmantojām 5) 3,49 ASV dolāri (4 iepakojumi) https://www.radioshack.com/product/index.jsp?productId=2062539"AAA "akumulatora turētājs 1,79 ASV dolāri Submini slīdnes slēdzis (pēc izvēles barošanas slēdzim) 2,69 USD (2 iepakojumi) ja viņi guļ apkārt, vadam $ arī vajadzētu gulēt apkārt sudraba lodēšanai (ja tas notiek jebkur bērnu tuvumā, jūs, iespējams, nedrīkstat izmantot svinu, vecāki par šādu lietu kļūst diezgan dīvaini;)) Alkohola berzēšana (lai atkārtoti pārvietošanās plūsma) Ja vēlaties, lai dažas vietas ietaupītu naudu, jums nav jāiegādājas detaļas no RadioShack. Es to darīju, jo viņi ir tuvi un paredzami.

3. darbība: montāža 1. red

Montāža 1. red
Montāža 1. red
Montāža 1. red
Montāža 1. red

Salieciet detaļas kopā, kā parādīts attēlā. Kad esat pabeidzis, noteikti izmantojiet berzes spirtu un plūsmas suku, lai atbrīvotos no jebkādas plūsmas no lodēšanas. Shēma ir zemāk tiem, kas to izvēlas. D1 un R1 var būt viss, ko vēlaties, tā ir tikai strāvas gaisma. C1 ir tikai, lai palīdzētu padarīt jaudu nedaudz konsekventāku. Es izmantoju 10uF. Šī shēma ir tāda pati jaunākajām versijām, vienkārši nomainiet spiedpogas uz auduma slēdžiem. pēdējā pārskatīšanā es pievienoju slēdžus PC4 un PC5 vai tapām 27 un 28.

4. darbība. Kas jums nepieciešams 2. red

Kas jums nepieciešams Rev 2
Kas jums nepieciešams Rev 2

Tātad būtībā jūs nomaināt Radio Shack pogas ar rokām darinātiem audumiem. Jums ir nepieciešams: vairākas auduma krāsas vai viena krāsa, ja vēlaties, lai katra piezīme būtu vienāda. Jūsu tuvākā audumu veikala segas sadaļa ir labākā vieta, kur to iegādāties lēti. Segas ceturtdaļas ir 1,50 ASV dolāri, un jūs varat iegūt tonnu slēdžu no viena. Vadītspējīgs audums, es iesaku Flectron audumu no LessEMF, tas ir 20 ASV dolāri par 12 "x54" gabalu. Cilpas stieples piestiprināšanai pie auduma. Lielākajā daļā audumu veikalu tos var iegādāties lēti. JoAnn ir rīks un 25 par 2 ASV dolāriem. Tam jums būs nepieciešams āmurs. Vads, es izmantoju 22AWG, es iesaku mazāku, ja jums tas ir. Līmēšana, lai krāsains un vadošs audums saliptu kopā. Jautājiet veikalā, un jūs to droši varat iegādāties pagalmā. Tas, iespējams, darbotos labi, lai gan es iesaku jums pajautāt kādam, ko sita, vispirms es izmantoju patiešām vaļīgas lietas, pēc tam pārgāju uz kaut ko stingrāku. Es iesaku jums vienkārši izmēģināt pāris dažādus, līdz atrodat to, kas vislabāk darbojas. Siltuma saraušanās caurules, tas padarīja visu daudz vieglāk pārvaldāmu. saraujot vadus kopā, kad tie iet garām viens otram, tie paliks daudz labāki.

5. darbība: montāža 2. red

Montāža 2. red
Montāža 2. red
Montāža 2. red
Montāža 2. red
Montāža 2. red
Montāža 2. red

Uzlieciet daudzkrāsaino audumu viens virs otra un izgrieziet kvadrātu, tam nav jābūt perfektam. Gludiniet audumu, lai izlocītos, vēlreiz kārtojiet tos viens virs otra un pārliecinieties, ka malas sakrīt. Izgrieziet visas malas, kas nav. Izgrieziet augšējo un apakšējo kārtu, atstājot taisnu un kreiso pusi. Pēc šūšanas jūs apgriezīsiet slēdzi otrādi, tāpēc nepadariet noapaļotās malas pārāk apaļas un atstājiet pietiekami augstu augstumu uz līdzenām pusēm, lai, kad esat pabeidzis, viegli izspiestu slēdzi. Noapaļojiet pirmā un pēdējā slēdža plakano pusi. Virzieties uz šujmašīnu un salieciet kopā divas kārtas, lai labā puse būtu vērsta viena pret otru, un šujiet šuvi uz plakanām daļām. Kad pogas ir augšpusē šūti, izgrieziet kvadrātus no vadoša auduma un sakausējiet vienu pusi. Izgrieziet stiepli garumā un noņemiet vienu galu. pielodējiet vadu ap vienu cilpiņu. (lodēšanas materiāls, visticamāk, nelīmēsies pie cilpas) Vienā stūrī izgrieziet audumā nelielu apgaismojumu un āmurējiet cilpiņu, lai piestiprinātu audumu un stiepli. noņemiet pamatni no kausējuma un savienojiet vadošo audumu ar krāsainā auduma aizmuguri. Atkārtojiet visus slēdžus. Lai atvieglotu lietas, jūs varat sasildīt vadus kopā, kad viens vads šķērso nākamā slēdža vadu. Iegūstiet vai izveidojiet auduma gabalu slēdža komplekta garumā un izgrieziet vadoša auduma sloksni tā garumā. Atšķirībā no krāsainajiem slēdžiem, tas ir viens garš gabals. Tiks piespiestas pogas, lai izveidotu savienojumu. Izgrieziet nelielu spraugu un pievienojiet tam vadu ar cilpiņu, piemēram, krāsainos slēdža galus. Sakausējiet to apakšējā auduma aizmugurē. Šujiet augšējo un apakšējo daļu kopā ar vadošo audumu uz āru, izmantojiet pagalma nūju, lai apgrieztu komplektu pēc tā šūšanas. Izgrieziet dažus mazus caurumus vatelīnā, es izmantoju irbulīti, lai iegūtu apli, tad vienkārši noņemiet irbulīti un veiciet griezumu. Izgrieziet tos pēc formas un ievietojiet slēdžos. Tas notur vadošo audumu atsevišķi. Var būt vieglāk ievietot vatelīnu, kamēr apgriežat slēdžus, nevis pēc tam. Manis izmantotās lietas saplēsa diezgan slikti, kamēr es to ievietoju, un man bija jāsaņem atšķirīga vatelīna. Visbeidzot, savienojiet vadus ar mērķa dēli, un jūs esat gatavs. Garā apakšējā sloksne tiks sasmalcināta.

6. darbība. Kas jums nepieciešams 3. red

Kas jums nepieciešams Rev 3
Kas jums nepieciešams Rev 3

3. pārskatā es slēdžus padarīju neatkarīgus no elektroinstalācijas. Tas ietaupīja tonnu laika. Man arī daudz vairāk patīk gatavā rezultāta izskats. Tātad, šeit ir nepieciešamās jaunās daļas: Snaps, tikko tās ieguvu no JoAnn. Viņi nāca ar instalācijas rīku, kas nav slikts par 7 ASV dolāriem. Tā vietā es ieteiktu vienu no knaibles, jo man bija jāizņem rīks, lai uzstādītu knaibles vidū. Šujmašīnas būtu laba alternatīva, lai gan to ievērošana prasa ilgāku laiku. Vadītspējīgam pavedienam Spark Fun ir lietas, kuras var ievietot šujmašīnā. Man mašīnā bija jāiet ļoti lēni, pretējā gadījumā pavediens pārtrūks. Jūsu nobraukums var atšķirties

7. darbība: montāža 3. red

Montāža 3. red
Montāža 3. red
Montāža 3. red
Montāža 3. red
Montāža 3. red
Montāža 3. red
Montāža 3. red
Montāža 3. red

Šī pārskatīšana laika ziņā līdz izveidei bija daudz labāka nekā iepriekšējā. Turklāt noņemamie slēdži vairāk nekā vienu reizi saglabāja manu saprātu. Sāciet, izveidojot bāzi. Tā ir tikai viena segas ceturtdaļa, kas salocīta uz pusēm. Uz augšu ielieciet vatelīna slāni un šujiet, atstājot caurumu, lai to apgrieztu. Izstumiet lietu caur caurumu, un jums būtībā ir spilvena tipa lieta. Es to segu, lai būtu vieglāk strādāt. Izmantojiet vienkāršu pavedienu un uzgrieziet riekstus. Es darīju dimantus šajā, bet varbūt nākamreiz es ielikšu pūķi aizmugurē vai kaut ko foršu. Tagad pārejiet pie slēdžiem. Man patīk šis dizains, jo būtībā jūs varat izgatavot daudz to pirms laika un vienkārši izmantot to, ko vēlaties. sāciet, izmantojot kartona, papīra vai auduma lūžņu gabalu, un izgrieziet no tā bumbieru formu. Izmantojiet to kā ceļvedi, lai sagrieztu katra slēdža augšējo un apakšējo daļu. Es sagriezu vienu krāsu katram apakšam un citu krāsu virsotnēm, bet jūs varat būt radoši un darīt to, ko vēlaties. Izgrieziet savu ceļvedi līdz konfekšu formai, kas viegli iederēsies slēdža iekšpusē. Pagariniet "nūju", lai tā varētu ietīties pāri "bumbiera" malai. Izgrieziet formu no kausējošā un vadošā auduma un sakausējiet vadošā auduma vienu pusi. Noņemiet pamatni no kausēšanas materiāla un sakausējiet to ar auduma augšdaļu, kas atrodas auduma apakšā, un auduma apakšdaļu, kas atradīsies augšpusē. Aptiniet papildu gabalu augšpusē. Dodieties pie šujmašīnas un novietojiet vatelīnu ar caurumiem starp augšējo un apakšējo audumu. Šujiet ārpus vadošā auduma un izlaidiet slēdža "nūjas" daļu. Es atklāju, ka augšējo vadošo audumu ir iespējams uzšūt apakšā, izveidojot īsu. Labāk nav šūt caur vadošo audumu. Pievienojiet fiksatorus, un slēdzis ir pabeigts. Man šķita, ka vieglāk ir izmantot vīriešu fiksatoru visiem apakšējiem/GND savienojumiem un sieviešu siksnu visiem augšējiem. Tas padara visus slēdžus savstarpēji aizvietojamus. Ķēde: Par kārtu griešanu ir tas, ka jums ir daudz papildu bitu. Es paņēmu savus atgriezumus, sapludināju lielus kausēšanas gabalus ar lieliem vadoša auduma gabaliem un izmantoju tos, lai izgrieztu mazākos taisnstūrus, kurus izmantoju kā spilventiņus. Aptuveni novietojiet slēdžus un piestipriniet spilventiņus pie pamatnes ar pietiekami daudz vietas, lai pie tiem piestiprinātu līniju un būtu snap. Šujmašīnas pēda, kuru es izmantoju, neuzskatīja to par patiesi tuvu spraudnim, tāpēc paturiet to prātā un dodiet sev vietu. Tā kā es saņēmu vadošu diegu, kas varētu iet manā šujmašīnā, es vienkārši uzšuju līniju no spilventiņa uz spilventiņu un atpakaļ. Man vajadzēja iet lēni, pretējā gadījumā diegs saplīsīs, bet tas bija par tonnu ātrāk nekā šūšana ar rokām. Arī ar vadošu vītni uz spoles un adatas es ieguvu patiešām labu stabilu savienojumu. Sīkumi sabojājas kā traki, bet nedaudz amatniecības līmes vai Elmers to notīra. Centieties līnijas turēt tālu viena no otras, un jums nevajadzētu rasties problēmām. Galīgā montāža: pieskarieties visiem slēdžiem, pievienojiet plati, ielādējiet kodu un esat pabeidzis. Es izmantoju stiepli, lai nokļūtu no dēļa līdz spilventiņam, un pēc tam vienkārši ar rokām piešuvu vadu pie pamatnes. Nākamajai versijai es uzstādīšu dēli plastmasas kastē ar fiksatoriem, lai to piestiprinātu pie pamatnes, lai tukšgaitas pirksti to neizrautu.

8. darbība: kods

Kods
Kods

Ja jūs nekad iepriekš neesat ieprogrammējis mikroshēmu, tas ir nedaudz biedējošs uzdevums. Tas nepalīdz, ja rīki ir pārslas un lielākoties viena un tā pati darbība ir jāveic vairākas reizes. Divi labākie resursi, ko esmu atradis, lai izprastu notiekošo, ir USBtinyISP lapa, https://www.ladyada.net/make/usbtinyisp/ un trokšņa rotaļlietas programmēšanas avārijas kurss, http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html Tiem vajadzētu palīdzēt sākt darbu.

Daudzi cilvēki, piemēram, Arduino, izmanto šo kodēšanu, un tās lietošanai nav nekas nepareizs, izņemot to, ka es uzskatu, ka tā parasti rada vienkāršu programmu daudz uzpūšanās. Turklāt es zināju C un nezinu Arduino. Varbūt kādu dienu, ja būs laiks.:) Kods: {{{#include // Izmantojiet PIN, lai ieslēgtu SPK /// Typedefs /////////// typedef unsigned char u8; int main (void) {u8 btnState0; u8 btnState1; u8 btnState2; u8 btnState3; u8 btnState4; u8 btnState5; u8 btnState6; DDRB = (1 << DDB6); // Iestatiet SPK izvadam PORTD = (1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4); // Iestatīt pogu Augsta PORTC = (1 << PC4) | (1 << PC6); TCCR2B = (1 << CS21); // Iestatīt taimeri, kamēr (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); ja (btnState0) {ja (TCNT2> = 190) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} ja (btnState1) {ja (TCNT2> = 179) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} ja (btnState2) {ja (TCNT2> = 159) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} ja (btnState3) {ja (TCNT2> = 142) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} ja (btnState4) {ja (TCNT2> = 126) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} ja (btnState5) {ja (TCNT2> = 119) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} ja (btnState6) {ja (TCNT2> = 106) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }}}}}}} No kurienes nāk laukumi? Bija vajadzīga neliela matemātika. Atmega 168 taimera pulkstenis darbojas ar frekvenci 1 MHz. Tas ir pārāk ātri audio, tāpēc mums ir jāizmanto prescaler /8. Tā kā, lai veiktu 1 ciklu, mums ir jāapgriež izejas tapa augstā un zemā līmenī, atbilde ir jāsadala ar 2, lai iegūtu pareizo piķi. Formula izskatās šādi: Pitch, lai ievadītu kodu = (1000000/8)/(Mērķa frekvence*2) A (440) gadījumā tas būtu 125000/880 = 142,045 vai 142, jo vērtībai ir jābūt veselam skaitlim. Piezīmju mērķfrekvences var atrast gandrīz jebkurā vietā tiešsaistē, un tās parasti ir vienādas. Es joprojām vēlos pievienot gadījuma paziņojumu, nevis izmantot virkni If un izmantot PWM, lai labāk kontrolētu skaļruņa skaļumu un augstumu, taču pagaidām tas darbojas.

Ieteicams: