Satura rādītājs:
- 1. darbība. Reģistra adrešu definēšana
- 2. darbība: masīvi un globālie mainīgie
- 3. darbība: funkcija "serial.begin"
- 4. darbība: funkcija "serial.available"
- 5. darbība: funkcija "serial.read"
- 6. darbība: funkcija "serial.write"
- 7. darbība: iestatīšanas funkcija
- 8. darbība: cilpa un ISR funkcijas
- 9. solis: elektroinstalācija
- 10. solis: salieciet visu kopā
Video: Arduino toņu ģenerators bez bibliotēkas vai sērijas funkcijām (ar pārtraukumiem): 10 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Tas nav kaut kas tāds, ko es parasti padarītu par pamācāmu, es dodu priekšroku metālapstrādei, bet, tā kā esmu elektrotehnikas students un jāapmeklē mikrokontrolleri (iegulto sistēmu dizains), es domāju, ka es darīšu pamācību viens no maniem projektiem. Kad es sākotnēji izveidoju projektu un citus šīs klases materiālus, es atklāju, ka ir ļoti maz pamācību, kurās netiek izmantotas arduino bibliotēkas funkcijas vai sērijas funkcijas, un tas ir vēl viens iemesls, kāpēc es domāju, ka tas būtu labi pamācāms.
Šis kods ir paredzēts mikrokontrolleram Atmega 2560, tādēļ, ja vēlaties to ieviest citā panelī, jums būs jāmaina adrešu reģistri kodā, pamatojoties uz jūsu kontrolieru lietotāja rokasgrāmatu. Koda pamatideja ir tāda, ka ikreiz, kad sērijveida monitorā ievadāt tastatūras taustiņu, arduino mega izdos noteiktu frekvenci, pamatojoties uz taustiņa nospiešanu, un "q" to atiestatīs. Es to izveidoju tā, ka "a" izvadīs A plakano frekvenci un "A" - A asu frekvenci, "b" izvadīs B plakanu, "c" - C plakanu, "C" - C asu utt. Viss kods tiek augšupielādēts beigās, bet katrs solis sadalīs kodu gabalos, lai to būtu vieglāk izskaidrot.
1. darbība. Reģistra adrešu definēšana
Šis solis ir vienkāršs, ja izmantojat atmega 2560, jums vienkārši jāizmanto manis izmantotās adreses, lai gan, ja izmantojat dēli ar citu mikroshēmu, savā vietnē ir jāatrod katra šī reģistra adreses. mikroshēmu lietotāja rokasgrāmata. Augšpusē esošās definīcijas ir tikai konstantes, kuras vēlāk tiks izmantotas mūsu funkcijām. Mēs norādām adreses kā nepastāvīgas neparakstītas, jo nevēlamies, lai kompilators ar tām sajauktos.
2. darbība: masīvi un globālie mainīgie
Šeit mēs vēlamies definēt frekvenču masīvu, kurā būs visas frekvences, kuras katrai atslēgai vajadzētu izvadīt. Šīs vērtības tiek aprēķinātas no faktiskajām piezīmju frekvencēm, un, godīgi sakot, es aizmirsu, kā tās ieguvu, taču tās ir pareizās vērtības, jo es tās pārbaudīju ar osciloskopu, lai pārliecinātos. Mēs arī definējam piezīmju masīvu, kurā ir visi taustiņi, kas jānospiež katram tonim, kā arī mainīgie, kas būs nepieciešami mūsu vēlākajām funkcijām.
3. darbība: funkcija "serial.begin"
Mēs izsauksim mūsu pielāgoto funkciju, kas atkārto funkciju "serial.begin" U0init (). Tā ievada vēlamo datu pārraides ātrumu un sāk sērijveida portu ar šo datu pārraides ātrumu.
4. darbība: funkcija "serial.available"
Mēs nosauksim funkciju, kas imitē "serial.available", U0kbhit (). Tas neprasa ievadi, bet nosaka, vai tastatūrā ir veiktas izmaiņas, izmantojot RDA statusa bitu, un atgriež vērtību true, kad tiek konstatētas izmaiņas.
5. darbība: funkcija "serial.read"
Funkciju, kas atdarina funkciju "serial.read", mēs izsauksim par U0getchar (), kas neveic nekādas ievades un izvades neatkarīgi no izmaiņām, kas tiek veiktas tastatūrā, kas tiek saglabāta UDR0 reģistrā.
6. darbība: funkcija "serial.write"
Mēs izsauksim funkciju, kas imitē "serial.write" U0putchar (), kas ņem datus no UDR0 reģistra, kamēr tiek konstatētas un saglabātas izmaiņas, un izvada, kas tiek mainītas atpakaļ uz sērijas monitoru.
7. darbība: iestatīšanas funkcija
Šī ir pamata iestatīšanas funkcija, kas izmantos mūsu "serial.begin" imitāciju, lai inicializētu sērijas portu, un inicializēs mūsu taimera reģistru bitu iestatījumus un iestatīs PB6, lai izvadītu mūsu signālus.
8. darbība: cilpa un ISR funkcijas
Cikls darbojas šādi: ja tiek konstatētas izmaiņas, izmantojot mūsu funkciju "serial.available", mūsu funkcija "serial.read" saglabā šīs izmaiņas, un mūsu funkcija "serial.write" ievieto šīs izmaiņas sērijas monitorā. Kamēr mainīgais i ir mazāks par frekvenču masīva lielumu, tas noteiks izvadi par i pozīciju šajā masīvā, izvadot frekvenci šajā pozīcijā. ISR darbojas kā atiestatīšana, kur, ja frekvenču masīva pozīcija nav vienāda ar 0 (citiem vārdiem sakot, ja netiek nospiests "q"), tā izvadīs frekvenci, bet, nospiežot "q", tā tiks atiestatīta. Lūdzu, ņemiet vērā: šis kods izmanto pārtraukumus, bet to var izdarīt, ja pārtraukumi ir atspējoti. Es publicēšu kodu bez pārtraukumiem, ja saņemšu kādus pieprasījumus par to, es vienkārši domāju, ka pārtraukuma versija ir jautrāka.
9. solis: elektroinstalācija
Elektroinstalācija šim kodam ir ārkārtīgi vienkārša, vienkārši ievietojiet izejas vadu no PB6 uz maizes dēļa, pievienojiet tam skaņas signālu vai skaļruni un pievienojiet to atpakaļ zemei. Piezīme: ja izmantojat skaļruni, pirms skaļruņa ievietojiet nelielu rezistoru. Ja vēlaties tikai redzēt izeju, bet nedzirdēt, vienkārši pievienojiet PB6 osciloskopa sarkanajam vadam un melno vadu pie zemes.
10. solis: salieciet visu kopā
Es šim solim pievienoju pilnu kodu, jo iepriekšējās darbībās esmu izskaidrojis visas tā daļas. Tas vienkārši aizņem tastatūras ievadi dažādām frekvencēm un izvada šo frekvenci uz PB6. Ceru, ka jums patika lasīt citu veidu, kā kodēt ar IDE!
Arī, lūdzu, balsojiet par to Mikrokontrolleru konkursā: D
Ieteicams:
Arduino programmēšana, izmantojot citu Arduino, lai parādītu ritinošu tekstu bez bibliotēkas: 5 soļi
Arduino programmēšana, izmantojot citu Arduino, lai parādītu ritinošu tekstu bez bibliotēkas: Sony Spresense vai Arduino Uno nav tik dārgi un neprasa daudz enerģijas. Tomēr, ja jūsu projektam ir ierobežoti jaudas, vietas vai pat budžeta ierobežojumi, iespējams, vēlēsities izmantot Arduino Pro Mini. Atšķirībā no Arduino Pro Micro, Arduino Pro Mi
RC5 tālvadības protokola dekodētājs bez bibliotēkas: 4 soļi
RC5 tālvadības protokola dekodētājs bez bibliotēkas: pirms rc5 dekodēšanas vispirms apspriežam, kas ir rc5 komanda un kāda ir tās struktūra. tāpēc pamatā rc5 komanda tiek izmantota tālvadības pultīs, ko izmanto televizoros, cd atskaņotājos, d2h, mājas kinozāles sistēmās utt., tai ir 13 vai 14 biti, kas sakārtoti
Vienkāršs toņu ģenerators: 7 soļi (ar attēliem)
Vienkāršs toņu ģenerators: Arduino toņu ģenerators ir slēdžu kopums, kam ir kopīgs GND terminālis, bet atlikušās tapas ir savienotas ar 2, 3, 4, 5, 6, 7, 8 un 9 Arduino digitālajām tapām un ar skaļruni. uzstādīts starp GND un digitālo tapu 11 no Arduino Uno
Toņu ģenerators "Jimikky Kammal", izmantojot Arduino Pro Mini: 5 soļi
Toņu ģenerators "Jimikky Kammal", izmantojot Arduino Pro Mini: Šis ir vienkāršs toņu ģeneratora projekts, izmantojot Arduino Pro Mini. Daļa no super hit dziesmas " Jimikky Kammal " no filmas " Velipadinte Pusthakam " ir izstrādāts monotoniski. Mūzikas notis dabā parādās kā gluda un ritinoša sinusa
Morzes toņu ģenerators (mazjaudas CW skaņas signāls): 3 soļi
Morzes toņu ģenerators (mazjaudas CW skaņas signāls): Šeit es aprakstu, kā izveidot vienkāršu mazjaudas toņu ģeneratoru, ko izmantoju, lai mācītu dēlam morzes kodu. Tīrot pagrabu, es atradu savu veco Vērmahta morzes atslēdznieku. Šo atslēgu izmantoja Vācijas spēki Otrā pasaules kara laikā. Atslēgam bija