Mundarija:
- Ta'minotlar
- 1 -qadam: aylanish
- 2 -qadam: Vaqt diagrammasi
- 3 -qadam: dasturlash. Makrolar va ta'riflar
- 4 -qadam: Dasturlash. Asosiy halqa
- 5 -qadam: Dasturlash. Yordamchi funktsiyalar
- 6 -qadam: Dasturlash. Prototeka tartiblari
- 7 -qadam: ichki qism
Video: Attiny85 bir vaqtning o'zida dasturlash yoki ko'p rangli ko'zli qovoq: 7 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
Muallif tomonidan yozilgan:
Haqida: Men Bay Area (Kaliforniya) kompaniyalaridan birida dastur muhandisi bo'lib ishlayman. Vaqtim bo'lganda, men mikro -kontrollerlarni dasturlashni, mexanik o'yinchoqlar yasashni va uyni obodonlashtirish loyihalarini qilishni yaxshi ko'raman. Jumbleview haqida ko'proq ma'lumot »
Ushbu loyiha Attiny85 chipli ikkita 10 mmli uch rangli umumiy anodli LEDlarni (Qovoq Hallowen Glitterining ko'p rangli ko'zlari) qanday boshqarilishini ko'rsatadi. Loyihaning maqsadi - o'quvchini bir vaqtning o'zida dasturlash san'ati va Adam Dunkels prototekalari kutubxonasidan foydalanish. Ushbu loyiha o'quvchi AVR 8-bitli kontrollerlar haqida bilishini, C dasturini yozishni va Atmel studiyasi bilan tajribaga ega bo'lishini taxmin qiladi.
GitHub -da e'lon qilingan loyiha kodi:
Ta'minotlar
Dasturlashdan oldin siz hali ham sxemani tuzishingiz kerak. Mana komponentlar:
- Attiny85 tekshiruvi (har qanday elektron etkazib beruvchi).
- Umumiy anodli ikkita uchta rangli 10 mmli LED. Adafruit LEDlari
- Rezistorlar 100 Ohm, 120 Ohm, 150 Ohm 0,125 yoki 0,250 Vt (har qanday elektron etkazib beruvchi).
- AVR ISP interfeysi uchun olti pinli sarlavha. Bu Adafruit sarlavhasidan tayyorlanishi mumkin
- Ba'zi non taxtasi yoki bosilgan shablon taxtasi. Men buni ishlatganman
- AVR ISP MKII interfeysi va Atmel Studio 6.1 (keyingi versiya ham ishlashi kerak).
1 -qadam: aylanish
Dizaynda beshta chipli pin ishlatiladi:
- Anodlarni boshqarish uchun ikkita pin ishlatiladi: har bir LED anod maxsus pinga biriktirilgan.
- LEDlarning katodlariga uchta rezina (rezistorlar orqali) biriktirilgan (har bir svetodiodning bitta rangli katodi bir xil pinga ulangan)
Biri so'rashi mumkin: nima uchun chipning oltita kirish -chiqish pinini ishlatmasligingiz kerak, shuning uchun LED anodlari +5 v ga to'g'ridan -to'g'ri ulanadi va har bir katodda maxsus pin bo'ladi? Bu dasturlashni soddalashtiradi. Afsuski, muammo bor: pin PB5 (RESET) - bu ~ 2 mA tokni etkazib bera oladigan zaif pin, ~ 20 mA bo'lishi kerak.
Albatta, bu zaif pin uchun tranzistorli kuchaytirgichni qurish mumkin, lekin men imkoni boricha kod orqali muammoni hal qilishni afzal ko'raman.
2 -qadam: Vaqt diagrammasi
Vaqt sxemasi bizga nima dasturlash kerakligini tushunishimizga yordam beradi.
Diagrammadagi yuqori ikkita satrda LED anodlaridagi kuchlanish o'zgarishi ko'rsatilgan. LED anodlariga ulangan pinlardagi kuchlanish ~ 250 Gts chastotada tebranadi. Chap LED uchun bu kuchlanish tebranishi o'ng LEDning tebranishiga ziddir. Anoddagi kuchlanish yuqori bo'lsa, mos keladigan LED yorqin bo'lishi mumkin. Kam bo'lganda mos keladigan LED qorong'i bo'ladi. Bu shuni anglatadiki, har bir LED 2 millisekund oralig'ida yorqin bo'lishi mumkin va yana 2 millisekundda qorong'i bo'ladi. Odamning ko'zida bir oz inertlik bo'lgani uchun, kuzatuvchi 250 Gts chastotali miltillashni sezmaydi. Diagrammaning pastki uch qatorida LEDlarning katodlariga ulangan pinlardagi kuchlanish o'zgarishi ko'rsatilgan. Keling, birinchi diagramma ustunini ko'rib chiqaylik. Chap LED qizil rangda va o'ng LED yashil rangda bo'lgan holatni ko'rsatadi. Bu erda RED katodlar pastda, chap anod baland bo'lganda, Yashil katot pastda, o'ng anod balandda va KO'K katod doimo past bo'ladi. Diagrammadagi boshqa ustunlar turli xil ranglar uchun katod va anod kuchlanishining kombinatsiyasini ko'rsatadi.
Ko'rib turganimizdek, pin holatiga o'zaro bog'liqlik mavjud. Agar biron bir ramka bo'lmasa, uni hal qilish oson bo'lmaydi. Va bu erda prototipli kutubxona yordam beradi.
3 -qadam: dasturlash. Makrolar va ta'riflar
Dasturlash bosqichlariga misol biroz soddalashtirilgan versiyani ko'rsatadi. Dastur qisqartirildi va ba'zi ramziy ta'riflar aniq konstantalar bilan almashtirildi.
Keling, boshidan boshlaylik. Dasturga Atmel Studio bilan kelgan fayllar, shuningdek, kutubxona sarlavhasi prototipi kiradi. Keyin pinlar darajasini boshqarish uchun ikkita makro va pin signallariga mantiqiy nom berish uchun ba'zi ta'riflar mavjud. Hozircha hech qanday maxsus narsa yo'q.
4 -qadam: Dasturlash. Asosiy halqa
Keling, oxirigacha qaraylik, qaysi asosiy protsedura o'z ichiga oladi.
Boshlang'ichni ishga tushirgandan so'ng asosiy funktsiya abadiy pastadirda qoladi. Bu davrda u keyingi qadamlarni qo'yadi:
- Chap diodli LED prototipini chaqiradi. U qisqichlarning kuchlanishini o'zgartiradi.
- Ikki millisekundga kechiktiring. Pin kuchlanishida hech qanday o'zgarish yo'q.
- To'g'ri LED uchun prototipni chaqiradi. U qisman pin kuchlanishini o'zgartiradi.
- 2 ta MS kechikishini qiling. Pin kuchlanishida hech qanday o'zgarish yo'q.
5 -qadam: Dasturlash. Yordamchi funktsiyalar
Prototiplarni muhokama qilishni boshlashdan oldin, biz yordamchi funktsiyalarni ko'rib chiqishimiz kerak. Birinchidan, ma'lum bir rangni sozlash funktsiyalari mavjud. Ular sodda. Qo'llab -quvvatlanadigan ranglar soni (etti) va LED qorong'i (NoColor) ni sozlash uchun yana bir qancha funktsiyalar mavjud.
Va yana bitta funktsiya bor, u to'g'ridan -to'g'ri prototip yordamida chaqiriladi. Uning nomi DoAndCountdown ().
Texnik jihatdan bunday funktsiyani ishlatish majburiy emas, lekin men buni qulay deb topdim. Unda uchta dalil bor:
- LED rangini sozlash uchun ko'rsatkich (masalan, RedColor yoki GreenColor yoki boshqalar).
- Teskari hisoblagichning boshlang'ich qiymati: prototipning ma'lum bosqichida bu funktsiyani necha marta chaqirish kerakligi.
- Hisoblagichni teskari yo'naltirish uchun ko'rsatgich. Rang o'zgarganda, teskari hisoblagich 0 ga teng deb taxmin qilinadi, shuning uchun dastlab iteratsiya kodi hisoblagichga boshlang'ich qiymatini beradi. Har bir takrorlashdan keyin hisoblagich kamayadi.
DoAndCountdown () funktsiyasi teskari hisoblagich qiymatini qaytaradi.
6 -qadam: Dasturlash. Prototeka tartiblari
Va bu erda ramka yadrosi: prototiplar tartibi. Oddiylik uchun misol faqat uchta qadam bilan cheklangan: rangni qizil, yashil va ko'k rangga o'zgartirish uchun.
Funktsiya ikkita dalil bilan chaqiriladi:
- Prototip tuzilishiga ko'rsatgich. Ushbu tuzilma asosiy tsikl boshlanishidan oldin main tomonidan boshlangan.
- Hisoblagichni teskari yo'naltirish uchun ko'rsatgich. Asosiy tsikl boshlanishidan oldin u asosiy tomonidan 0 ga o'rnatildi.
Chap LEDni faol qilish uchun funktsiya kuchlanishlarni o'rnatadi va keyin prototip segmentini ishga tushiradi. Bu segment PT_BEGIN va PT_END makrolari orasida. Bizda faqat PT_WAIT_UNTIL makrosini takrorlaydigan ba'zi kodlar mavjud. Bu makrolar quyidagilarni bajaradi:
- DoAndCountdown funktsiyasini chaqirish. Bu LED katodlarining kuchlanishini ma'lum bir rang chiqarish uchun o'rnatadi.
- Qaytgan natija 0 bilan taqqoslaganda. Agar shart "noto'g'ri" bo'lsa, prototip funktsiyasi darhol qaytadi va boshqaruvni asosiy tsiklga beradi.
- Keyingi safar prototeka chaqirilganda, u yana PT_BEGIN kodini bajaradi, so'ngra oxirgi marta qaytgan PT_WAIT_UNTIL makrosiga o'tadi.
- DoAndCountdown natijasi 0 ga qadar takrorlanadigan bunday harakatlar. Qaytish bo'lmasa, dastur prototipda qoladi va kodning keyingi qatorini bajaradi. Bizning holatda, bu keyingi PT_WAIT_UNTIL, lekin umuman aytganda, bu deyarli har qanday C kodi bo'lishi mumkin.
- Ikkinchi PT_WAIT_UNTIL teskari hisoblagichni dastlabki bajarishda 0 bo'ladi, shuning uchun DoAndCountdown () protsedurasi uni boshlang'ich qiymatiga o'rnatadi. Ikkinchi makroslar teskari hisoblagich 0 ga yetguncha yana 250 marta bajariladi.
- Struktura holati nazorat PT_END makrosiga etib borishi bilanoq tiklanadi. Keyingi safar prototipli segment chaqirilganda, protokolli segment PT_BEGINdan keyin kod satrini ishga tushiradi.
To'g'ri LED uchun shunga o'xshash prototipli protsedura mavjud. Bizning misolimizda u ranglarning turli tartibini bajaradi, lekin agar biz buni boshqacha qilsak: chap va o'ng LED rejimlari o'rtasida qattiq bog'lanish yo'q.
7 -qadam: ichki qism
Butun dastur 200 satrdan kam (izohlar va bo'sh satrlar bilan) va Attiny85 kod xotirasining 20% dan kamini oladi. Agar kerak bo'lsa, bu erda yana bir nechta prototipli protseduralardan foydalanish va ularga ancha murakkab mantiq tayinlash mumkin.
Protothreads kutubxonasi - bu kompyuter bilan bir vaqtda dasturlashning eng oddiy shakli. Bir vaqtning o'zida dasturlash - bu dasturni mantiqiy qismlarga bo'lishga imkon beradigan yondashuv: ba'zan ularni korutinlar, ba'zan iplar, ba'zan vazifalar deb atashadi. Printsip shundaki, har bir bunday vazifa bir xil protsessor quvvatiga ega bo'lishi mumkin, shu bilan birga kod ko'p yoki kamroq chiziqli bo'lib, boshqa qismlarga bog'liq emas. Mantiqiy nuqtai nazardan vazifalar bir vaqtning o'zida bajarilishi mumkin.
Murakkab tizimlar uchun bunday vazifalarni operatsion tizim yadrosi yoki kompilyator tomonidan bajariladigan tilning ish vaqti boshqaradi. Ammo prototiplar bo'lsa, dasturchi uni protokolli makroslar kutubxonasi yordamida vazifalar tartibida va bunday tartiblarni chaqirish orqali qo'lda boshqaradi (odatda asosiy tsikldan tashqari).
Ehtimol, prototip aslida qanday ishlashini bilmoqchimisiz? Sehr qaerda yashiringan? Prototiplar C tilining maxsus xususiyatiga tayanadi: C switch holatining bayoni if yoki boshqa bloklarga joylashtirilishi mumkin (masalan, vaqt yoki uchun). Tafsilotlarni Adam Dunkels saytida topishingiz mumkin
Ushbu loyihaning elektronika ichki qismi juda oddiy. Yuqoridagi fotosurat sizga ba'zi maslahatlarni beradi. Ishonchim komilki, siz yaxshiroq qila olasiz.
Tavsiya:
ESP8266 Fleshli va dasturchisi, IOT Wi -Fi moduli yordamida ESP8266 dasturiy ta'minotini qanday o'chirish yoki dasturlash: 6 qadam
ESP8266 Fleshli va Dasturchi, IOT Wi-Fi moduli yordamida ESP8266 dasturiy ta'minotini qanday o'chirish yoki dasturlash mumkin: Tavsif: Ushbu modul ESP-01 yoki ESP-01S tipidagi ESP8266 modullari uchun USB adapter /dasturchi. ESP01 -ni ulash uchun unga 2x4P 2,54 mm o'lchamli ayol boshi qulay tarzda o'rnatilgan. Bundan tashqari, u ESP-01 ning barcha pimlarini 2x4P 2,54 mm o'lchamdagi erkaklar orqali chiqaradi
ATtiny85 taqiladigan tebranish faolligini kuzatish va dasturlash ATtiny85 Arduino Uno bilan: 4 qadam (rasmlar bilan)
ATtiny85 taqiladigan tebranish faolligini kuzatish va dasturlash ATtiny85 Arduino Uno yordamida: taqiladigan harakatni kuzatish soatini qanday qilish mumkin? Bu turg'unlikni aniqlaganda tebranish uchun mo'ljallangan, taqiladigan gadjet. Siz ko'p vaqtingizni men kabi kompyuterda o'tkazasizmi? Siz buni sezmay soatlab o'tirasizmi? Keyin bu qurilma f
Mikrokontroller yordamida bir vaqtning o'zida yuqori chastotali va vazifali tsiklni qanday o'lchash mumkin: 4 qadam
Bir vaqtning o'zida mikrokontrolder yordamida yuqori chastotali va vazifali tsiklni qanday o'lchash mumkin: Men sizning fikringizni bilaman: " Huh? Signal chastotasini o'lchash uchun mikrokontrolderlardan foydalanish bo'yicha ko'plab ko'rsatmalar mavjud. Yaw. &Quot; Ammo kuting, bunda yangilik bor: men mikro chastotadan ancha yuqori chastotalarni o'lchash usulini tasvirlayman
Jek-chiroqqa chiroqlar va qo'rqinchli musiqa qo'shing-lehim yoki dasturlash yo'q (agar xohlamasangiz): 9 qadam (rasmlar bilan)
Jek-chiroqqa chiroqlar va qo'rqinchli musiqa qo'shing-lehimsiz va dasturlashsiz (xohlamaguningizcha): Yorug' chiroqlar va qo'rqinchli musiqalarni qo'shib, ko'changizdagi eng dahshatli Jek-O-chiroqni oling! Bu, shuningdek, Arduino va dasturlashtiriladigan elektronikani sinab ko'rishning ajoyib usuli, chunki butun loyihani kod yozmasdan yoki lehimsiz bajarish mumkin
Bir vaqtning o'zida ko'plab kompyuterlarni muzlatish: 4 qadam
Bir vaqtning o'zida ko'plab kompyuterlarni muzlatish: Agar siz hech qachon tarmoqdagi barcha kompyuterlarni (masalan, ishda yoki maktabda) muzlatib qo'ymoqchi bo'lsangiz, bu sizning imkoniyatingiz. Bu kulgili hazil bo'lishi mumkin, lekin shuni yodda tutingki, ba'zi odamlar kompyuterlari muzlab qolganida xafa bo'lishlari mumkin. (Ehtiyot bo'ling! Agar