Tartalomjegyzék:

Mikrokontroller szövethanggenerátor C-kódban: 8 lépés (képekkel)
Mikrokontroller szövethanggenerátor C-kódban: 8 lépés (képekkel)
Anonim
Mikrokontroller szövethanggenerátor C-kódban
Mikrokontroller szövethanggenerátor C-kódban

Tavaly október végén a carmitsu felhasználó, az instructables felhasználó üzenetet küldött nekem, miután meglátta a lunchbox szintetizátoromat. Üzenetéből: Általános iskolában tanítok zenét. Rengeteg felvevő zenét játszunk. azaz a gyerekek kis furulyán játszanak…… Több speciális igényű gyerekem van, akik használhatják ezeket a fekete plakátos táblákat körökkel, amelyeken a cetli neve szerepel. Ezek a diákok egyidejűleg nyomják a köröket jegyzetekkel, a többi diák dalt játszik….. A legtöbb speciális igényű gyerek ezt meglehetősen jól és időben meg tudja csinálni a zenével. Arra törekszem, hogy egy nagyon egyszerű hanggenerátort építsek fel, hogy ezek a gyerekek ugyanazt a pályát játsszák, mint amit a diákok a felvevőjükön játszanak. Csak néhány pálya lennék. Arra gondoltam, hogy valami kis gombot rögzíthetek a körük aljára, hogy amikor rájuk nyomják, a hang egy kis hangszóróból jöjjön ki, elég hangosan, hogy hallhassanak. Ha anyám tanár, és szeretem az iskolát, hogyan tudnám ellenállni? Az igazat megvallva nem tudtam. Ez nagyjából a projekt krónikája és a saját építésének útmutatója.

1. lépés: A kezdet vagy miért nem tudtam ragaszkodni az analóghoz

A kezdet vagy miért nem tudtam ragaszkodni az analóghoz
A kezdet vagy miért nem tudtam ragaszkodni az analóghoz

A jó dolgok a következő oldalon kezdődnek. Ha szeretné tudni, hogyan kötöttem ki az általam készített részeket, olvasson tovább. Az igazi időzítő: Miután elgondolkodtam a projekten, azonnal a piezo hanggenerátorra gondoltam az op-amps Forest Mims III könyvemből. Jó útnak tűnt, ez csak egy piezo, egy 741 -es IC és pár passzív komponens. Nincs nagy baj ugye? Nos, 2 problémája van, 1) ha lenyomja a kapcsolót, lehetséges a hangmagasság megváltoztatása 2) a hangolás szinte rohadt lehetetlen. Az első valószínűleg leküzdhető némi debounce technológiával, bár nem tudtam, hogyan kell ezt megtenni anélkül, hogy hozzáadnék egy másik számlálót. Probléma lehet a piezo használatával is. A második kérdés nehézkes lett, amikor elkezdett egy bizonyos pályát eltalálni. Mi a helyzet az 555 -tel? Az adatlap az ellenállásokon és kondenzátorokon alapuló időkésleltetési funkciót mutat. Ami nagyszerű mindaddig, amíg el nem kezdi beírni a valós világrészek tényleges értékeit, ekkor észreveszi, hogy a 440 Hz -es hangmagasság ütése kissé nehézkessé válik. Használhat díszítőedényeket a hangoláshoz, de idővel hajlamosak mozogni. Folyamatosan hangoljuk a hangszert, amelyet az alkatrészek költségeinek és mennyiségének gyors növekedése mellett állítottunk össze, és a feleségem, amikor megváltoztatta a hangmagasságot, amikor megnyomta a gombot, megölte az 555-öt ehhez a projekthez. op-erősítők a születésem előtt. Milyen nehéz lehet egy igazán egyszerű, kevés részből és konkrét megjegyzésből álló összeállítást készíteni? Nehezebb, mint gondoltam. A tervek többsége nagyon bonyolult ehhez a projekthez. A Synth tervezői a tökéletes hullámformát/hangot keresik. Ez közvetlenül ütközik egy olyan projekttel, amely állítólag elég olcsó az iskola vagy a tanárok költségvetéséhez. A billentyűzet építése elég egyszerű, csak egy csomó ellenállás és teljesítmény, vagy egy csomó dióda és teljesítmény. Ez az áramkör tervezésének többi része, és az egyedi nyomtatott áramköri lapok költsége, amelyek kezdenek kiesni a kezükből valakinek a kezdeti elektronikai szinten. A projekt újradefiniálása: Tehát a projektet újradefiniálták, még mielőtt igazán elindultam volna. Szükségem volt valamire, amellyel egy gombnyomással át lehet kapcsolni egy hangszórótűt. Nem akartam PCB -t tervezni és vásárolni. Ennek a lehető legkevesebb alkatrészt kellett felhasználnia, és kezdő készletként kellett összeszerelni. Végig az arcomba nézett. Duh !! Mikrokontroller! Mikrokontroller: Tehát miután megvásároltam egy Modern Devices Bare Bones Arduino készletet és egy Evil Mad Scientist Simple Target Board -ot, és hagytam, hogy hónapokig üljenek az asztalomon, amikor nem használják, tökéletes bevezető projektem volt. Elkezdtem nézni, hogy mennyi időbe telik mindkettő összeállítása, a kód tanulási görbéjét, a költségeket, a szükséges kiegészítő alkatrészeket, és azt kell tennem, hogy azt tegyem, amit akarok, és letelepedtem a céltáblán. A költségek meglehetősen egyenletesek voltak, 15 dollár plusz 20 dolláros FTDI kábel az Arduino számára, 12 dollár plusz 22 dolláros USBtinyISP programozó. Már a kis egyetemről tudtam a C ++ - t, amit ki tudok állni, és úgy gondoltam, hogy a mikrokontrollerek C -je nem lesz olyan rossz, míg azon kívül, hogy villogok, hogy biztosan összeállítsam a készletemet, nem volt Arduino -élményem. Mindkettőt fel lehetett szerelni. Nagyjából feldobás volt, így a kettő kevesebb részén, a cél táblán döntöttem.

2. lépés: Amire szüksége van 1. rev

Amire szüksége van Rev 1
Amire szüksége van Rev 1

Alkatrészek költségeUSBtinyISP AVR programozó készlet (USB SpokePOV Dongle) v2.0 $ 22.00https://www.adafruit.com/index.php? Main_page = product_info & cPath = 16 & products_id = 46 5 pk $ 2.75https://evilmadscience.com/tinykitlist/74-atmegaxx8Speaker (8 ohmos Mini) 5) 3,49 USD (4 csomag) https://www.radioshack.com/product/index.jsp?productId=2062539"AAA "Akkumulátor tartó $ 1,79 Submini csúszka (opcionális a tápkapcsolóhoz) 2,69 USD (2 csomag) https://www.radioshack.com/product/index.jsp?productId=2062490LED és ellenállás (opcionális, ha áramellátást szeretne) $ ingyenes ha heverésznek Mozgási fluxus) Ha pénzt szeretne spórolni néhány helyen, nem kell alkatrészeket beszereznie a RadioShack -től. Megtettem, mert közel vannak és kiszámíthatóak.

3. lépés: Összeszerelés 1. rev

Összeszerelés 1. rev
Összeszerelés 1. rev
Összeszerelés 1. rev
Összeszerelés 1. rev

Rakja össze az alkatrészeket az ábrán látható módon. Feltétlenül használjon dörzsölő alkoholt és fluxuskefét, ha elkészült, hogy megszabaduljon a forrasztásból származó folyástól. A Schematic alább található azok számára, akik ezt preferálják. A D1 és az R1 bármi lehet, amit csak akar, ez csak egy fényjelző. A C1 csak az, hogy segítsen egy kicsit következetesebbé tenni a teljesítményt. Én 10uF -et használtam. Ez a vázlat ugyanaz a későbbi verzióknál is, csak cserélje ki a nyomógombokat szövetkapcsolókhoz. a legutóbbi verzióban kapcsolókat adtam hozzá a PC4 -hez és a PC5 -hez, vagy a 27 -es és 28 -as csapokhoz.

4. lépés: Amire szüksége van Rev 2

Amire szüksége van Rev 2
Amire szüksége van Rev 2

