Sadržaj:
- Korak 1: Definiranje adresa registra
- Korak 2: Nizovi i globalne varijable
- Korak 3: Funkcija "serial.begin"
- Korak 4: Funkcija "serial.available"
- Korak 5: Funkcija "serial.read"
- Korak 6: Funkcija "serial.write"
- Korak 7: Funkcija postavljanja
- Korak 8: Funkcije petlje i ISR
- Korak 9: Ožičenje
- Korak 10: Spojite sve zajedno
Video: Arduino generator tonova bez biblioteke ili serijskih funkcija (s prekidima): 10 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Ovo nije nešto na čemu bih inače mogao poučavati, više volim svoje metalne radove, ali kako sam student elektrotehnike i moram pohađati tečaj o mikrokontrolerima (Embedded Systems Design), mislio sam da ću napraviti instrukcije o jedan od mojih projekata. Kad sam izvorno izrađivao projekt i druge za ovu klasu, otkrio sam da postoji vrlo malo ili nimalo vodiča koji ne koriste funkcije biblioteke arduino ili serijske funkcije, što je još jedan razlog zašto sam mislio da bi ovo bilo dobro uputstvo.
Ovaj kôd je dizajniran za mikrokontroler Atmega 2560, pa ako ga želite implementirati na drugu ploču, morat ćete promijeniti registre adresa u kodu na temelju korisničkog priručnika za vaše kontrolere. Osnovna ideja koda je da kad god unesete tipku s tipkovnice u serijski monitor, arduino mega će ispisati određenu frekvenciju ovisno o tome koju tipku pritisnete, s "q" resetiranjem. Napravio sam tako da će "a" izlaziti ravnu frekvenciju A, a "A" izlaziti oštru frekvenciju A, "b" izlaziti B ravnu, "c" za C flat, "C" za C oštru itd. Cjelokupni kôd učitava se na kraju, ali svaki će korak razbiti kôd na komade pa ga je lakše objasniti.
Korak 1: Definiranje adresa registra
Ovaj korak je jednostavan, ako koristite atmega 2560, trebate koristiti samo adrese koje sam ja koristio, iako ako koristite ploču s različitim čipom, morat ćete pronaći adrese za svaki od ovih registara na svom korisnički priručnik za čips. Definicije na vrhu samo su konstante koje će se kasnije koristiti za naše funkcije. Određujemo adrese kao nestabilne bez potpisa jer ne želimo da se prevoditelj petlja s njima.
Korak 2: Nizovi i globalne varijable
Ovdje želimo definirati niz frekvencija koji će sadržavati sve frekvencije koje bi svaka tipka trebala izlaziti. Ove su vrijednosti izračunate na temelju stvarnih notnih frekvencija, i iskreno, zaboravio sam kako sam ih dobio, ali to su prave vrijednosti dok sam ih testirao na osciloskopu da se uvjerim. Također definiramo niz bilješki koji sadrži sve tipke koje treba pritisnuti za svaki ton, kao i varijable koje će nam trebati za naše kasnije funkcije.
Korak 3: Funkcija "serial.begin"
Nazvat ćemo našu prilagođenu funkciju koja replicira funkciju "serial.begin" U0init (). Uzima željenu brzinu prijenosa kao ulaz i pokreće serijski port na toj brzini prijenosa.
Korak 4: Funkcija "serial.available"
Nazvat ćemo funkciju koja oponaša "serial.available" U0kbhit (). Ne uzima unos, već umjesto toga detektira je li došlo do promjene na tipkovnici pomoću bita statusa RDA i vraća vrijednost true kada se otkrije promjena.
Korak 5: Funkcija "serial.read"
Nazvat ćemo funkciju koja oponaša funkciju "serial.read" U0getchar (), koja ne uzima ulaz i ne emitira sve promjene napravljene na tipkovnici, koja je pohranjena u registru UDR0.
Korak 6: Funkcija "serial.write"
Nazvat ćemo funkciju koja imitira "serial.write" U0putchar (), koja uzima podatke iz registra UDR0 dok se promjena detektira i pohrani, i izlazi natrag na serijski monitor.
Korak 7: Funkcija postavljanja
Ovo je osnovna funkcija postavljanja koja će koristiti našu imitaciju "serial.begin" za inicijalizaciju serijskog porta, te će inicijalizirati naše postavke bita za vremenske registre i postaviti PB6 da emitira naše tonove.
Korak 8: Funkcije petlje i ISR
Petlja funkcionira na sljedeći način: ako se promjena otkrije pomoću naše funkcije "serial.available", naša funkcija "serial.read" pohranjuje tu promjenu, a funkcija "serial.write" tu promjenu stavlja u serijski monitor. Sve dok je varijabla i manja od veličine frekvencijskog niza, ona će postaviti izlaz na položaj i u tom nizu, ispisujući frekvenciju na tom položaju. ISR funkcionira kao reset, gdje ako položaj polja frekvencija nije jednak 0 (drugim riječima ako "q" nije pritisnut), on će emitirati frekvenciju, ali kada se pritisne "q", to će se poništiti. Napomena: ovaj kôd koristi prekide, ali to se može učiniti i s onemogućenim prekidima. Objavit ću kôd bez prekida ako dobijem bilo kakav zahtjev za njega, samo mislim da je verzija s prekidom zabavnija.
Korak 9: Ožičenje
Ožičenje za ovaj kôd iznimno je jednostavno, jednostavno spojite izlaznu žicu s PB6 na ploču, spojite zujalicu ili zvučnik u nizu s tim i spojite je natrag na masu. Napomena: ako koristite zvučnik, stavite mali otpornik ispred zvučnika. Ako samo želite vidjeti izlaz, ali ga ne čuti, samo spojite PB6 na crveni kabel osciloskopa, a crni kabel na masu.
Korak 10: Spojite sve zajedno
Ovom koraku sam dodao cijeli kôd jer sam u prethodnim koracima objasnio sve njegove dijelove. Potreban je samo unos tipkovnice za različite frekvencije i odašilje tu frekvenciju na PB6. Nadam se da ste uživali čitajući drugačiji način kodiranja s IDE -om!
Također, glasajte za ovo na natjecanju Mikrokontroler: D
Preporučeni:
Programiranje Arduina pomoću drugog Arduina za prikaz teksta koji se pomiče bez biblioteke: 5 koraka
Programiranje Arduina pomoću drugog Arduina za prikaz teksta koji se pomiče bez biblioteke: Sony Spresense ili Arduino Uno nisu toliko skupi i ne zahtijevaju puno energije. Međutim, ako vaš projekt ima ograničenje snage, prostora ili čak proračuna, razmislite o upotrebi Arduino Pro Mini. Za razliku od Arduino Pro Micro, Arduino Pro Mi
Dekoder protokola daljinskog upravljača RC5 bez biblioteke: 4 koraka
RC5 Dekoder protokola daljinskog upravljanja bez knjižnice: prije dekodiranja rc5 prvo raspravljamo o tome što je naredba rc5 i koja je njezina struktura. tako da u osnovi naredba rc5 koja se koristi u daljinskim upravljačima koji se koriste u televizorima, cd playerima, d2h, sustavima kućnog kina itd. ima 13 ili 14 bita raspoređenih u
Jednostavan generator tonova: 7 koraka (sa slikama)
Jednostavan generator tonova: Arduino generator tonova je skup prekidača koji dijele zajednički terminal s GND -om, dok su preostali pinovi spojeni na 2, 3, 4, 5, 6, 7, 8 i 9 Arduino digitalne pinove, a sa zvučnikom također instaliran između GND -a i digitalnog pina 11 iz Arduino Uno
Generator tonova "Jimikky Kammal" pomoću Arduino Pro Mini: 5 koraka
Generator tonova "Jimikky Kammal" pomoću Arduino Pro Mini: Ovo je jednostavan projekt generatora tonova koji koristi Arduino Pro Mini. Dio super hit pjesme "Jimikky Kammal" filma " Velipadinte Pusthakam " razvija se monotono. Glazbene note pojavljuju se u prirodi kao glatki i valjani sinuso
Hladnjak / stalak za prijenosno računalo bez troškova (bez ljepila, bez bušenja, bez matica i vijaka, bez vijaka): 3 koraka
Hladnjak / postolje za prijenosno računalo nula troškova (bez ljepila, bez bušenja, bez matica i vijaka, bez vijaka): AŽURIRAJTE: MOLIM VAS LJUBAV GLAS ZA MOJE INSTRUKCIJE, HVALA ^ _ ^ MOŽETE SE I VI GLAVATI ULAZITE NA www.instructables.com/id/Zero-Cost-Aluminium-Furnace-No-Propane-No-Glue-/ ILI MOŽDA GLASATE ZA NAJBOLJEG PRIJATELJA