Sisällysluettelo:
- Vaihe 1: Rekisteriosoitteiden määrittäminen
- Vaihe 2: Taulukot ja globaalimuuttujat
- Vaihe 3: "serial.begin" -toiminto
- Vaihe 4: "Sarja. Käytettävissä" -toiminto
- Vaihe 5: "Serial.read" -toiminto
- Vaihe 6: "serial.write" -toiminto
- Vaihe 7: Asennustoiminto
- Vaihe 8: Silmukka- ja ISR -toiminnot
- Vaihe 9: Johdotus
- Vaihe 10: Yhdistä kaikki
Video: Arduino -sävygeneraattori ilman kirjastoa tai sarjatoimintoja (keskeytyksillä): 10 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Tämä ei ole asia, johon yleensä tekisin opastettavan, mieluummin metallityöni, mutta koska olen sähkötekniikan opiskelija ja minun on suoritettava luokka mikrokontrollereista (Embedded Systems Design), ajattelin tehdä opastettavan yksi projekteistani. Kun tein alun perin projektin ja muut tälle luokalle, huomasin, että on hyvin vähän tai ei lainkaan opetusohjelmia, jotka eivät käytä arduino -kirjaston toimintoja tai sarjatoimintoja, mikä oli toinen syy, miksi ajattelin, että tämä olisi hyvä opettavainen.
Tämä koodi on suunniteltu Atmega 2560 -mikro -ohjaimelle, joten jos haluat ottaa sen käyttöön toisella kortilla, sinun on muutettava koodirekisterit ohjaimesi käyttöoppaan perusteella. Koodin perusajatus on, että aina kun näppäilet näppäimistön näppäimen sarjamonitoriin, arduino mega lähettää tietyn taajuuden sen mukaan, mitä näppäintä painat, ja "q" nollaa sen. Tein sen niin, että "a" lähettää A -tasaisen taajuuden ja "A" antaa A -terävän taajuuden, "b" antaa B -tason, "c" C -tasaisen, "C" C -terävän ja niin edelleen. Koko koodi ladataan lopussa, mutta jokainen vaihe hajottaa koodin osiin, jotta se on helpompi selittää.
Vaihe 1: Rekisteriosoitteiden määrittäminen
Tämä vaihe on helppo, jos käytät atmega 2560 -laitetta, sinun on vain käytettävä käyttämiäni osoitteita, mutta jos käytät eri sirulla varustettua levyä, sinun on löydettävä kunkin rekisterin osoitteet sirujen käyttöopas. Yläosassa olevat määritelmät ovat vain vakioita, joita käytetään toiminnoissamme myöhemmin. Määritämme osoitteet epävakaiksi allekirjoittamattomiksi, koska emme halua kääntäjän sekoittavan niihin.
Vaihe 2: Taulukot ja globaalimuuttujat
Tässä haluamme määritellä taajuusryhmän, joka sisältää kaikki taajuudet, jotka kukin avain antaa. Nämä arvot lasketaan todellisista nuotin taajuuksista, ja rehellisesti unohdin, miten sain ne, mutta ne ovat oikeat arvot, kun testasin niitä oskilloskoopilla varmistaakseni. Määrittelemme myös nuottijoukon, joka sisältää kaikki kunkin näppäimen painettavat näppäimet sekä muuttujat, joita tarvitsemme myöhempiin toimintoihimme.
Vaihe 3: "serial.begin" -toiminto
Kutsumme mukautettua toimintoamme, joka toistaa "serial.begin" -funktion U0init (). Se ottaa halutun siirtonopeuden syötteeksi ja käynnistää sarjaportin kyseisellä siirtonopeudella.
Vaihe 4: "Sarja. Käytettävissä" -toiminto
Kutsumme toimintoa, joka jäljittelee "serial.available" U0kbhit (). Se ei syötä, vaan havaitsee sen sijaan, onko näppäimistöllä tehty muutos RDA -tilabitin avulla, ja palauttaa arvon true, kun muutos havaitaan.
Vaihe 5: "Serial.read" -toiminto
Kutsumme funktiota, joka jäljittelee "serial.read" -toimintoa U0getchar (), joka ei syötä eikä lähetä mitään muutoksia näppäimistöön, joka on tallennettu UDR0 -rekisteriin.
Vaihe 6: "serial.write" -toiminto
Kutsumme toimintoa, joka jäljittelee "serial.write" U0putchar (): aa, joka ottaa tiedot UDR0 -rekisteristä, kun muutos havaitaan ja tallennetaan, ja antaa lähtöjä, jotka muuttuvat takaisin sarjamonitoriksi.
Vaihe 7: Asennustoiminto
Tämä on perusasetustoiminto, joka käyttää "serial.begin" -imitoitamme sarjaportin alustamiseen ja alustaa ajastinrekisterien bittiasetuksemme ja asettaa PB6: n lähettämään äänemme.
Vaihe 8: Silmukka- ja ISR -toiminnot
Silmukka toimii näin: jos muutos havaitaan "serial.available" -toiminnolla, "serial.read" -toiminto tallentaa muutokset, ja "serial.write" -toiminto tuo muutoksen sarjamonitoriin. Niin kauan kuin muuttuja i on pienempi kuin taajuusryhmän koko, se asettaa ulostulon i: n asemaan kyseisessä taulukossa ja antaa taajuuden kyseisessä paikassa. ISR toimii kuittauksena, jossa jos taajuusryhmän sijainti ei ole 0 (toisin sanoen, jos "q" ei paineta), se lähettää taajuuden, mutta kun "q" painetaan, se nollautuu. Huomaa: tämä koodi käyttää keskeytyksiä, mutta se voidaan tehdä keskeytysten ollessa poissa käytöstä. Lähetän koodin keskeytyksettä, jos saan sitä koskevia pyyntöjä, mielestäni keskeytysversio on vain hauskempi.
Vaihe 9: Johdotus
Tämän koodin johdotus on erittäin helppoa, yksinkertaisesti liitä lähtöjohto PB6: sta leipälevyyn, kytke summeri tai kaiutin sarjaan ja kytke se takaisin maahan. Huomautus: jos käytät kaiutinta, aseta pieni vastus kaiuttimen eteen. Jos haluat vain nähdä ulostulon, mutta et kuule sitä, kytke PB6 oskilloskoopin punaiseen johtoon ja musta johto maahan.
Vaihe 10: Yhdistä kaikki
Lisäsin täyden koodin tähän vaiheeseen, koska olen selittänyt sen kaikki osat aiemmissa vaiheissa. Se tarvitsee vain näppäimistötulon eri taajuuksille ja lähettää taajuuden PB6: lle. Toivottavasti nautit lukemasta eri tapaa koodata IDE: n kanssa!
Äänestä myös tätä mikrokontrollerikilpailussa: D
Suositeltava:
Arduinon ohjelmointi toisen Arduinon avulla vieritettävän tekstin näyttämiseksi ilman kirjastoa: 5 vaihetta
Arduinon ohjelmointi toisen Arduinon avulla vieritettävän tekstin näyttämiseksi ilman kirjastoa: Sony Spresense tai Arduino Uno eivät ole niin kalliita eivätkä vaadi paljon virtaa. Jos projektillasi on kuitenkin virtaa, tilaa tai jopa budjettia, voit harkita Arduino Pro Minin käyttöä. Toisin kuin Arduino Pro Micro, Arduino Pro Mi
RC5 -kaukosäätimen protokollan dekooderi ilman kirjastoa: 4 vaihetta
RC5 Remote Control Protocol -dekooderi ilman kirjastoa: ennen rc5: n dekoodausta keskustelemme ensin siitä, mikä on rc5 -komento ja mikä on sen rakenne. joten pohjimmiltaan rc5 -komentoa käytetään kaukosäätimissä, joita käytetään televisioissa, cd -soittimissa, d2h: ssa, kotiteatterijärjestelmissä jne., siinä on 13 tai 14 bittiä järjestettynä
Käyttö ilman näyttöä / näyttöä (ilman päätä) Raspberry Pi- tai muilla Linux- / unix -pohjaisilla tietokoneilla: 6 vaihetta
Juoksu ilman näyttöä / näyttöä (ilman päätä) Raspberry Pi: llä tai muilla Linux / unix -pohjaisilla tietokoneilla: Kun useimmat ihmiset ostavat Vadelma PI: n, he luulevat tarvitsevansa tietokoneen näytön. Älä tuhlaa rahaa turhiin tietokonenäyttöihin ja näppäimistöihin. Älä tuhlaa aikaasi näppäimistöjen ja näyttöjen siirtämiseen tietokoneiden välillä. Älä sido televisiota, kun se ei ole
Arduino Hall Effect -anturi keskeytyksillä: 4 vaihetta
Arduino Hall Effect -anturi keskeytyksillä: Hei kaikki, tänään näytän teille, kuinka voit liittää hall -tehosteanturin Arduinoon ja käyttää sitä keskeytyksen kanssa. Videossa käytetyt työkalut ja materiaalit (kumppanilinkit): Arduino Uno: http : //s.click.aliexpress.com/e/biNyW0zKHall -tehosteanturit: h
Navigointi robotissa kenkäanturien kanssa, ilman GPS: ää, ilman karttaa: 13 vaihetta (kuvilla)
Navigoi robotissa kenkäantureilla, ilman GPS: ää, ilman karttaa: Robotti liikkuu esiohjelmoidulla reitillä ja lähettää (bluetoothin kautta) todelliset liikennetietonsa puhelimeen reaaliaikaista seurantaa varten. Arduino on esiohjelmoitu polulla ja oblu käytetään robotin liikkeen havaitsemiseen. oblu lähettää liiketietoja