Tehát alapvetően a Radio Shack gombjait kézzel készített szövetre cseréli. Szüksége van: Több színű szövetre, vagy egy színre, ha minden jegyzetet azonos színűre szeretne. A legközelebbi textilbolt foltvarró szakasza a legjobb hely, ahol olcsón beszerezheti ezt. A steppelőnegyedek ára 1,50 dollár, és egy csomó kapcsolót kaphat ki belőle. Vezetőképes szövet, azt javaslom, hogy a LessEMF Flectron szövete 20 dollár egy 12 "x54" méretű darabért. A legtöbb szövetboltban olcsón beszerezheti őket. JoAnn rendelkezik a szerszámmal és 25 dollárért 2 dollárért. Ehhez kalapácsra lesz szüksége. Vezeték, 22AWG -t használtam, javaslom, hogy ha van, kisebbet. Ragasztás, hogy a színes és vezető anyag összeragadjon. Kérdezd meg a boltban, és valószínűleg az udvaron vásárolhatod meg. Ez valószínűleg jól működne, bár azt javaslom, hogy kérdezzen meg valakitől, először egy nagyon laza cuccot használtam, majd valami feszesebb kötésre váltottam. Azt javaslom, hogy csak próbáljon ki néhányat, amíg meg nem találja, ami a legjobban működik. A hőre zsugorodó cső, ez sokkal kezelhetőbbé tette az egészet. hőzsugorodó vezetékeket egymás mellett haladva sokkal jobban fognak maradni.

5. lépés: Összeszerelés 2. verzió

Assembly Rev. 2
Assembly Rev. 2
Assembly Rev. 2
Assembly Rev. 2
Assembly Rev. 2
Assembly Rev. 2

Fektesse egymásra a többszínű szövetet, és vágjon ki egy négyzetet, nem kell tökéletesnek lennie. Vasalja ki az anyagot, hogy kihajtsa, ismét rétegezze őket egymásra, és győződjön meg arról, hogy az élek illeszkednek. Vágja le az éleket, amelyek nem. Vágja le a felső és alsó kört, a bal és a jobb oldalt egyenesen. Varrás után megfordítja a kapcsolót, ezért ne tegye túl kerekre a lekerekített oldalakat, és hagyjon elegendő magasságot a lapos oldalakon, hogy könnyedén benyomhassa a kapcsolót, ha elkészült. Kerekítse ki az első és az utolsó kapcsoló lapos oldalát. Hajtsa át a varrógépét, és tegyen össze két kört úgy, hogy a jó oldal egymással szemben legyen, és varrjon egy varrást a lapos részekre. Miután a gombok teteje varrott, vágott négyzeteket a vezető anyagból, és az egyik oldalt össze kell kötni. Vágja a huzalt hosszúságúra, és csupaszítsa le az egyik végét. forrasztja a vezetéket az egyik hurok körül. (a forrasztás valószínűleg nem tapad a fűzőlyukhoz) Vágjon egy kis fényt a szövetbe az egyik sarkában, és kalapálja meg a fűzőlyukat, hogy rögzítse az anyagot és a drótot. távolítsa el a hátlapot a biztosítékból, és olvassza össze a vezető anyagot a színes szövet hátoldalával. Ismételje meg az összes kapcsolót. A dolgok megkönnyítése érdekében felmelegítheti a zsugorcsöveket, amikor a vezetékek áthaladnak a következő kapcsolónál. Vegyen vagy készítsen egy darab szövetet a kapcsoló készlet hosszában, és vágjon le egy vezetőképes anyagból készült csíkot. A színes kapcsolókkal ellentétben ez egy hosszú darab. Ezt fogják érinteni a gombok a kapcsolat létrehozásához. Vágjon le egy kis rést, és rögzítsen rá egy huzalt egy lyukkal, mint a színes kapcsoló teteje. Rögzítse az alsó szövet hátsó részéhez. Varrja a felső és alsó részt a vezető anyaggal kifelé, és használjon egy botot, hogy megfordítsa a készletet, miután megvarrta. Vágjon néhány kis lyukat az ütésben, evőpálcikát használtam egy kört, majd csak távolítsa el a pálcikát, és végezze el a vágást. Vágja őket formára és helyezze be a kapcsolókba. Ez tartja szét a vezetőképes szövetet. Lehet, hogy könnyebb behelyezni az ütőt, miközben megfordítja a kapcsolókat, nem pedig utána. A cuccok, amelyeket használtam, nagyon rosszul szakadtak, miközben behelyeztem, és különböző ütéseket kellett kapnom. Végül csatlakoztassa a vezetékeket a céllaphoz, és készen áll. A hosszú alsó csíkot ledarálják.

6. lépés: Amire szüksége van Rev 3

Amire szüksége van Rev 3
Amire szüksége van Rev 3

A 3. verzióban a kapcsolókat a vezetékektől függetlenítettem. Ez rengeteg időt takarított meg. A kész eredmény kinézete is sokkal jobban tetszik. Tehát itt vannak az új alkatrészek, amelyekre szüksége van: Snaps, Most kaptam őket JoAnn -tól. 7 dollárért nem rossz telepítőeszközzel érkeztek, inkább az egyik fogóeszközt javaslom, mivel szét kellett szednem a szerszámomat, hogy a pattanásokat középre telepítsem. A varrás jó alternatíva lenne, bár hosszabb ideig tart. A vezető szál, a Spark Fun olyan dolgokat tartalmaz, amelyek a varrógépbe kerülhetnek. Nagyon lassan kellett mennem a gépemben, különben elszakad a cérna. A futásteljesítmény változhat

7. lépés: Összeszerelés 3. rev

Összeszerelés Rev. 3
Összeszerelés Rev. 3
Összeszerelés Rev. 3
Összeszerelés Rev. 3
Összeszerelés Rev. 3
Összeszerelés Rev. 3
Összeszerelés Rev. 3
Összeszerelés Rev. 3

Ez a felülvizsgálat az építésig eltelt idő tekintetében sokkal jobb volt, mint az előző. Ezenkívül a cserélhető kapcsolók többször is megmentették a józan eszemet. Kezdje az alap elkészítésével. Ez csak egy foltvarró negyed, félbehajtva. Tegyen egy réteg ütőt a tetejére, és varrjon, hagyjon lyukat a megfordításához. Nyomja át a dolgot a lyukon, és alapvetően van egy párna típusú dolga. Lepattantam, így könnyebb volt vele dolgozni. Használjon sima szálat és diót. Gyémántot csináltam ezen, de talán legközelebb egy sárkányt teszek hátra, vagy valami klasszat. Most pedig a kapcsolókra. Tetszik ez a dizájn, mert alapvetően rengeteg ilyet készíthet előre, és csak használhatja, amit akar. Kezdje azzal, hogy kartonpapírt, papírt vagy szövetdarabot használ, és vágjon belőle egy körte formát. Használja ezt útmutatóként az egyes kapcsolók tetejének és aljának vágásához. Minden aljára egy színt vágok, a tetejéhez más színt, de kreatív lehet, és azt tehet, amit akar. Vágja le az útmutatót egy nyalókaformához, amely könnyen illeszkedik a kapcsolóba. Hosszabbítsa meg a "botot", hogy át tudja tekerni a "körte" szélét. Vágja ki a formát a beolvasztó és vezető anyagból, és olvassza össze a vezető szövet egyik oldalát. Távolítsa el a hátlapot a beégetőanyagból, és illessze a szövet tetejére, amely az alján lesz, és a szövet aljára, amely a tetején lesz. Tekerje a felesleges részt a tetejére. Menjen át a varrógépéhez, és üssön lyukat a felső és az alsó szövet közé. Varrjon kívül a vezető anyagon, és ugorjon át a kapcsoló "bot" részén. Megállapítottam, hogy a felső vezető anyagot az alsó részhez lehet varrni, rövidzárlatot létrehozva. Jobb, ha nem varrja át a vezető anyagot. Csatlakoztassa a pattanásokat, és a kapcsoló kész. Könnyebbnek találtam a férfi pattintást az összes alsó/GND csatlakozáshoz, és a női csattanót az összes felsőhöz. Ez az összes kapcsolót felcserélhetővé teszi. Az áramkör: A fordulóvágás lényege az, hogy sok extra bitje van. Fogtam a törmelékemet, a nagy összeolvasztó darabokat összeolvasztottam a vezető anyag szövetdarabjaival, és ezekkel vágtam ki a kisebb téglalapokat, amelyeket betétként használtam. Döntse el nagyjából a kapcsolókat, és rögzítse a párnákat az alaphoz, elegendő hely van ahhoz, hogy egy vonalat varrjon hozzájuk, és pattanjon. A varrógép lába, amit használtam, nem nézte jó szemmel, hogy nagyon közel van a pattintáshoz, ezért ezt tartsa szem előtt, és adjon magának egy kis teret. Mivel vezetőképes cérnát kaptam a varrógépembe, csak varrtam egy sort a padról a padra és vissza. Lassan kellett mennem, különben elszakad a cérna, de egy tonnával gyorsabb volt, mint a kézi varrás. Az orsón és a tűn vezetőképes szállal is nagyon jó szilárd csatlakozást kaptam. A cucc őrülten törik, de egy kis kézműves ragasztó vagy Elmers ezt tisztázza. Próbálja távol tartani a vonalakat egymástól, és nem lehet probléma. Végső összeszerelés: Csatlakoztassa az összes kapcsolót, csatlakoztassa a táblát, töltse be a kódot, és kész. Drót segítségével eljutottam a tábláról a padhoz, majd csak kézzel varrtam a vezetéket az alaphoz. A következő verzióhoz a táblát egy műanyag dobozba fogom rögzíteni, pattanásokkal, hogy rögzítse az alaphoz, hogy az üresjárati ujjak ne húzzák szét.

8. lépés: Kód

Kód
Kód

Ha még soha nem programozott chipet, ez kissé ijesztő feladat. Nem segít, ha az eszközök pikkelyesek, és legtöbbször ugyanazt a műveletet többször kell elvégezni. A két legjobb forrás, amit találtam annak megértéséhez, hogy mi történik, az USBtinyISP oldala, https://www.ladyada.net/make/usbtinyisp/ és a zajjáték programozásának rövid tanfolyama, http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html Ezekkel el kell indulnia.

Sokan szeretik az Arduino -t ehhez a kódoláshoz, és nincs semmi baj a használatával, csak én úgy érzem, hogy ez sok felfúvódást okoz egy normálisan egyszerű programnak. Ismertem C -t és nem ismerem Arduino -t. Talán egy nap, ha lesz idő.:) Kód: {{{#include // Rögzítővel kapcsolja be az SPK -t /// 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); // Az SPK beállítása a PORTD = (1 << PD0) kimenetre (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4); // A gomb magas beállítása PORTC = (1 << PC4) | (1 << PC6); TCCR2B = (1 << CS21); // Időzítő beállítása, miközben (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); // SPK csap elfordítása TCNT2 = 0; }} if (btnState1) {if (TCNT2> = 179) {PORTB ^= (1 << PD6); // SPK csap elfordítása TCNT2 = 0; }} if (btnState2) {if (TCNT2> = 159) {PORTB ^= (1 << PD6); // SPK csap elfordítása TCNT2 = 0; }} if (btnState3) {if (TCNT2> = 142) {PORTB ^= (1 << PD6); // SPK csap elfordítása TCNT2 = 0; }} if (btnState4) {if (TCNT2> = 126) {PORTB ^= (1 << PD6); // SPK csap elfordítása TCNT2 = 0; }} if (btnState5) {if (TCNT2> = 119) {PORTB ^= (1 << PD6); // SPK csap elfordítása TCNT2 = 0; }} if (btnState6) {if (TCNT2> = 106) {PORTB ^= (1 << PD6); // SPK csap elfordítása TCNT2 = 0; }}}}}}} Honnan származnak a pályák? Kellett egy kis matek. Az atmega 168 időzítője 1MHz -en működik. Ez túl gyors az audióhoz, ezért az előskálázót kell használnunk /8. Aztán mivel a kimeneti csapot magasra, majd alacsonyra kell fordítanunk ahhoz, hogy 1 ciklust csináljunk, el kell osztanunk a választ 2 -vel, hogy a megfelelő hangmagassággal rendelkezzünk. A képlet így néz ki, Pitch, hogy írja be a kódot = (1000000/8)/(Célfrekvencia*2) A (440) esetén ez 125000/880 = 142,045 vagy 142 lenne a mi célunkból, mivel az értéknek egésznek kell lennie. A jegyzetek célfrekvenciája szinte bárhol megtalálható az interneten, és általában mindegyik azonos. Továbbra is szeretnék egy esetjelentést hozzáadni ahelyett, hogy egy csomó If -t használnék, és a PWM -et használom a hangszóró hangerejének és hangmagasságának jobb szabályozására, de ez most működik.

Ajánlott: