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 (sa prekidima): 10 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:08
Ovo nije nešto na čemu bih inače imao instrukcije, više volim svoje metalne radove, ali kako sam student elektrotehnike i moram pohađati predmet o mikrokontrolerima (Embedded Systems Design), mislio sam da ću napraviti instrukcije o jedan od mojih projekata. Kada sam izvorno napravio 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 osnovu 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 emitirati određenu frekvenciju ovisno o tome koju tipku pritisnete, s "q" resetiranjem. Napravio sam tako da će "a" izlaziti ravnu frekvenciju A, a "A" će izlaziti oštru frekvenciju A, "b" izlaziti B ravnu, "c" za C flat, "C" za C oštru itd. Cijeli kôd se učitava na kraju, ali svaki korak će razbiti kôd na komade kako bi ga bilo lakše objasniti.
Korak 1: Definiranje adresa registra
Ovaj korak je jednostavan, ako koristite atmega 2560, samo trebate koristiti 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 chips 'korisnički priručnik. Definicije na vrhu su samo konstante koje će se kasnije koristiti za naše funkcije. Određujemo adrese kao nestabilne bez potpisa jer ne želimo da se kompajler petlja s njima.
Korak 2: Nizovi i globalne varijable
Ovdje želimo definirati niz frekvencija koji će sadržavati sve frekvencije koje svaki ključ treba emitirati. Ove su vrijednosti izračunate iz 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 su nam potrebne 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 imitira "serial.available" U0kbhit (). Ne uzima unos, već umjesto toga otkriva je li došlo do promjene na tipkovnici koristeći bit statusa RDA i vraća vrijednost true kada se otkrije promjena.
Korak 5: Funkcija "serial.read"
Nazvat ćemo funkciju koja imitira funkciju "serial.read" U0getchar (), koja ne uzima ulaz i ne emitira sve promjene izvršene na tipkovnici, koja je pohranjena u registru UDR0.
Korak 6: Funkcija "serial.write"
Pozvat ćemo funkciju koja imitira "serial.write" U0putchar (), koja uzima podatke iz registra UDR0 dok se promjena otkrije 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 registre tajmera 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 poziciju i u tom nizu, ispisujući frekvenciju na toj poziciji. 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 resetirati. 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 je izuzetno jednostavno, jednostavno stavite izlaznu žicu s PB6 na matičnu ploču, spojite zujalicu ili zvučnik u seriju s tim i spojite ih 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 vod osciloskopa, a crni 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 sa tastature za različite frekvencije i šalje tu frekvenciju u PB6. Nadam se da ste uživali čitajući drugačiji način kodiranja s IDE -om!
Takođe, glasajte za ovo na takmičenju Mikrokontroler: D
Preporučuje se:
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 pomicanja teksta 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
RC5 Dekoder protokola daljinskog upravljanja bez biblioteke: 4 koraka
RC5 Dekoder protokola daljinskog upravljanja bez biblioteke: prije dekodiranja rc5 prvo raspravljamo o tome šta je naredba rc5 i koja je njena struktura. tako da u osnovi naredba rc5 koja se koristi u daljinskim upravljačima koji se koriste u televizorima, cd playerima, d2h, sistemima 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 i sa zvučnikom 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. Muzičke note se u prirodi pojavljuju kao glatki i valjani sinuso
Hladnjak / postolje 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 bez troškova (bez ljepila, bez bušenja, bez matica i vijaka, bez vijaka): AŽURIRAJTE: MOLIM VAS LJUBAV GLAS ZA MOJE UPUTSTVO, HVALA ^ _ ^ MOŽETE I DA GLASATE ULAZITE NA www.instructables.com/id/Zero-Cost-Aluminium-Furnace-No-Propane-No-Glue-/ ILI MOŽDA GLASATE ZA NAJBOLJEG PRIJATELJA