Kazalo:
- 1. korak: Določitev naslovov registra
- 2. korak: Nizovi in globalne spremenljivke
- 3. korak: Funkcija "serial.begin"
- 4. korak: Funkcija "serial.available"
- 5. korak: Funkcija "serial.read"
- 6. korak: Funkcija "serial.write"
- 7. korak: Nastavitvena funkcija
- 8. korak: Funkcije zanke in ISR
- 9. korak: Ožičenje
- 10. korak: Združite vse skupaj
Video: Generator tonov Arduino brez knjižnice ali zaporednih funkcij (s prekinitvami): 10 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
To sicer ni nekaj, za kar bi običajno poučeval, raje imam kovinsko obdelavo, a ker sem študent elektrotehnike in moram opraviti tečaj o mikrokrmilnikih (Embedded Systems Design), sem mislil, da bom naredil navodila za eden od mojih projektov. Ko sem prvotno ustvarjal projekt in druge za ta razred, sem ugotovil, da je zelo malo ali nič vaj, ki ne uporabljajo funkcij knjižnice arduino ali serijskih funkcij, kar je še en razlog, zakaj sem mislil, da bi bilo to dobro poučevanje.
Ta koda je zasnovana za mikrokrmilnik Atmega 2560, zato, če jo želite implementirati na drugo ploščo, morate spremeniti registre naslovov v kodi glede na uporabniški priročnik za krmilnike. Osnovna ideja kode je, da vsakič, ko v serijski monitor vnesete tipko na tipkovnici, bo arduino mega predvajal določeno frekvenco glede na tipko, ki jo pritisnete, s ponastavitvijo "q". Naredil sem tako, da "a" oddaja ravno frekvenco A, "A" pa ostro frekvenco A, "b" oddaja B ravno, "c" za C flat, "C" za C ostro itd. Celotna koda je naložena na koncu, vendar bo vsak korak razčlenil kodo na koščke, zato jo je lažje razložiti.
1. korak: Določitev naslovov registra
Ta korak je enostaven, če uporabljate atmega 2560, morate uporabiti samo naslove, ki sem jih uporabil, čeprav boste pri uporabi plošče z drugačnim čipom morali poiskati naslove vsakega od teh registrov v svojem Navodila za uporabo čipov. Definicije na vrhu so le konstante, ki jih bomo kasneje uporabili za naše funkcije. Naslove določimo kot nestanovitne brez podpisa, ker ne želimo, da se prevajalnik z njimi zapleta.
2. korak: Nizovi in globalne spremenljivke
Tu želimo definirati frekvenčno matriko, ki bo vsebovala vse frekvence, ki bi jih morala oddati vsaka tipka. Te vrednosti so izračunane na podlagi dejanskih notnih frekvenc in pošteno sem pozabil, kako sem jih dobil, vendar so to prave vrednosti, ko sem jih preveril na osciloskopu, da sem se prepričal. Določimo tudi niz beležk, ki vsebuje vse tipke, ki jih je treba pritisniti za vsak ton, in spremenljivke, ki jih potrebujemo za naše poznejše funkcije.
3. korak: Funkcija "serial.begin"
Poklicali bomo našo funkcijo po meri, ki ponavlja funkcijo "serial.begin" U0init (). Za vnos vzame želeno hitrost prenosa in zažene serijska vrata pri tej hitrosti prenosa.
4. korak: Funkcija "serial.available"
Poklicali bomo funkcijo, ki posnema "serial.available" U0kbhit (). Ne vnese vnosa, ampak namesto tega zazna, ali je bila na tipkovnici spremenjena s bitom stanja RDA in vrne vrednost true, ko zazna spremembo.
5. korak: Funkcija "serial.read"
Funkcijo, ki posnema funkcijo "serial.read", bomo poklicali U0getchar (), ki ne vnese nobenega vnosa in izpiše kakršne koli spremembe na tipkovnici, ki je shranjena v registru UDR0.
6. korak: Funkcija "serial.write"
Poklicali bomo funkcijo, ki posnema "serial.write" U0putchar (), ki vzame podatke iz registra UDR0, medtem ko je zaznana in shranjena sprememba, in izhodi, ki se spremenijo nazaj na serijski monitor.
7. korak: Nastavitvena funkcija
To je osnovna namestitvena funkcija, ki bo uporabila našo imitacijo "serial.begin" za inicializacijo zaporednih vrat in bo inicializirala naše nastavitve bitov za časovne registre in nastavila PB6 za oddajanje naših tonov.
8. korak: Funkcije zanke in ISR
Zanka deluje tako: če je sprememba zaznana z našo funkcijo "serial.available", funkcija "serial.read" shrani to spremembo, funkcija "serial.write" pa to spremembo prenese v serijski monitor. Dokler je spremenljivka i manjša od velikosti frekvenčnega niza, bo nastavila izhod na položaj i v tem nizu, pri čemer bo frekvenca na tem mestu. ISR deluje kot ponastavitev, kjer, če položaj frekvenčnega niza ni enak 0 (z drugimi besedami, če "q" ni pritisnjen), bo oddajal frekvenco, ko pa pritisnete "q", pa se bo ponastavil. Prosimo, upoštevajte: ta koda uporablja prekinitve, vendar je to mogoče storiti z onemogočenimi prekinitvami. Kodo bom objavil brez prekinitev, če za to dobim kakšno zahtevo, samo mislim, da je prekinitvena različica bolj zabavna.
9. korak: Ožičenje
Ožičenje za to kodo je izjemno preprosto, preprosto priključite izhodno žico iz PB6 na ploščo, s tem zaporedno priključite brenčalo ali zvočnik in ga priključite nazaj na tla. Opomba: če uporabljate zvočnik, vstavite majhen upor pred zvočnik. Če želite samo videti izhod, vendar ga ne slišite, samo priključite PB6 na rdeči vodnik osciloskopa in črni kabel na tla.
10. korak: Združite vse skupaj
Temu koraku sem dodal celotno kodo, saj sem v prejšnjih korakih razložil vse njene dele. Za različne frekvence potrebuje samo tipkovnico in to frekvenco odda v PB6. Upam, da ste uživali v branju drugačnega načina kodiranja z IDE!
Za to glasujte tudi na natečaju Mikrokontroler: D
Priporočena:
Programiranje Arduina z uporabo drugega Arduina za prikaz drsnega besedila brez knjižnice: 5 korakov
Programiranje Arduina z uporabo drugega Arduina za prikaz drsnega besedila brez knjižnice: Sony Spresense ali Arduino Uno nista tako draga in ne zahtevata veliko energije. Če pa ima vaš projekt omejeno moč, prostor ali celo proračun, razmislite o uporabi Arduino Pro Mini. Za razliko od Arduino Pro Micro, Arduino Pro Mi
RC5 dekodirnik protokola za daljinsko upravljanje brez knjižnice: 4 koraki
Dekoder protokola RC5 za oddaljeni nadzor brez knjižnice: pred dekodiranjem rc5 najprej razpravljamo, kaj je ukaz rc5 in kakšna je njegova struktura. torej v bistvu ukaz rc5, ki se uporablja v daljinskih upravljalnikih, ki se uporabljajo v televizorjih, CD predvajalnikih, d2h, sistemih za domači kino itd., ima 13 ali 14 bitov, razporejenih v
Zagon brez zaslona / zaslona (brez glave) na Raspberry Pi ali drugih računalnikih s sistemom Linux / unix: 6 korakov
Delovanje brez zaslona / zaslona (brez glave) na Raspberry Pi ali drugih računalnikih s sistemom Linux / unix: Ko večina ljudi kupi Raspberry PI, mislijo, da potrebujejo računalniški zaslon. Ne zapravljajte denarja za nepotrebne računalniške monitorje in tipkovnice. Ne zapravljajte časa s premikanjem tipkovnic in monitorjev med računalniki. Ne privežite televizorja, ko ni
USB krmilnik nizkih tonov, visokih tonov in glasnosti z LED diodami na tipkovnici: 6 korakov (s slikami)
USB krmilnik nizkih tonov, visokih tonov in glasnosti z LED diodami na tipkovnici: V glavnem namiznem računalniku imam Creative SoundBlaster Audigy in potreboval sem način za hitro prilagajanje nastavitev nizkih in visokih tonov (pa tudi glasnosti) pri poslušanju avdio ali video medijev . Kodo sem prilagodil iz dveh virov, navedenih v
Hladilnik / stojalo za prenosni računalnik brez stroškov (brez lepila, brez vrtanja, brez matic in vijakov, brez vijakov): 3 koraki
Hladilnik / stojalo za prenosni računalnik z nič stroški (brez lepila, brez vrtanja, brez matic in vijakov, brez vijakov): UPDATE: PROSIM VELIKO GLASAJ ZA MOJE NAVODILNO, HVALA ^ _ ^ MOGOČE STE ZDRAVILI VPISITE NA www.instructables.com/id/Zero-Cost-Aluminium-Furnace-No-Propane-No-Glue-/ ALI MOŽDA GLASUJTE ZA NAJBOLJŠEGA PRIJATELJA