Sisällysluettelo:

Mikro-ohjaimen kangasäänen generaattori C-koodissa: 8 vaihetta (kuvilla)
Mikro-ohjaimen kangasäänen generaattori C-koodissa: 8 vaihetta (kuvilla)

Video: Mikro-ohjaimen kangasäänen generaattori C-koodissa: 8 vaihetta (kuvilla)

Video: Mikro-ohjaimen kangasäänen generaattori C-koodissa: 8 vaihetta (kuvilla)
Video: High Density 2022 2024, Heinäkuu
Anonim
Mikro-ohjaimen kangasäänen generaattori C-koodissa
Mikro-ohjaimen kangasäänen generaattori C-koodissa

Viime vuoden lokakuun lopussa ohjattavien käyttäjien carmitsu lähetti minulle viestin lounaslaatikon syntetisaattorin näkemisen jälkeen. Hänen viestinsä: Opetan musiikkia peruskoulussa. Soitamme paljon levysoitinta. eli lapset leikkivät pieniä huiluja …… Minulla on useita erityistarpeisia lapsia, jotka voivat käyttää näitä mustia julisteitauluja, joissa on ympyrät, joissa on nuotin nimi. Nämä opiskelijat työntävät ympyröitä muistiinpanojen nimillä samaan aikaan, kun muut oppilaat soittavat kappaleen….. Suurin osa erityislapsista voi tehdä tämän melko hyvin ja ajoissa musiikin kanssa. Haluan rakentaa hyvin yksinkertaisen äänigeneraattorin, jotta nämä lapset voisivat soittaa samaa kenttää kuin ne, joita opiskelijat soittavat tallentimillaan. Olisin vain muutaman kentän. Ajattelin, että voisin kiinnittää jonkinlaisen pienen painikkeen pyöreiden ympyröidensä pohjaan, jotta kun he painavat niitä, ääni tulee pienestä kaiuttimesta, tarpeeksi kovaa, jotta he voisivat kuulla. Kuinka voisin vastustaa opettajan äitiä ja koulusta pitämistä? Totta puhuen en voinut. Tämä on melkein kronikka hankkeesta ja ohjeet oman rakentamiseen.

Vaihe 1: Alku tai miksi en voinut pitää kiinni analogisesta

Alku tai miksi en voinut pysyä analogisessa
Alku tai miksi en voinut pysyä analogisessa

Hyvä asia alkaa seuraavalla sivulla. Jos haluat tietää, miten päädyin käyttämiisi osiin, lue eteenpäin. Todellinen ajastin: Kun olin miettinyt projektia jonkin verran, ajattelin heti pietsosävygeneraattoria op-vahvistimistani Forest Mims III -kirjasta. Se näytti hyvältä tieltä, se on vain pietso, 741 IC ja pari passiivista komponenttia. Ei iso juttu oikein? Siinä on kaksi ongelmaa, 1) kun painat kytkintä, on mahdollista muuttaa äänenvoimakkuutta 2) se on helvetin mahdotonta virittää. Ensimmäinen voitaisiin todennäköisesti voittaa jollakin debounce -tekniikalla, vaikka en tiennyt kuinka tehdä se lisäämättä toista laskuria. Se voi myös olla ongelma pietson käytössä. Toinen ongelma tuli vain hankalaksi, kun aloitit yrittää osua tiettyyn kenttään. Entä 555? Tietolomake näyttää vastuksiin ja kondensaattoreihin perustuvan aikaviiveen. Mikä on hienoa, kunnes alat kirjoittaa todellisten osien todellisia arvoja, silloin huomaat, että 440 Hz: n taajuusalueen lyöminen alkaa olla hieman vaikeaa. Voit säätää sitä säätöruukkujen avulla, mutta ajan myötä niillä on taipumus liikkua. Viritämme jatkuvasti instrumenttia, joka on koottu osien kustannusten ja määrän nopean nousun päälle, ja vaimoni, joka muutti äänenvoimakkuutta painettaessa nappia, tappoi tämän projektin 555: n. op-vahvistimet ennen syntymääni. Kuinka vaikeaa voisi olla tehdä todella yksinkertainen kappale, jossa on muutamia osia ja erityisiä muistiinpanoja? Vaikeampaa kuin luulin. Suurin osa malleista on hyvin monimutkaisia tähän projektiin. Synth -suunnittelijat haluavat täydellisen aaltomuodon/sävyn. Tämä on suoraan ristiriidassa hankkeen kanssa, jonka oletetaan olevan tarpeeksi halpaa koulujen tai opettajien budjetille. Näppäimistön rakentaminen on tarpeeksi helppoa, se on vain joukko vastuksia ja tehoa tai joukko diodeja ja virtaa. Se on muu piirisuunnittelu ja mukautettujen piirilevyjen kustannukset, jotka alkavat päästä käsistä jollekin elektroniikan alussa. Projektin uudelleenmäärittely: Joten projekti määriteltiin uudelleen ennen kuin edes aloitin. Tarvitsin jotain, joka voisi vaihtaa kaiuttimen nastan ajoissa napin painalluksella. En halunnut suunnitella ja ostaa piirilevyä. Tämän piti käyttää mahdollisimman vähän komponentteja ja se oli koottava aloittelijasarjaksi. Se tuijotti minua kasvoihin koko ajan. Huh !! Mikro -ohjain! Mikro -ohjain: Joten kun olin ostanut sekä Modern Devices Bare Bones Arduino -sarjan että Evil Mad Scientist Simple Target Boardin ja antanut heidän istua pöydälläni kuukausia käyttämättä, minulla oli täydellinen esittelyprojekti. Aloin tarkastella aikaa, joka kuluu molempien kokoamiseen, koodin oppimiskäyrää, kustannuksia, tarvittavia lisäosia ja saada se tekemään haluamani ja asettumaan kohdetaululle. Hinta oli melko tasainen, 15 dollaria plus 20 dollarin FTDI -kaapeli Arduinolle, 12 dollaria plus 22 dollarin USBtinyISP -ohjelmoija. Tiesin jo C ++: n pienestä yliopistosta, jonka pystyin seisomaan, ja tajusin, että mikrokontrollerien C ei olisi niin paha, kun taas muu kuin vilkkuminen valon varmistamiseksi, että laitoin paketin oikein, minulla ei ollut Arduino -kokemusta. Molemmat voitaisiin asentaa. Se oli melkein heitto, joten päätin näiden kahden osan vähemmän, kohdetaulun.

Vaihe 2: Mitä tarvitset Rev 1

Mitä tarvitset Rev 1
Mitä tarvitset Rev 1

Osien hintaUSBtinyISP AVR Programmer Kit (USB SpokePOV Dongle) v2.0 $ 22.00https://www.adafruit.com/index.php? Main_page = product_info & cPath = 16 & products_id = 46 5-pk 2,75 dollaria 5) 3,49 dollaria (4 kpl) https://www.radioshack.com/product/index.jsp?productId=2062539"AAA "Akun pidike 1,79 dollariahttps://www.radioshack.com/product/index.jsp? ProductId = 2102735SPST Submini-liukukytkin (valinnainen virtakytkimelle) 2,69 dollaria (2 kpl) https://www.radioshack.com/product/index.jsp?productId=2062490LED ja vastus (valinnainen, jos haluat virtavalon) $ pitäisi olla ilmainen jos he makaavat langan $ pitäisi myös maata ympärillä hopeajuotos (jos tämä on menossa lähelle lapsia, sinun ei luultavasti pitäisi käyttää lyijyä, vanhemmat saavat melko outoa tällaisesta asiasta;)) alkoholin hankaaminen (uudelleen Jos haluat säästää rahaa, sinun ei tarvitse hankkia osia RadioShackilta. Tein, koska ne ovat lähellä ja ennustettavissa.

Vaihe 3: Kokoonpano Rev 1

Kokoonpano Rev 1
Kokoonpano Rev 1
Kokoonpano Rev 1
Kokoonpano Rev 1

Laita osat yhteen kuvan osoittamalla tavalla. Muista käyttää hankaavaa alkoholia ja juoksevaa harjaa, kun olet valmis päästämään eroon juotoksesta tulevasta juoksevasta aineesta. D1 ja R1 voivat olla mitä haluat, se on vain virtavalo. C1 auttaa vain tehon muuttamisessa tasaisemmaksi. Käytin 10uF. Tämä kaavio on sama myöhemmille versioille, vaihda vain painikkeet kangaskytkimiin. viimeisessä versiossa lisäsin kytkimet PC4: een ja PC5: een tai nastat 27 ja 28.

Vaihe 4: Mitä tarvitset Rev 2

Mitä tarvitset Rev 2
Mitä tarvitset Rev 2

Joten periaatteessa vaihdat Radio Shack -painikkeet käsintehtyihin kankaisiin. Lähin kangaskaupan tikkausosa on paras paikka saada tämä halvalla. Tikkaus neljännekset ovat 1,50 dollaria ja saat tonnia kytkimiä yhdestä. Johtava kangas, ehdotan LessEMF: n Flectron -kangasta, joka on 20 dollaria 12 "x54" -kappaleesta Silmukat langan kiinnittämiseksi kankaaseen. Niitä saa edullisesti useimmista kangaskaupoista. JoAnnilla on työkalu ja 25 dollaria 2 dollaria. Tarvitset vasaran tähän. Lanka, käytin 22AWG: tä, ehdotan pienempää, jos sinulla on se. Kysy kaupasta ja voit todennäköisesti ostaa sen pihalta. Tämä toimisi luultavasti hyvin, vaikka ehdotankin, että kysyisit joltain lyönnistä, käytin aluksi todella löysää tavaraa ja vaihdoin sitten jotain tiukempaa neuloa. Ehdotan, että kokeilet vain kahta erilaista, kunnes löydät parhaiten toimivan lämmön kutisteputken, mikä teki koko asiasta paljon hallittavamman. kutistavat johdot yhteen kulkiessaan toistensa ohi ja ne pysyvät paljon paremmin.

Vaihe 5: Asennus Rev 2

Kokoonpano Rev 2
Kokoonpano Rev 2
Kokoonpano Rev 2
Kokoonpano Rev 2
Kokoonpano Rev 2
Kokoonpano Rev 2

Aseta monivärinen kangas päällekkäin ja leikkaa neliö, sen ei tarvitse olla täydellinen. Silitä kangasta saadaksesi taitokset pois, kerro ne uudelleen päällekkäin ja varmista, että reunat vastaavat toisiaan. Leikkaa kaikki reunat, jotka eivät tee sitä. Aiot kääntää kytkimen ompelun jälkeen, joten älä tee pyöristetyistä sivuista liian pyöreitä ja jätä tasaisille sivuille tarpeeksi korkeutta työntääksesi kytkin helposti läpi, kun olet valmis. Pyöritä ensimmäisen ja viimeisen kytkimen tasainen puoli. ompele, leikkaa neliöt johtavasta kankaasta ja kiinnitä toinen puoli. Katkaise lanka pituuteen ja kuori toinen pää. juota lanka yhden silmukan ympärille. (juote ei todennäköisesti tartu silmukkaan) Leikkaa pientä valoa kankaaseen toisesta kulmasta ja vasara silmukalla kankaan ja langan kiinnittämiseksi. irrota tausta sulakkeesta ja kiinnitä johtava kangas värillisen kankaan takaosaan. Toista kaikki kytkimet. Asioiden helpottamiseksi voit lämmittää kutisteputken johdot yhteen aina, kun yksi johto kulkee seuraavan kytkimen johdon läpi. Toisin kuin värilliset kytkimet, tämä on yksi pitkä kappale. Tätä painikkeet koskettavat muodostaakseen yhteyden. Leikkaa pieni rako ja kiinnitä siihen lanka silmukalla, kuten värilliset kytkimet. Ompele ylä- ja alaosa yhteen johtavan kankaan kanssa ulospäin, käytä piikkitankoa kääntääksesi sarjan ompelun jälkeen. Leikkaa muutama pieni reikä lyöntiin ympyrä ja poista sitten syömäpuikko ja leikkaa. Leikkaa ne muotoon ja aseta ne kytkimiin. Tämä pitää johtavan kankaan erossa toisistaan, mutta vanteen asettaminen voi olla helpompaa, kun käännät kytkimiä sen jälkeen. Käyttämäni tavarat repeytyivät melko huonosti, kun olin asettamassa sitä, ja minun piti saada erilainen lyönti. Pitkä pohjaliuska hiotaan.

Vaihe 6: Mitä tarvitset Rev 3

Mitä tarvitset Rev 3
Mitä tarvitset Rev 3

Rev 3: ssa tein kytkimet riippumattomiksi johdotuksesta. Tämä säästi paljon aikaa. Pidän myös lopputuloksen ulkonäöstä paljon enemmän, joten tässä on tarvitsemasi uudet osat: Snaps, Just got them from JoAnn's. Heillä oli asennustyökalu, joka ei ole huono 7 dollarilla. Ompeleet olisivat hyvä vaihtoehto, vaikka niiden kiinnittäminen kestää kauemmin. Minun piti mennä todella hitaasti koneessani, muuten lanka katkeaa. Kilometrimäärä voi vaihdella

Vaihe 7: Kokoonpano Rev 3

Kokoonpano Rev 3
Kokoonpano Rev 3
Kokoonpano Rev 3
Kokoonpano Rev 3
Kokoonpano Rev 3
Kokoonpano Rev 3
Kokoonpano Rev 3
Kokoonpano Rev 3

Tämä uudistus oli paljon parempi kuin edellinen rakentamisen ajaksi. Lisäksi irrotettavat kytkimet pelastivat mielenterveyteni useammin kuin kerran. Aloita tekemällä pohja. Se on vain yksi tikkaus neljännes taitettuna puoliksi. Aseta kerros vanua päälle ja ompele, jätä reikä kääntääksesi sen. Työnnä asia reiän läpi ja sinulla on pohjimmiltaan tyyny. Tikatin sen, joten sen kanssa työskentely oli helpompaa. Käytä tavallista lankaa ja pähkinöitä. Tein timantteja tällä, mutta ehkä seuraavalla kerralla laitan lohikäärmeen taakse tai jotain siistiä, nyt kytkimiin. Pidän tästä suunnittelusta, koska voit periaatteessa tehdä paljon näitä etukäteen ja käyttää vain mitä haluat. aloita käyttämällä pahvipaperia, paperia tai kangasta ja leikkaa siitä päärynän muoto. Käytä sitä oppaana katkaisemaan ylä- ja alaosa jokaiselle kytkimelle. Leikkasin yhden värin kullekin pohjalle ja eri värin yläosille, mutta voit olla luova ja tehdä mitä haluat. Pidennä "tikkua" niin, että se voi kääriä "päärynän" reunan yli. Leikkaa muoto pois sulavasta ja johtavasta kankaasta ja yhdistä johtavan kankaan toinen puoli. Poista tausta kiinnitysmateriaalista ja kiinnitä se kankaan yläosaan, joka on pohjassa, ja kankaan pohjaan, joka tulee päälle. Kiedo ylimääräinen osa yläosan ympärille. Siirry ompelukoneesi luo ja laita lyönti, jossa on reikiä ylä- ja alakankaan väliin. Ompele johtavan kankaan ulkopuolelle ja ohita kytkimen "tikku" -osa. Huomasin, että ylempi johtava kangas on mahdollista ommella pohjaan muodostaen lyhyen. On parempi olla ompelematta johtavan kankaan läpi. Kiinnitä napsautukset ja kytkin on valmis. Minusta oli helpompaa käyttää uroskiinnikettä kaikkiin pohja-/GND -liitäntöihin ja naaraskiinnitystä kaikkiin yläosiin. Tämä tekee kaikista kytkimistä keskenään vaihdettavia. Otin tähteeni, sulatin suuret sulatuskappaleet suuriin johtavan kankaan palasiin ja leikkasin niistä pienemmät suorakulmiot, joita käytin tyynyinä. Aseta kytkimet karkeasti ja kiinnitä tyynyt pohjaan niin, että niissä on tarpeeksi tilaa ompelemaan linja ja napsauta. Käyttämäni ompelukoneen jalka ei suhtautunut ystävällisesti siihen, että se oli todella lähellä napsahdusta, joten pidä tämä mielessä ja anna itsellesi tilaa. Koska sain johtavan langan, joka voisi mennä ompelukoneeseeni, ompelin vain viivan tyynystä tyynyyn ja takaisin. Minun piti mennä hitaasti tai lanka katkeaa, mutta se oli tonnia nopeampi kuin käsin ompelu. Myös puolan ja neulan johtavalla langalla sain todella hyvän kiinteän liitoksen. Tavarat murenevat kuin hullu, mutta pieni käsityöliima tai Elmers poistaa sen. Yritä pitää linjat kaukana toisistaan, eikä sinulla pitäisi olla ongelmia. Lopullinen kokoonpano: Napsauta kaikki kytkimet, kytke levy, lataa koodi ja olet valmis. Käytin johtoa päästäkseni levyltä tyynylle ja ompelin sitten vain langan pohjaan käsin. Seuraavaa versiota varten asennan levyn muovilaatikkoon, jossa on napsautukset sen kiinnittämiseksi pohjaan, jotta tyhjäkäynnillä olevat sormet eivät irrota sitä.

Vaihe 8: Koodi

Koodi
Koodi

Jos et ole koskaan ohjelmoinut sirua aikaisemmin, tämä on hieman pelottava tehtävä. Ei auta, että työkalut ovat hilseileviä ja useimmiten sinun on suoritettava sama toimenpide useita kertoja. Kaksi parasta resurssia, joita olen löytänyt ymmärtääkseni, mitä tapahtuu, on USBtinyISP: n sivu, https://www.ladyada.net/make/usbtinyisp/ ja melulelujen ohjelmoinnin törmäyskurssi, http:/ /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html Näiden pitäisi auttaa sinua pääsemään alkuun.

Monet ihmiset pitävät Arduinosta tästä koodauksesta, eikä sen käyttämisessä ole mitään vikaa, paitsi minusta tuntuu, että se lisää paljon turvotusta normaalisti yksinkertaiseen ohjelmaan. Lisäksi tiesin C: n, enkä Arduinoa. Ehkä jonain päivänä, jos on aikaa.:) Koodi: {{{#include // Ota SPK käyttöön nastalla /// Typedefs /////////// typedef unsigned char u8; int main (mitätön) {u8 btnState0; u8 btnState1; u8 btnState2; u8 btnState3; u8 btnState4; u8 btnState5; u8 btnState6; DDRB = (1 << DDB6); // Aseta SPK lähdölle PORTD = (1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 PD4); // Aseta painike korkea PORTC = (1 << PC4) | (1 << PC6); TCCR2B = (1 <CS21); // Aseta ajastin, kun (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); // Käännä SPK -nasta TCNT2 = 0; }} jos (btnState1) {if (TCNT2> = 179) {PORTB ^= (1 << PD6); // Käännä SPK -nasta TCNT2 = 0; }} if (btnState2) {if (TCNT2> = 159) {PORTB ^= (1 << PD6); // Käännä SPK -nasta TCNT2 = 0; }} if (btnState3) {if (TCNT2> = 142) {PORTB ^= (1 << PD6); // Käännä SPK -nasta TCNT2 = 0; }} if (btnState4) {if (TCNT2> = 126) {PORTB ^= (1 << PD6); // Käännä SPK -nasta TCNT2 = 0; }} if (btnState5) {if (TCNT2> = 119) {PORTB ^= (1 << PD6); // Käännä SPK -nasta TCNT2 = 0; }} jos (btnState6) {if (TCNT2> = 106) {PORTB ^= (1 << PD6); // Käännä SPK -nasta TCNT2 = 0; }}}}}}} Mistä kentät tulevat? Pientä matematiikkaa tarvittiin. Atmega 168: n ajastinkello toimii 1 MHz: n taajuudella. Se on liian nopea äänelle, joten meidän on käytettävä esiasetinta /8. Sitten kun meidän on käännettävä ulostulonappi korkealle sitten matalalle, jotta voimme tehdä yhden syklin, meidän on jaettava vastaus kahdella, jotta saadaan aikaan oikea korkeus. Kaava näyttää tältä, Pitch syöttää koodi = (1000000/8)/(tavoitetaajuus*2) A (440): lle tämä olisi 125000/880 = 142,045 tai 142, koska arvon on oltava kokonaisluku. Muistiinpanojen tavoitetaajuudet löytyvät melkein mistä tahansa verkossa ja ovat yleensä samat. Haluan edelleen lisätä tapauslausuman sen sijaan, että käytän joukkoa If -laitteita ja käytä PWM: ää kaiuttimen äänenvoimakkuuden ja äänenvoimakkuuden hallitsemiseksi paremmin, mutta toistaiseksi tämä toimii.

Suositeltava: