Obsah:

Mikroprocesorový generátor tónů tkanin v kódu C: 8 kroků (s obrázky)
Mikroprocesorový generátor tónů tkanin v kódu C: 8 kroků (s obrázky)

Video: Mikroprocesorový generátor tónů tkanin v kódu C: 8 kroků (s obrázky)

Video: Mikroprocesorový generátor tónů tkanin v kódu C: 8 kroků (s obrázky)
Video: plastové modely a elektronika 2024, Červenec
Anonim
Mikroprocesorový generátor tónů tkanin v C-kódu
Mikroprocesorový generátor tónů tkanin v C-kódu

Na konci října loňského roku mi uživatel carmitsu instructables poslal zprávu poté, co viděl můj synthbox na oběd. Z jeho poselství: Hudbu učím na základní škole. Hrajeme hodně gramofonové hudby. tj. děti hrají na malé flétny …… Mám několik dětí se speciálními potřebami, které mohou používat tyto černé plakátové tabule s kruhy, na kterých je název poznámky. Tito studenti tlačí na kruhy se jmény not a současně ostatní studenti hrají písničku ….. Většina dětí se speciálními potřebami to zvládne docela dobře a včas s hudbou. Chtěl bych vytvořit velmi jednoduchý zvukový generátor, aby tyto děti mohly hrát stejné výšky jako ty, které hrají studenti na svých rekordérech. Byl bych jen pár hřišť. Myslel jsem, že bych mohl na spodní část jejich kulatých kruhů připevnit nějaký malý knoflík, takže když na ně zatlačí, zvuk bude vycházet z malého reproduktoru, dostatečně hlasitý, aby mohli slyšet. Jak bych mohl odolat, když mám matku, která je učitelkou a má ráda školu? Po pravdě řečeno, nemohl jsem. Toto je do značné míry kronika projektu a návod, jak si postavit vlastní.

Krok 1: Začátek nebo proč jsem se nemohl držet analogu

Začátek aneb Proč jsem se nemohl držet analogu
Začátek aneb Proč jsem se nemohl držet analogu

Dobré věci začínají na další stránce. Pokud chcete vědět, jak jsem skončil s použitím částí, které jsem udělal, čtěte dále. Skutečný časovač: Po zamyšlení nad projektem jsem si okamžitě vzpomněl na piezoelektrický generátor z mé operační zesilovače knihy Forest Mims III. Vypadalo to jako dobrá cesta, je to jen piezo, 741 IC a pár pasivních komponent. Žádný velký problém, že? Má to 2 problémy, 1) když stisknete spínač, je možné změnit výšku tónu 2) je zatraceně téměř nemožné naladit. První z nich bylo pravděpodobně možné překonat nějakou technologií debounce, i když jsem nevěděl, jak to udělat bez přidání dalšího počítadla. Může to být také problém s použitím piezo. Druhý problém začal být těžkopádný, když jste se začali pokoušet trefit určité hřiště. A co 555? Datový list ukazuje funkci časové prodlevy založené na rezistorech a kondenzátorech. Což je skvělé, dokud nezačnete psát skutečné hodnoty částí skutečného světa, a pak vám začne připadat, že trefit se na 440Hz rozteč začíná být trochu obtížné. K vyladění můžete použít ozdobné hrnce, ale postupem času se spíše pohybují. Neustálé ladění nástroje, sestavené na základě rychlého nárůstu nákladů a množství dílů, a moje žena, která změnila výšku, když stiskla tlačítko, zabily 555 pro tento projekt. Op-amp: Žádný problém, lidé vyráběli syntetizátory s operační zesilovače od doby, kdy jsem se narodil. Jak těžké by mohlo být vytvořit opravdu jednoduchý s několika částmi a konkrétními poznámkami? Těžší, než jsem si myslel. Většina návrhů je pro tento projekt velmi komplikovaná. Syntezátoři hledají perfektní průběh/tón. To je přímo v rozporu s projektem, který má být dostatečně levný pro rozpočet školy nebo učitele. Sestavení klávesnice je dost snadné, je to jen hromada odporů a výkonu nebo hromada diod a výkonu. Je to zbytek návrhu obvodu a náklady na vlastní desky plošných spojů, které se začnou někomu vymknout z rukou na začínající úrovni elektroniky. Redefinice projektu: Projekt byl tedy předefinován ještě předtím, než jsem vůbec začal. Potřeboval jsem něco, co by mohlo včas přepnout kolík reproduktoru stisknutím tlačítka. Nechtěl jsem navrhovat a kupovat desku plošných spojů. To muselo použít co nejméně komponent a bylo možné je sestavit jako sadu pro začátečníky. Celou dobu mi to hledělo do tváře. Duh !! Mikrokontrolér! Mikrokontrolér: Takže po zakoupení soupravy Modern Devices Bare Bones Arduino a Evil Mad Scientist Simple Target Board, které jsem nechal měsíce sedět na stole, aniž bych je používal, jsem měl perfektní úvodní projekt. Začal jsem se dívat na čas potřebný k sestavení obou, křivku učení pro kód, náklady, další potřebné součásti a přimět to, aby dělalo to, co chci, a usadil se na cílové desce. Náklady byly docela vyrovnané, 15 $ plus kabel 20 FTDI pro Arduino, 12 $ plus programátor USBtinyISP za 22 $. Už jsem věděl, že C ++ je z malé vysoké školy, kterou jsem mohl postavit, a myslel jsem si, že C pro mikrokontroléry nebude tak špatné, zatímco kromě blikání světla, abych se ujistil, že jsem sestavu sestavil správně, jsem neměl zkušenosti s Arduino. Obojí bylo možné namontovat. Bylo to docela hodné, takže jsem se rozhodl pro méně částí z těchto dvou, cílové desky.

Krok 2: Co potřebujete Rev 1

Co potřebujete Rev 1
Co potřebujete Rev 1

Cena dílůUSBtinyISP Programátorová sada AVR (USB SpokePOV Dongle) v2.0 $ 22,00https://www.adafruit.com/index.php? Main_page = product_info & cPath = 16 & products_id = 46Evil Mad Scientist labs ATmegaXX8 Mini Dev Kits $ 12Headers, 6-pin DIP 5 ks 2,75 $ https://evilmadscience.com/tinykitlist/74-atmegaxx8Speaker (8 ohm Mini) 2,79 $ 5) 3,49 USD (4 balení) https://www.radioshack.com/product/index.jsp?productId=2062539"AAA "Držák baterie 1,79 USD https://www.radioshack.com/product/index.jsp? ProductId = 2102735SPST Posuvný přepínač Submini (volitelně pro vypínač) 2,69 $ (2 balení) https://www.radioshack.com/product/index.jsp?productId=2062490LED a odpor (volitelně, pokud chcete kontrolku napájení) $ by mělo být zdarma pokud leží kolem, měl by také ležet drát $ move flux) Pokud chcete na některých místech ušetřit peníze, nemusíte shánět díly z RadioShacku. Udělal jsem to, protože jsou blízcí a předvídatelní.

Krok 3: Montáž Rev 1

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

Spojte své díly podle obrázku. Až budete hotovi, nezapomeňte použít třecí alkohol a tavný kartáč, aby se zbavili veškerého tavidla z pájení. D1 a R1 mohou být cokoli chcete, je to jen kontrolka napájení. C1 má jen přispět k tomu, aby byl výkon o něco konzistentnější. Použil jsem 10uF. Toto schéma je stejné pro novější verze, stačí vyměnit tlačítka za látkové přepínače. v poslední revizi jsem přidal přepínače na PC4 a PC5 nebo piny 27 a 28.

Krok 4: Co potřebujete Rev 2

Co potřebujete Rev 2
Co potřebujete Rev 2

V zásadě tedy vyměňujete tlačítka Radio Shack za ručně vyráběná látková. Potřebujete: více barev látky nebo jednu barvu, pokud chcete, aby každá poznámka měla stejnou barvu. Sekce prošívání ve vašem nejbližším obchodě s textilem je nejlepší místo, kde to levně seženete. Prošívané čtvrtiny jsou 1,50 USD a můžete z nich získat spoustu přepínačů. Vodivá tkanina, doporučuji tkaninu Flectron od společnosti LessEMF, je to 20 dolarů za 12palcové x54 kusové očka pro připojení drátu k tkanině. Seženete je ve většině obchodů s tkaninami levně. JoAnn má nástroj a 25 za 2 dolary K tomu budete potřebovat kladivo. Drát, použil jsem 22AWG, doporučuji menší, pokud ho máte. Fixace, aby se barevná a vodivá tkanina spojila. Zeptejte se v obchodě a pravděpodobně si ho můžete koupit na dvoře. To by pravděpodobně fungovalo dobře, i když navrhuji, abyste se někoho zeptaliBatting, nejprve jsem použil opravdu volné věci a pak jsem přešel na něco těsnějšího úpletu. Doporučuji zkusit pár různých, dokud nenajdete to, co funguje nejlépe. Teplem smrštitelné hadičky, díky čemuž byla celá věc mnohem lépe ovladatelná. tepelně smršťovací dráty k sobě navzájem procházejí a zůstanou mnohem lépe.

Krok 5: Montáž Rev 2

Montáž Rev 2
Montáž Rev 2
Montáž Rev 2
Montáž Rev 2
Montáž Rev 2
Montáž Rev 2

Položte vícebarevnou látku přes sebe a vystřihněte čtverec, nemusí to být dokonalé. Tkaninu vyžehlete, aby se všechny záhyby vytáhly, znovu je navrstvte na sebe a ujistěte se, že se všechny hrany shodují. Ořízněte všechny hrany, které ne. Ořízněte horní a spodní část a levou a pravou stranu nechte rovné. Po šití budete invertovat spínač, takže nedělejte zaoblené strany příliš kulaté a ponechte na plochých stranách dostatečnou výšku, abyste mohli spínač snadno protáhnout, až budete hotovi. Zaokrouhlete plochou stranu prvního a posledního spínače. Přejděte ke svému šicímu stroji a dejte dvě kola dohromady tak, aby dobrá strana směřovala k sobě, a přišijte šev na ploché části. Jakmile jsou vrchní části knoflíků ušité, vystřižené čtverečky z vodivé látky a z jedné strany tavné. Odřízněte drát a odizolujte jeden konec. pájet drát kolem jednoho z oček. (pájka se pravděpodobně nepřichytí k očku) V jednom rohu ustřihněte v látce štěrbinku a zatlučením očka připevněte látku a drát. vyjměte podložku z fixace a pojistkou spojte vodivou látku se zadní částí barevné látky. Opakujte pro všechny přepínače. Aby to bylo jednodušší, můžete tepelně smršťovací trubku spojit dohromady, kdykoli jeden vodič protáhne vodič pro další spínač. Získejte nebo vyrobte kus látky o délce sady spínačů a odstřihněte proužek vodivé látky na její délku. Na rozdíl od barevných spínačů je to jeden dlouhý kus. Toho se dotknou tlačítka při navazování spojení. Vyřízněte malou štěrbinu a připevněte k ní drát pomocí očka, jako jsou barevné spínače. Spojte jej se zadní částí spodní látky. Sešijte horní a spodní část vodivou tkaninou směrem ven, po ušití sadu převraťte obrácenou soupravou. Vystřihněte několik malých děr v odpalování, pomocí hůlky kruh, pak stačí odstranit hůlku a provést řez. Ořízněte je do tvaru a vložte je do spínačů. To je to, co drží vodivou tkaninu od sebe. Může být snazší vložit odpalování, zatímco převracíte spínače místo po. Věci, které jsem použil, se při vkládání dost roztrhaly a musel jsem získat různé odpaly. Nakonec připojte dráty k cílové desce a jste připraveni. Dlouhý spodní pás bude broušen.

Krok 6: Co potřebujete Rev 3

Co potřebujete Rev 3
Co potřebujete Rev 3

V Rev 3 jsem udělal spínače nezávislé na kabeláži. To ušetřilo spoustu času. Také se mi mnohem více líbí vzhled hotového výsledku. Takže tady jsou nové díly, které potřebujete: Snaps, právě jsem je dostal od JoAnn. Přišli s instalačním nástrojem, který není špatný za 7 dolarů. Místo toho bych doporučil jeden z nástrojů kleští, protože jsem musel svůj nástroj rozebrat, abych nainstaloval západky uprostřed. Šití by bylo dobrou alternativou, i když lepení trvá déle. Vodivá nit, Spark Fun má věci, které se mohou hodit do vašeho šicího stroje. Ve svém stroji jsem musel jet opravdu pomalu, jinak se nit přetrhla. Počet najetých kilometrů se může lišit

Krok 7: Montáž Rev 3

Sestava Rev 3
Sestava Rev 3
Sestava Rev 3
Sestava Rev 3
Sestava Rev 3
Sestava Rev 3
Sestava Rev 3
Sestava Rev 3

Tato revize byla mnohem lepší než ta předchozí, pokud jde o čas do vybudování. Navíc díky vyjímatelným přepínačům jsem zachránil zdravý rozum více než jednou. Začněte tím, že vytvoříte základnu. Je to jen jedna prošívaná čtvrtina složená na polovinu. Navrch položte vrstvu vatelínu a sešijte, ponechte díru, která ji převrátí. Zatlačte věc otvorem a v podstatě máte věc typu polštáře. Přikryl jsem to, aby se s ním snáze pracovalo. Použijte obyčejný závit a matice. Udělal jsem diamanty na tomto, ale možná příště dám draka zpět, nebo něco cool. Teď k vypínačům. Líbí se mi tento design, protože v zásadě můžete udělat spoustu z nich předem a použít pouze to, co chcete. začněte tím, že použijete kousek kartonu, papíru nebo látky a vystřihnete z něj tvar hrušky. Použijte to jako vodítko pro oříznutí horní a dolní části každého přepínače. Vystřihla jsem jednu barvu pro každé dno a jinou barvu pro vrcholy, ale můžete být kreativní a dělat, co chcete. Uřízněte průvodce na tvar lízátka, který se snadno vejde do spínače. Prodlužte „klacek“, aby se mohl omotat přes okraj „hrušky“. Vystřihněte tvar z fixační a vodivé textilie a jednu stranu vodivé textilie spojte. Odstraňte podložku z fixačního materiálu a zatavte ji na horní část látky, která bude na spodní straně, a na spodní část látky, která bude nahoře. Zabalte extra kousek kolem vrcholu. Přejděte ke svému šicímu stroji a mezi horní a spodní látku vložte vatelín s otvory. Šijte mimo vodivou tkaninu a přeskočte „hůlkovou“část spínače. Zjistil jsem, že je možné přišit spodní vodivou látku ke spodní části a vytvořit tak krátký. Je lepší neprošívat vodivou látku. Připojte západky a přepínač je hotový. Zjistil jsem, že je snazší použít samčí západku pro všechny spodní/GND připojení a samičí západku pro všechny vrcholy. Díky tomu jsou všechny přepínače zaměnitelné. Okruh: Ořezávání kol spočívá v tom, že máte spoustu dalších bitů. Vzal jsem své útržky, roztavil velké kusy fixace na velké kusy vodivé látky a použil je k vystřihnutí menších obdélníků, které jsem použil jako podložky. Přibližně rozložte spínače a zajistěte podložky k základně s dostatečným prostorem, abyste k nim přišili šňůru a zacvakli. Noha šicího stroje, který jsem použil, nepůsobila laskavě tak, že by byla opravdu blízko, takže to mějte na paměti a dejte si trochu prostoru. Vzhledem k tomu, že jsem dostal vodivou nit, která mohla jít do mého šicího stroje, prostě jsem šil čáru od podložky k podložce a zpět. Musel jsem jít pomalu, jinak by se nit přetrhla, ale bylo to o tunu rychlejší než ruční šití. Také s vodivou nití na cívce a jehle jsem získal opravdu dobré pevné spojení. Věci se třepí jako blázen, ale trocha lepidla na lepidlo nebo Elmers to vyřeší. Pokuste se udržet řádky dostatečně daleko od sebe a neměli byste mít žádné problémy. Konečná montáž: Zapněte všechny své přepínače, připojte desku, nahrajte kód a máte hotovo. Drátem jsem se dostal z desky na podložku a pak už jsem jen ručně přišil drát na základnu. Pro další verzi namontuji desku do plastové krabice se západkami, abych ji připevnil k základně, aby ji nečinné prsty neroztáhly od sebe.

Krok 8: Kód

Kód
Kód

Pokud jste nikdy předtím nenaprogramovali čip, je to poněkud skličující úkol. Nepomůže, že jsou nástroje šupinaté a většinu času musíte stejnou operaci provést vícekrát. Dva nejlepší zdroje, které jsem našel pro pochopení toho, co se děje, je stránka pro USBtinyISP, https://www.ladyada.net/make/usbtinyisp/ a rychlokurz v programování hlukové hračky, http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html Ty by vám měly pomoci začít.

Mnoho lidí má pro toto kódování rád Arduino a není nic špatného na jeho používání, kromě toho, že mám pocit, že normálně jednoduchému programu přidává hodně nadšení. Také jsem znal C a neznám Arduino. Možná jednoho dne, pokud bude čas.:) Kód: {{{#include // Pomocí špendlíku zapněte SPK /// Typedefs //////////// typedef unsigned char u8; int main (neplatné) {u8 btnState0; u8 btnState1; u8 btnState2; u8 btnState3; u8 btnState4; u8 btnState5; u8 btnState6; DDRB = (1 << DDB6); // Nastavit SPK pro výstup PORTD = (1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4); // Tlačítko nastavení vysoké PORTC = (1 << PC4) | (1 << PC6); TCCR2B = (1 << CS21); // Nastavit časovač při (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); // Flip SPK Pin TCNT2 = 0; }} if (btnState1) {if (TCNT2> = 179) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} if (btnState2) {if (TCNT2> = 159) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} if (btnState3) {if (TCNT2> = 142) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} if (btnState4) {if (TCNT2> = 126) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} if (btnState5) {if (TCNT2> = 119) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }} if (btnState6) {if (TCNT2> = 106) {PORTB ^= (1 << PD6); // Flip SPK Pin TCNT2 = 0; }}}}}}} Odkud pocházejí hřiště? Bylo potřeba trochu matematiky. Hodiny časovače na atmega 168 běží na 1MHz. Na zvuk je to příliš rychlé, takže musíme použít předzápal /8. Poté, co potřebujeme otočit výstupní kolík vysoko, pak nízko, abychom vytvořili 1 cyklus, musíme rozdělit odpověď 2, abychom našli správnou výšku. Vzorec vypadá takto: Rozteč pro vložení kódu = (1000000/8)/(Cílová frekvence*2) Pro A (440) by to pro naše účely bylo 125000/880 = 142,045 nebo 142, protože hodnota musí být celé číslo. Cílové frekvence poznámek lze nalézt téměř kdekoli online a jsou obecně stejné. Stále chci přidat příkaz case namísto použití spousty Ifs a použít PWM k lepšímu ovládání hlasitosti a výšky reproduktoru, ale prozatím to funguje.

Doporučuje: