Obsah:

Mikrokontrolérový generátor tónov tkaniny v kóde C: 8 krokov (s obrázkami)
Mikrokontrolérový generátor tónov tkaniny v kóde C: 8 krokov (s obrázkami)

Video: Mikrokontrolérový generátor tónov tkaniny v kóde C: 8 krokov (s obrázkami)

Video: Mikrokontrolérový generátor tónov tkaniny v kóde C: 8 krokov (s obrázkami)
Video: Inner Worlds, Outer Worlds - Part 2 - The Spiral 2024, Júl
Anonim
Mikrokontrolérový generátor tónov tkaniva v C-kóde
Mikrokontrolérový generátor tónov tkaniva v C-kóde

Koncom októbra minulého roku mi užívateľ carmitsu, inštruktorov, poslal správu, keď uvidel môj synth na obedový box. Z jeho posolstva: Hudbu učím na základnej škole. Hráme veľa hudby z rekordéra. tj. deti hrajú na malé flauty ……. Mám niekoľko detí so špeciálnymi potrebami, ktoré môžu používať tieto čierne plagátové tabule s kruhmi, na ktorých je názov poznámky. Títo študenti tlačia na kruhy s názvami poznámok a ostatní študenti hrajú pieseň … Väčšina detí so špeciálnymi potrebami to dokáže s hudbou zvládnuť pomerne dobre a včas. Snažím sa vybudovať veľmi jednoduchý generátor zvuku, aby tieto deti mohli hrať na rovnakom ihrisku, aké hrajú študenti na svojich rekordéroch. Bol by som len niekoľko ihrísk. Myslel som, že by som mohol pripevniť nejaký malý gombík na spodok ich okrúhlych kruhov, aby keď na ne zatlačíte, zvuk bude vychádzať z malého reproduktora, dostatočne hlasného, aby ho mohli počuť. Ako by som mohol odolať, keď mám matku učiteľku a mám rád školu? Pravdu povediac, nemohol som. Toto je do značnej miery kronika projektu a návod, ako si postaviť svoj vlastný.

Krok 1: Začiatok alebo prečo som sa nemohol držať analógie

Začiatok alebo prečo som sa nemohol držať analógie
Začiatok alebo prečo som sa nemohol držať analógie

Dobré veci začínajú na ďalšej stránke. Ak chcete vedieť, ako som skončil s časťami, ktoré som urobil, čítajte ďalej. Skutočný časovač: Po zadaní projektu som si myslel, že ma hneď napadol piezo generátor tónov z mojej knihy zosilňovačov Forest Mims III. Zdá sa, že je to dobrý spôsob, je to len piezo, integrovaný obvod 741 IC a niekoľko pasívnych komponentov. Žiadny veľký problém, nie? Má to 2 problémy, 1) keď stlačíte vypínač, je možné zmeniť výšku tónu. 2) Je takmer nemožné ho naladiť. To prvé by bolo možné prekonať pomocou technológie odskoku, aj keď som nevedel, ako to urobiť bez pridania ďalšieho počítadla. Problém môže byť aj pri použití piezo. Druhý problém začal byť nepraktický, keď ste sa začali pokúšať trafiť určité ihrisko. A čo 555? Datasheet ukazuje funkciu časového oneskorenia založenú na odporoch a kondenzátoroch. Čo je skvelé, kým nezačnete zadávať skutočné hodnoty častí skutočného sveta, vtedy začne byť dosahovanie výšky tónu 440 Hz trochu náročné. Na doladenie môžete použiť ozdobné kvetináče, ale postupom času sa zvyknú hýbať. Neustále ladenie nástroja, zostavené na základe rýchleho zvýšenia nákladov a množstva dielov, a mojej ženy, ktorá zmenila výšku tónu, keď stlačila tlačidlo, zabilo 555 pre tento projekt. Op-amp: Žiadny problém, ľudia vyrábajú syntetizátory s operačné zosilňovače ešte predtým, ako som sa narodil. Ako ťažké by mohlo byť vytvoriť skutočne jednoduchý s niekoľkými časťami a konkrétnymi poznámkami? Ťažšie, ako som si myslel. Väčšina návrhov je pre tento projekt veľmi komplikovaná. Syntezátori hľadajú perfektný priebeh/tón. To je priamo v rozpore s projektom, ktorý má byť dostatočne lacný pre rozpočet školy alebo učiteľa. Zostavenie klávesnice je dosť jednoduché, je to len veľa rezistorov a energie alebo veľa diód a energie. Je to zvyšok návrhu obvodu a náklady na vlastné dosky plošných spojov, ktoré sa niekomu začnú na začiatku začínať na úrovni elektroniky vymknúť z rúk. Redefinícia projektu: Takže projekt bol predefinovaný skôr, ako som vôbec začal. Potreboval som niečo, čo by mohlo včas prepnúť kolík reproduktora stlačením tlačidla. Nechcel som musieť navrhovať a kupovať DPS. To muselo použiť čo najmenej komponentov a bolo možné ho zostaviť ako súpravu pre začiatočníkov. Celý čas mi to hľadelo do tváre. Fuj !! Mikrokontrolér! Mikrokontrolér: Takže po kúpe súpravy Modern Devices Bare Bones Arduino a Evil Mad Scientist Simple Target Board, ktoré som nechal niekoľko mesiacov sedieť na stole, som mal perfektný úvodný projekt. Začal som sa pozerať na čas potrebný na zostavenie oboch, krivku učenia pre kód, náklady, potrebné ďalšie časti a dosiahnuť, aby robil to, čo chcem, a usadil som sa na cieľovej doske. Náklady boli celkom vyrovnané, 15 dolárov plus kábel FTDI za 20 dolárov pre Arduino, 12 dolárov plus programátor USBtinyISP za 22 dolárov. C ++ som už vedel z vysokej školy, ktorú som mohol vydržať, a predpokladal som, že C pre mikrokontroléry nebude také zlé, pričom okrem blikania svetla, aby som sa ubezpečil, že som svoju zostavu zostavil správne, som nemal žiadne skúsenosti s Arduinom. Oba sa dali namontovať. Bolo to dosť hodné, a tak som sa rozhodol pre menej častí z dvoch, cieľovú dosku.

Krok 2: Čo potrebujete, Rev 1

Čo potrebujete Rev.1
Čo potrebujete Rev.1

Cena súčiastokUSBtinyISP AVR Programmer Kit (USB SpokePOV Dongle) v2.0 22,00 USD 5-kus 2,75 dolárov https://evilmadscience.com/tinykitlist/74-atmegaxx8Speaker (8-ohm Mini) 2,79 $ 5) 3,49 USD (4 balenie) https://www.radioshack.com/product/index.jsp?productId=2062539"AAA "Držiak batérie 1,79 USD https://www.radioshack.com/product/index.jsp? ProductId = 2102735SPST Posuvný vypínač Submini (voliteľný pre vypínač) 2,69 USD (2 balenie) https://www.radioshack.com/product/index.jsp?productId=2062490LED a odpor (voliteľné, ak chcete kontrolku napájania) $ by malo byť zadarmo ak ležia, drôt $ by mal tiež ležať okolo move flux) Ak chcete na niektorých miestach ušetriť peniaze, nemusíte dostávať diely z RadioShack. Urobil som to, pretože sú blízki a predvídateľní.

Krok 3: Montáž Rev 1

Montáž Rev 1
Montáž Rev 1
Montáž Rev 1
Montáž Rev 1

Spojte svoje diely podľa obrázka. Keď budete hotoví, nezabudnite použiť alkohol na trenie a tavivovú kefu, aby ste sa zbavili akéhokoľvek tavidla z spájkovania. Pre tých, ktorí to uprednostňujú, je schéma nižšie. D1 a R1 môžu byť čokoľvek, čo chcete, je to len kontrolka napájania. C1 má len pomôcť tomu, aby bola sila trochu konzistentnejšia. Použil som 10uF. Táto schéma je rovnaká pre neskoršie verzie, stačí vymeniť tlačidlá za látkové spínače. v poslednej revízii som pridal prepínače na PC4 a PC5 alebo piny 27 a 28.

Krok 4: Čo potrebujete, Rev.2

Čo potrebujete Rev.2
Čo potrebujete Rev.2

V zásade teda vymieňate tlačidlá Radio Shack za ručne vyrobené látkové. Potrebujete: viac farieb látky alebo jednu farbu, ak chcete, aby každá poznámka mala rovnakú farbu. Sekcia prešívania vo vašom najbližšom obchode s látkami je najlepším miestom, kde to môžete lacno získať. Prešívané štvrte sú 1,50 dolára a z jedného môžete získať veľa prepínačov. Vodivá tkanina, navrhujem tkaninu Flectron od spoločnosti LessEMF, je to 20 dolárov za 12 "x54" kusové očká na pripevnenie drôtu k tkanine. Môžete ich dostať vo väčšine obchodov s tkaninami lacno. JoAnn má nástroj a 25 za 2 doláre Na to budete potrebovať kladivo. Drôt, použil som 22AWG, navrhujem menší, ak ho máte. Fixácia, aby sa farebná a vodivá tkanina zlepila. Opýtajte sa v obchode a pravdepodobne si ho môžete kúpiť na dvore. To by pravdepodobne fungovalo dobre, aj keď navrhujem, aby ste sa niekoho opýtaliBatting, najskôr som použil naozaj voľné veci a potom som prešiel na niečo pevnejšie pletenie. Navrhujem, aby ste vyskúšali niekoľko rôznych, kým nenájdete to, čo funguje najlepšie. Tepelne zmršťovacie hadičky, vďaka čomu bola celá vec oveľa lepšie zvládnuteľná. tepelne zmrštiteľné vodiče k sebe navzájom prechádzajú a zostanú oveľa lepšie.

Krok 5: Montáž Rev 2

Zostava Rev 2
Zostava Rev 2
Zostava Rev 2
Zostava Rev 2
Zostava Rev 2
Zostava Rev 2

Položte viacfarebnú látku na seba a vystrihnite štvorec, nemusí to byť dokonalé. Látku vyžehlite, aby sa všetky záhyby dostali von, znova ich navrstvite na seba a uistite sa, že sa všetky hrany zhodujú. Odstrihnite všetky hrany, ktoré nie. Odrežte horný a dolný okraj a ľavú a pravú stranu nechajte rovné. Po šití budete invertovať prepínač, aby neboli zaoblené strany príliš okrúhle a ponechali na plochých stranách dostatočnú výšku, aby ste spínač ľahko prestrčili, keď skončíte. Zaokrúhlite plochú stranu prvého a posledného prepínača. Zamierte k svojmu šijaciemu stroju a dajte dve z nich dohromady tak, aby dobrá strana stála proti sebe, a na ploché časti prišite šev. Akonáhle sú vrchy gombíkov zošité, vystrihnuté štvorce z vodivej látky a z jednej strany tavené. Odrežte drôt na dĺžku a jeden koniec odizolujte. spájkujte drôt okolo jedného z očiek. (spájka sa pravdepodobne neprilepí na očko) V jednom rohu nastrihajte v tkanine malý otvor a kladivom zatlačte očko, aby ste pripevnili látku a drôt. odstráňte podložku z fixácie a zaistite vodivú tkaninu na zadnej strane farebnej textílie. Opakujte pre všetky prepínače. Aby ste to uľahčili, môžete drôty zmršťovať teplom vždy, keď jeden drôt prechádza drôtom pre ďalší prepínač. Získajte alebo si vyrobte kus látky na dĺžku sady prepínačov a odstrihnite pásik z vodivej tkaniny na dĺžku. Na rozdiel od farebných spínačov je to jeden dlhý kus. Toho sa dotknú tlačidlá pri vytváraní spojenia. Vystrihnite malú štrbinu a pomocou očka k nej pripevnite drôt, podobne ako farebné prepínače. Zasuňte ju na zadnú stranu spodnej látky. Šite hornú a dolnú časť spolu s vodivou tkaninou smerom von, pomocou yardovej tyče obráťte súpravu potom, čo je ušitá. Vyrežte niekoľko malých dierok v vatelíne, pomocou paličky som získal kruh, potom len odstráňte paličku a urobte rez. Nakrájajte ich na tvar a vložte ich do vypínačov. Práve to oddeľuje vodivú tkaninu od seba. Vkladanie vatelínu môže byť jednoduchšie, keď invertujete prepínače, a nie potom. Veci, ktoré som použil, sa veľmi zle roztrhali, keď som ich vkladal a musel som dostať rôzne odpaly. Nakoniec zapojte drôty k cieľovej doske a máte všetko pripravené. Dlhý spodný pás bude brúsený.

Krok 6: Čo potrebujete, Rev 3

Čo potrebujete, Rev 3
Čo potrebujete, Rev 3

V Rev 3 som urobil spínače nezávislé od kabeláže. To ušetrilo veľa času. Tiež sa mi oveľa viac páči vzhľad hotového výsledku. Takže tu sú nové diely, ktoré potrebujete: Snaps, práve ich mám od JoAnn. Prišli s inštalačným nástrojom, ktorý nie je zlý za 7 dolárov. Namiesto toho by som navrhol jeden z nástrojov klieští, pretože som musel svoj nástroj rozobrať a nainštalovať západky uprostred. Šitie by bolo dobrou alternatívou, aj keď priľnutie trvá dlhšie. Vodivá niť, Spark Fun má veci, ktoré sa môžu hodiť do vášho šijacieho stroja. V mojom stroji som musel ísť naozaj pomaly, inak by sa niť zlomila. Počet najazdených kilometrov sa môže líšiť

Krok 7: Montáž Rev 3

Zostava Rev 3
Zostava Rev 3
Zostava Rev 3
Zostava Rev 3
Zostava Rev 3
Zostava Rev 3
Zostava Rev 3
Zostava Rev 3

Táto revízia bola z hľadiska času do vybudovania oveľa lepšia ako predchádzajúca. Navyše, odnímateľné prepínače mi zachránili zdravý rozum viac ako raz. Začnite tým, že vytvoríte základňu. Je to len jedna prešívaná štvrtina preložená na polovicu. Na vrch dajte vrstvu vatelínu a zošite, pričom nechajte otvor, aby ste ho prevrátili. Vtlačte vec cez otvor a v zásade máte vec typu vankúša. Prešíval som ho, aby sa s ním ľahšie pracovalo. Použite obyčajnú niť a matice. Urobil som diamanty na tomto, ale možno nabudúce dám draka späť alebo niečo cool. Teraz k vypínačom. Páči sa mi tento dizajn, pretože v zásade ich môžete vyrobiť veľa a použiť, čo chcete. začnite tým, že použijete kúsok kartónu, papiera alebo látky a vyrežete z neho tvar hrušky. Použite to ako vodidlo na orezanie hornej a spodnej časti každého prepínača. Vystrihla som jednu farbu na každé dno a inú farbu na vrcholy, ale môžete byť kreatívni a robiť, čo chcete. Skráťte sprievodcu na tvar lízanky, ktorý sa ľahko zmestí do vypínača. Predĺžte „palicu“, aby sa mohla omotať cez okraj „hrušky“. Vystrihnite tvar z fixačnej a vodivej textílie a zaistite jednu stranu vodivej textílie. Odstráňte podložku z fixačného materiálu a zaistite ju v hornej časti tkaniny, ktorá bude na spodnej strane, a v spodnej časti tkaniny, ktorá bude navrchu. Omotajte nadbytočný kúsok navrchu. Prejdite k svojmu šijaciemu stroju a medzi vrchnú a spodnú látku vložte vatelín s otvormi. Šiť mimo vodivú tkaninu a preskočiť „prilepenú“časť vypínača. Zistil som, že je možné prišiť vrchnú vodivú tkaninu k spodnej časti a vytvoriť tak krátke nohavice. Je lepšie neprešívať vodivú tkaninu. Pripojte západky a vypínač je hotový. Zistilo sa mi, že je jednoduchšie použiť západku samca pre všetky spodné/GND pripojenia a zásuvku ženy pre všetky vrcholy. Vďaka tomu sú všetky prepínače zameniteľné. Obvod: Ide o to, aby ste prerušili náboje v tom, že máte veľa ďalších bitov. Vzal som svoje útržky, roztavil som veľké kusy fixácie na veľké kusy vodivej látky a použil som ich na vystrihnutie menších obdĺžnikov, ktoré som použil ako podložky. Zhruba rozložte prepínače a zaistite poistky k základni tak, aby mali dostatok miesta na to, aby ste k nim prišili šnúru a zacvakli. Noha šijacieho stroja, ktorý som použil, neberie ohľad na to, aby bola skutočne blízko, takže to majte na pamäti a dajte si priestor. Keďže som dostal vodivú niť, ktorá mohla ísť do môjho šijacieho stroja, ušil som šnúru od podložky k podložke a späť. Musela som ísť pomaly, inak sa niť pretrhne, ale bolo to o tonu rýchlejšie ako ručné šitie. Tiež s vodivou niťou na cievke a ihle som získal skutočne dobré pevné spojenie. Látky sa lámu ako šialené, ale malým remeselným lepidlom alebo Elmersom to hneď vyjasníte. Pokúste sa udržať riadky ďaleko od seba a nemali by ste mať žiadne problémy. Konečná montáž: Zapnite všetky svoje prepínače, pripojte dosku, načítajte kód a máte hotovo. Pomocou drôtu som sa dostal z dosky na podložku a potom som už len ručne prišil drôt k základni. V prípade ďalšej verzie namontujem dosku do plastového boxu so západkami, aby sa pripevnil k základni, aby ju nečinné prsty neroztiahli od seba.

Krok 8: Kód

Kód
Kód

Ak ste nikdy predtým nenaprogramovali čip, je to trochu skľučujúca úloha. Nepomáha ani to, že sú nástroje vločkovité a väčšinu času musíte rovnakú operáciu vykonať viackrát. Dva najlepšie zdroje, ktoré som našiel na pochopenie toho, čo sa deje, sú stránka pre USBtinyISP, https://www.ladyada.net/make/usbtinyisp/ a rýchlokurz v programovaní hlukovej hračky, http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html Tieto možnosti by vám mali pomôcť začať.

Mnoho ľudí má pre toto kódovanie rád Arduino a nie je na tom nič zlého, okrem toho, že mám pocit, že normálne jednoduchému programu dodáva veľa nadšenia. Tiež som poznal C a nepoznám Arduino. Možno jedného dňa, ak bude čas.:) Kód: {{{#include // Špendlíkom zapnite SPK /// Typedefs //////////// typedef nepodpísaný znak u8; int main (neplatné) {u8 btnState0; u8 btnState1; u8 btnState2; u8 btnState3; u8 btnState4; u8 btnState5; u8 btnState6; DDRB = (1 << DDB6); // Nastaviť SPK pre výstup PORTD = (1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4); // Nastavenie vysokého tlačidla PORTC = (1 << PC4) | (1 << PC6); TCCR2B = (1 << CS21); // Nastavenie časovača pri (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); // Prevrátenie kolíka SPK TCNT2 = 0; }} if (btnState1) {if (TCNT2> = 179) {PORTB ^= (1 << PD6); // Prevrátenie kolíka SPK TCNT2 = 0; }} if (btnState2) {if (TCNT2> = 159) {PORTB ^= (1 << PD6); // Prevrátenie kolíka SPK TCNT2 = 0; }} if (btnState3) {if (TCNT2> = 142) {PORTB ^= (1 << PD6); // Prevrátenie kolíka SPK TCNT2 = 0; }} if (btnState4) {if (TCNT2> = 126) {PORTB ^= (1 << PD6); // Prevrátenie kolíka SPK TCNT2 = 0; }} if (btnState5) {if (TCNT2> = 119) {PORTB ^= (1 << PD6); // Prevrátenie kolíka SPK TCNT2 = 0; }} if (btnState6) {if (TCNT2> = 106) {PORTB ^= (1 << PD6); // Prevrátenie kolíka SPK TCNT2 = 0; }}}}}}} Odkiaľ pochádzajú ihriská? Bola potrebná malá matematika. Hodiny časovača na atmega 168 bežia na 1MHz. Na zvuk je to príliš rýchle, takže musíme použiť predzvesť /8. Potom, pretože musíme otočiť výstupný kolík vysoko potom dole, aby sme urobili 1 cyklus, musíme rozdeliť odpoveď na 2, aby sme prišli so správnou výškou. Vzorec vyzerá takto: Rozstup na vloženie kódu = (1000000/8)/(Cieľová frekvencia*2) Pre A (440) by to pre naše účely bolo 125 000/880 = 142,045 alebo 142, pretože hodnota musí byť celé číslo. Cieľové frekvencie poznámok nájdete takmer kdekoľvek na internete a sú väčšinou rovnaké. Stále chcem pridať tvrdenie prípadu namiesto použitia skupiny if a pomocou PWM na lepšie ovládanie hlasitosti a výšky reproduktora, ale zatiaľ to funguje.

Odporúča: