Mundarija:
- 1 -qadam: Ro'yxatdan o'tish manzillarini aniqlash
- 2 -qadam: massivlar va global o'zgaruvchilar
- 3 -qadam: "serial.begin" funktsiyasi
- 4 -qadam: "serial.available" funktsiyasi
- 5 -qadam: "serial.read" funktsiyasi
- 6 -qadam: "serial.write" funktsiyasi
- 7 -qadam: O'rnatish funktsiyasi
- 8 -qadam: Loop va ISR funktsiyalari
- 9 -qadam: simlarni ulash
- 10 -qadam: Hammasini bir joyga to'plang
Video: Kutubxonasiz yoki ketma -ket funktsiyasiz (uzilishlarsiz) Arduino ohang generatori: 10 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
Bu men odatdagidek o'rgatadigan narsa emas, men metall ishimni afzal ko'raman, lekin men elektrotexnika talabasi bo'lganim uchun va mikrokontrollerlar (O'rnatilgan tizimlar dizayni) bo'yicha dars olishim kerak edi, men ko'rsatma beraman deb o'yladim. mening loyihalarimdan biri. Men dastlab bu sinf uchun loyihani va boshqalarni yaratganimda, arduino kutubxonasi funktsiyalari yoki ketma -ket funktsiyalarni ishlatmaydigan juda kam darsliklar borligini aniqladim, bu men uchun yaxshi ko'rsatma bo'ladi deb o'ylaganimning yana bir sababi.
Bu kod Atmega 2560 mikrokontroleriga mo'ljallangan, shuning uchun agar siz uni boshqa taxtada ishlatmoqchi bo'lsangiz, qo'mondonlarning qo'llanmasiga asoslanib, koddagi manzil registrlarini o'zgartirishingiz kerak bo'ladi. Kodning asosiy g'oyasi shundaki, har safar klaviaturadagi tugmachani ketma -ket monitorga kiritganingizda, arduino mega siz bosgan tugmachaga qarab ma'lum bir chastotani chiqaradi va uni "q" bilan qayta o'rnatadi. Men shunday qildimki, "a" A tekis chastotasini chiqaradi va "A" A aniq chastotani chiqaradi, "b" B tekislik chiqaradi, "tekis" uchun "c", "o'tkir" uchun "C" va hokazo. To'liq kod oxirida yuklanadi, lekin har bir qadam kodni qismlarga ajratadi, shuning uchun tushuntirish osonroq bo'ladi.
1 -qadam: Ro'yxatdan o'tish manzillarini aniqlash
Bu qadam juda oson, agar siz atmega 2560 dan foydalanayotgan bo'lsangiz, men ishlatgan manzillardan foydalanish kifoya, lekin agar siz boshqa chipli taxtadan foydalansangiz, ushbu registrlarning har birining manzilini topishingiz kerak bo'ladi. chips foydalanish uchun qo'llanma. Yuqoridagi ta'riflar - bu bizning funktsiyalarimiz uchun keyinchalik ishlatiladigan doimiylar. Biz manzillarni o'zgaruvchan belgisiz belgilaymiz, chunki biz kompilyator ular bilan aralashishini xohlamaymiz.
2 -qadam: massivlar va global o'zgaruvchilar
Bu erda biz har bir tugma chiqarishi kerak bo'lgan barcha chastotalarni o'z ichiga oladigan Chastotalar qatorini aniqlamoqchimiz. Bu qiymatlar eslatmalarning haqiqiy chastotalari bo'yicha hisoblab chiqilgan va rostini aytsam, men ularni qanday olganimni unutganman, lekin ishonch hosil qilish uchun ularni osiloskopda sinab ko'rganimdan keyin ular to'g'ri qiymatlardir. Shuningdek, biz har bir ohang uchun bosiladigan barcha tugmachalarni o'z ichiga olgan eslatmalar majmuasini, shuningdek, keyingi funktsiyalarimiz uchun kerak bo'ladigan o'zgaruvchilarni belgilaymiz.
3 -qadam: "serial.begin" funktsiyasi
Biz "serial.begin" funktsiyasini takrorlaydigan U0init () funktsiyasini chaqiramiz. Kerakli byudratni kirish sifatida oladi va ketma -ket portni shu tezlikda ishga tushiradi.
4 -qadam: "serial.available" funktsiyasi
Biz "serial.available" taqlid qiladigan funktsiyani U0kbhit () deb ataymiz. U kirishni talab qilmaydi, lekin uning o'rniga RDA status biti yordamida klaviaturada o'zgarish mavjudligini aniqlaydi va o'zgarish aniqlanganda rostni qaytaradi.
5 -qadam: "serial.read" funktsiyasi
Biz "serial.read" funktsiyasini taqlid qiladigan funktsiyani U0getchar () deb ataymiz, u hech qanday kirishni qabul qilmaydi va UDR0 registrida saqlanadigan klaviaturadagi o'zgarishlarni o'zgartirmaydi.
6 -qadam: "serial.write" funktsiyasi
Biz "serial.write" ni taqlid qiladigan funktsiyani chaqiramiz, u o'zgarish aniqlanganda va saqlansa UDR0 registridan ma'lumotlarni oladi va ketma -ket monitorga o'zgaradi.
7 -qadam: O'rnatish funktsiyasi
Bu ketma -ket portni ishga tushirish uchun "serial.begin" imitatsiyamizdan foydalanadigan va taymer registrlari uchun bit sozlamalarini ishga tushiradigan va ohanglarimizni chiqaradigan PB6 ni o'rnatadigan asosiy sozlash funktsiyasi.
8 -qadam: Loop va ISR funktsiyalari
Loop shunday ishlaydi: agar "serial.available" funksiyamizda o'zgarish aniqlansa, bizning "serial.read" funksiyasi bu o'zgarishni saqlaydi va "serial.write" funksiyasi bu o'zgarishni ketma -ket monitorga qo'yadi. I o'zgarmaydigan chastota massivining o'lchamidan kichik bo'lsa, u chiqishni shu qatordagi i pozitsiyasiga o'rnatadi va chastotani o'sha holatda chiqaradi. ISR asl holatini tiklash vazifasini bajaradi, bu erda agar chastota massivining pozitsiyasi 0 ga teng bo'lmasa (boshqacha aytganda "q" bosilmasa), u chastotani chiqaradi, lekin "q" bosilganda u asl holatiga qaytadi. bu kod uzilishlardan foydalanadi, lekin uni uzilishlar o'chirilgan holda qilish mumkin. Agar men so'rov olsam, kodni uzilishlarsiz joylashtiraman, menimcha, uzilish versiyasi yanada qiziqarli.
9 -qadam: simlarni ulash
Ushbu kodni ulash juda oson, PB6 -dan chiqish simini non paneliga qo'ying, shovqin yoki karnayni ketma -ket ulang va uni erga ulang. E'tibor bering: agar siz karnaydan foydalansangiz, karnay oldiga kichik rezistor qo'ying. Agar siz chiqishni ko'rishni xohlasangiz, lekin eshitmasangiz, PB6 ni osiloskopning qizil uchiga, qora simni esa erga ulang.
10 -qadam: Hammasini bir joyga to'plang
Men ushbu qadamga to'liq kodni qo'shdim, chunki men uning barcha qismlarini oldingi bosqichlarda tushuntirganman. Bu har xil chastotalar uchun klaviatura kiritishini oladi va bu chastotani PB6 ga chiqaradi. Umid qilamanki, sizga IDE bilan kodlashning boshqa usulini o'qish yoqdi!
Bundan tashqari, iltimos, mikrokontroller tanlovida bunga ovoz bering: D
Tavsiya:
Midi tasodifiy ketma -ketlik generatori: 3 qadam
Midi tasodifiy ketma -ketlik generatori: Salom, bugun men sizga o'zingiz qanday tasodifiy Midi tasodifiy generatorini yasashni ko'rsataman, u kichik kalitda tasodifiy 4, 7,8 yoki 16 eslatmali uzun ketma -ketlikni yaratadi, albatta siz xohlagan narsani o'zgartirishingiz mumkin, Siz ko'proq ketma -ketlik uzunligini qo'shishingiz yoki kalitni o'zgartirishingiz mumkin. Lekin pers
Ob -havoga asoslangan musiqa generatori (ESP8266 asosidagi Midi generatori): 4 qadam (rasmlar bilan)
Ob -havoga asoslangan musiqa generatori (ESP8266 asosidagi Midi generatori): Salom, bugun men qanday qilib o'zingizning ob -havoga asoslangan kichik musiqa generatorini yasashni tushuntirib beraman. Bu ESP8266 ga asoslangan, u xuddi Arduinoga o'xshaydi va u harorat, yomg'irga javob beradi. va yorug'lik intensivligi. Bu butun qo'shiq yoki akkord dasturini yaratishini kutmang
Oddiy ohang generatori: 7 qadam (rasmlar bilan)
Oddiy ohang generatori: Arduino Tone Generator - bu umumiy terminalni GND -ga ulashadigan kalitlar to'plami, qolgan pinlar 2, 3, 4, 5, 6, 7, 8 va 9 Arduino raqamli pinlariga ulangan, shuningdek karnay bilan. Arduino Uno -dan GND va raqamli pin 11 o'rtasida o'rnatilgan
Arduino Pro Mini -dan foydalangan holda "Jimikky Kammal" ohang generatori: 5 qadam
Arduino Pro Mini -dan foydalangan holda "Jimikky Kammal" ohang generatori: Bu Arduino Pro Mini -dan foydalangan holda oddiy ohang generatori loyihasi. Super xit qo'shig'ining bir qismi " Jimikki Kammal " " Velipadinte Pusthakam " filmidan. monotonik tarzda ishlab chiqilgan. Musiqiy notalar tabiatda silliq va dumaloq sinus shaklida uchraydi
Mikrokontroller mato ohang generatori C-kodda: 8 qadam (rasmlar bilan)
Mikrokontroller mato ohanglari generatori C-kodi: O'tgan yilning oktyabr oyi oxirida, carmitsu foydalanuvchisi menga tushlik qutisi sinxronlanishini ko'rganimdan so'ng xabar yubordi. Uning xabaridan: Men boshlang'ich maktabda musiqadan dars beraman. Biz juda ko'p magnitafon musiqasini ijro etamiz. ya’ni bolalar kichkina nay chalishadi …… menda