Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Circut
- Hakbang 2: Diagram ng Oras
- Hakbang 3: Programing. Macros at Mga Kahulugan
- Hakbang 4: Programing. Pangunahing Loop
- Hakbang 5: Programming. Mga Pantulong na Pag-andar
- Hakbang 6: Programing. Mga Karanasan sa Protothread
- Hakbang 7: Mga Panloob
Video: Attiny85 Kasabay na Programming o Kalabasa Na May Multi-Colored na Mga Mata: 7 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:10
Sa pamamagitan ng jumbleviewJumbleview.infoFollow Higit pa ng may-akda:
Tungkol sa: Nagtatrabaho ako bilang software engineer sa isa sa mga kumpanya ng Bay Area (California). Tuwing mayroon akong oras na gusto kong mag-program ng mga micro controler, bumuo ng mga laruang pang-mekanikal, at gumawa ng ilang mga proyekto sa pagpapabuti ng bahay. Karagdagang Tungkol sa jumbleview »
Ipinapakita ng proyektong ito kung paano makontrol ang dalawang 10mm three-color karaniwang anode LEDs (maraming kulay na mga mata ng Pumpkin Halloween Glitter) na may Attiny85 chip. Layunin ng proyekto na ipakilala ang mambabasa sa sining ng kasabay na programa at sa paggamit ng Adam Dunkels protothreads library. Ipinapalagay ng proyektong ito na alam ng mambabasa ang tungkol sa AVR 8-bit Controller, maaaring sumulat ng ilang C-program at may karanasan sa Atmel studio.
Nai-publish ang code ng proyekto sa GitHub:
Mga gamit
Bago ang programa kailangan mo pa ring itayo ang circuit. Narito ang mga bahagi:
- Attiny85 controller (anumang elektronikong tagapagtustos).
- Dalawang tatlong kulay na 10mm LEDs na may karaniwang anode. Mga LED ng Adafruit
- Mga resistorista 100 Ohm, 120 Ohm, 150 Ohm 0.125 o 0.250 Wt (anumang elektronikong tagapagtustos).
- Anim na Pin header para sa AVR ISP interface. Maaaring gawin mula sa header ng Adafruit na ito
- Ang ilang mga board ng tinapay o naka-print na template board. Ginamit ko ang isang ito
- Ang interface ng AVR ISP MKII at Atmel Studio 6.1 (Ang susunod na bersyon ay dapat ding gumana).
Hakbang 1: Circut
Gumagamit ang disenyo ng limang mga pin ng chip:
- Dalawang mga pin na ginamit upang makontrol ang mga anode: bawat LED anode na nakakabit sa nakatuong pin.
- Tatlong mga pin na nakakabit (sa pamamagitan ng resistors) sa mga LEDs cathode (ang parehong kulay na katod ng bawat humantong na nakakabit sa parehong pin)
Magtatanong ang isa: bakit hindi gamitin ang lahat ng anim na in / out na pin ng maliit na tilad upang ang mga LED anode ay konektado nang direkta sa +5 v at ang bawat katod ay magkakaroon ng nakatuong pin? Gagawin nito ang prangka na programa. Naku, may problema: ang pin PB5 (RESET) ay isang mahinang pin na may kakayahang magbigay ng ~ 2 mA lamang ng kasalukuyang, habang kailangang magkaroon ng ~ 20 mA.
Siyempre ang isa ay maaaring bumuo ng transistor amplifier para sa mahina na pin ngunit ako mismo hangga't maaari ay ginusto na malutas ang problema sa labangan ng code.
Hakbang 2: Diagram ng Oras
Ang diagram ng tiyempo ay tumutulong sa amin na maunawaan kung ano ang kailangan naming mag-program.
Ang nangungunang dalawang mga hilera sa diagram ay nagpapakita ng pagbabago ng boltahe sa mga LED anode. Boltahe sa mga pin na konektado sa LED anodes oscillates na may dalas ~ 250 Hz. Ang boltahe na pag-oscillation para sa kaliwang LED ay isang kabaligtaran sa pag-oscillation ng kanang LED. Kapag ang boltahe sa anode ay mataas na kaukulang LED ay maaaring maging maliwanag. Kapag mababa ang kaukulang LED ay madilim. Nangangahulugan iyon na ang bawat LED ay maaaring maliwanag sa pagitan ng 2 milliseconds interval at madilim sa isa pang 2 milliseconds. Dahil ang mata ng tao ay may ilang pagkawalang-kilos, ang 250 Hz na kumikislap ay hindi kapansin-pansin ng nagmamasid. Sa ilalim ng tatlong mga hilera sa diagram ay nagpapakita ng pagbabago ng boltahe sa mga pin na konektado sa mga LED cathode. Tingnan natin ang unang haligi ng diagram. Ipinapakita nito ang kaso kapag ang kaliwang LED ay may pulang kulay at kanang LED sa berdeng kulay. Narito ang RED cathode ay mananatiling mababa habang ang kaliwang anode ay mataas, ang GREEN cathode ay mananatiling mababa habang ang kanang anode ay mataas, at ang BLUE cathode ay mananatiling mababa sa lahat ng oras. Ang iba pang mga haligi sa diagram ay nagpapakita ng mga kumbinasyon ng cathode at boltahe ng anode para sa iba't ibang mga kulay.
Tulad ng nakikita natin mayroong pagkakaugnay sa estado ng mga pin. Kung walang ilang balangkas hindi ito madaling malutas. At doon magaling ang protothread library.
Hakbang 3: Programing. Macros at Mga Kahulugan
Ang halimbawa sa mga hakbang sa pagprograma ay kumakatawan sa bahagyang pinasimple na bersyon. Ang programa ay pinaikling, at ang ilang mga simbolikong kahulugan ay pinalitan ng mga mahigpit na pare-pareho.
Magsimula tayo mula sa simula. Kasama sa programa ang mga file na kasama ng Atmel Studio pati na rin ang protothread header ng library. Susunod mayroong dalawang macros upang manipulahin ang mga antas ng mga pin at ilang mga kahulugan upang magbigay ng mga lohikal na pangalan sa mga signal ng pin. Sa ngayon walang espesyal.
Hakbang 4: Programing. Pangunahing Loop
Pagkatapos tingnan natin ang dulo upang makita kung ano ang naglalaman ng pangunahing pamamaraan.
Pangunahing pagpapaandar matapos ang paggawa ng ilang pagpapasimula ay mananatili sa walang hanggang loop. Sa loop na iyon gumagawa ng mga susunod na hakbang:
- Inaanyayahan ang regular na protothread para sa kaliwang LED. Binabago nito ang ilang boltahe ng mga pin.
- Gumawa ng pagkaantala ng dalawang milliseconds. Walang pagbabago sa boltahe ng pin.
- Inaanyayahan ang protothread para sa tamang LED. Binabago nito ang ilang boltahe ng pin.
- Gumawa ng pagkaantala ng 2 MS. Walang pagbabago sa boltahe ng pin.
Hakbang 5: Programming. Mga Pantulong na Pag-andar
Bago namin simulang talakayin ang mga protothread kailangan nating tingnan ang ilang mga pagpapaandar ng helper. Una may mga pagpapaandar upang magtakda ng partikular na kulay. Prangka sila. Mayroong maraming mga tulad ng mga pag-andar bilang bilang ng mga sinusuportahang kulay (pitong) at isa pang pag-andar upang itakda ang LED dark (NoColor).
At may isa pang pag-andar na direktang tatawagin ng protothread na gawain. Ang pangalan nito ay DoAndCountdown ().
Ang teknikal na pagsasalita ng paggamit ng gayong pagpapaandar ay hindi sapilitan ngunit nahanap ko itong maginhawa. Mayroon itong tatlong mga argumento:
- Ituro sa pagpapaandar ang setting ng kulay ng LED (tulad ng RedColor o GreenColor o iba pa.)
- Paunang halaga ng reverse counter: bilang ng kung gaano karaming beses ang pagpapaandar na ito ay dapat na tawagan sa partikular na yugto ng protothread.
- Pointer upang i-reverse counter. Ipinapalagay na kapag may pagbabago sa kulay na reverse counter ay 0, kaya sa una ang iteration code ay magtatalaga sa counter na paunang halaga. Pagkatapos ng bawat iteration counter ay nabawasan.
Ang function na DoAndCountdown () ay nagbabalik ng halaga ng reverse counter.
Hakbang 6: Programing. Mga Karanasan sa Protothread
At narito ang pangunahing istraktura: regular na protothread. Para sa kapakanan ng halimbawang halimbawa limitado lamang sa tatlong mga hakbang: para sa pagbabago ng kulay sa Pula, sa GREEN, at sa BLUE.
Ang pagpapaandar ay tinawag sa dalawang mga argumento:
- Ituro ang istrakturang protothread. Ang istrakturang iyon ay isinimula ng pangunahing bago magsimula ang pangunahing loop.
- Pointer upang i-reverse counter. Itinakda ito sa 0 ng pangunahing bago magsimula ang pangunahing loop.
Ang pagpapaandar ng mga voltages upang gawing aktibo ang kaliwang LED at pagkatapos ay magsisimula sa protothread na segment. Ang segment na ito ay nasa pagitan ng macros PT_BEGIN at PT_END. Sa loob mayroong ilang mga code na sa aming kaso ay inuulit lamang ang macros PT_WAIT_UNTIL. Susunod na gumaganap ang macros na ito:
- Imbitasyon ng pagpapaandar na DoAndCountdown. Nagtatakda iyon ng boltahe sa mga LED cathode upang maglabas ng partikular na kulay.
- Ang ibinalik na resulta kumpara sa 0. Kung ang kundisyon ay 'maling' protothread function na agad na bumalik at magbubunga ng kontrol sa pangunahing loop.
- Kapag naimbitahan ang protothread sa susunod na muli itong magpapatupad ng code bago ang PT_BEGIN, pagkatapos ay direktang tumalon sa loob ng PT_WAIT_UNTIL macros kung saan ito bumalik sa huling pagkakataon.
- Ang mga nasabing pagkilos ay paulit-ulit hanggang sa resulta ng DoAndCountdown ay 0. Sa kasong iyon ay walang pagbabalik, mananatili ang programa sa protothread at nagpapatupad ng susunod na linya ng code. Sa aming kaso ito ay susunod na PT_WAIT_UNTIL ngunit sa pangkalahatan ay nagsasalita ito ay maaaring maging halos anumang C code.
- Sa paunang pagpapatupad ng pangalawang PT_WAIT_UNTIL reverse counter ay 0, kaya't ang pamamaraan na DoAndCountdown () itakda ito sa paunang halaga. Ang pangalawang macros muli ay papatayin nang 250 beses hanggang sa umabot sa 0 ang counter counter.
- Ang estado ng struct pt ay nai-reset kaagad sa oras na maabot ng kontrol ang PT_END macros. Kapag ang function ng protothread ay naimbitahan sa susunod na seguro ng protothread ay nagsisimulang magpatupad ng linya ng code pagkatapos ng PT_BEGIN.
Mayroong katulad na protothread na gawain para sa tamang LED. Sa aming halimbawa nagpapatupad lamang ito ng iba't ibang pagkakasunud-sunod ng mga kulay, ngunit kung maaari nating gawin itong ganap na naiiba: walang mahigpit na pagkabit sa pagitan ng kaliwa at kanang gawain ng LED.
Hakbang 7: Mga Panloob
Ang buong programa ay mas mababa pagkatapos ng 200 mga linya ng code (na may mga komento at walang laman na mga linya) at tumatagal ng mas mababa sa 20% ng Attiny85 code ng memorya. Kung kinakailangan posible na magamit dito ang maraming higit pang mga gawain sa protothread at magtalaga ng mas kumplikadong lohika sa kanila.
Ang library ng Protothreads ay ang pinakasimpleng anyo ng kasabay na programa ng computer. Ang kasabay na pagprogram ay isang diskarte na pinapayagan na hatiin ang programa sa mga lohikal na bahagi: kung minsan ay tinatawag silang mga coroutine, kung minsan ay sinulid, kung minsan ay mga gawain. Ang prinsipyo ay ang bawat ganoong gawain ay maaaring ibahagi ang parehong kapangyarihan ng processor habang pinapanatili ang code nang higit pa o mas mababa sa linear at independiyente sa iba pang mga bahagi. Ang mga gawain mula sa lohikal na pananaw ay maaaring maisagawa nang sabay-sabay.
Para sa mga advanced na kontrol ng system ng mga naturang gawain na isinagawa alinman sa operating system kernel o sa pamamagitan ng runtime ng wika na naka-embed sa maipapatupad ng compiler. Ngunit sa kaso ng protothreads application programmer ay kinokontrol ito nang manu-mano sa pamamagitan ng paggamit ng protothreads macros library sa mga gawain sa gawain at pag-uusap tulad ng mga gawain (karaniwang wala sa pangunahing loop).
Marahil ay nais mong malaman kung paano talagang gumagana ang protothread? Saan itinago ang mahika? Ang mga protothread ay umaasa sa espesyal na tampok na wika ng C: ang katotohanan na ang pahayag ng kaso ng switch ng C ay maaaring naka-embed sa kung o ilang iba pang mga bloke (tulad ng habang o para sa). Mga detalye na maaari mong makita sa site ng Adam Dunkels
Ang mga electronics internals ng proyektong ito ay napaka-simple. Ang larawan sa itaas ay nagbibigay sa iyo ng ilang bakas. Sigurado akong makakabuti ka.
Inirerekumendang:
Isang IoT Halloween Kalabasa - Kontrolin ang mga LED Sa Isang Arduino MKR1000 at Blynk App ???: 4 Mga Hakbang (na may Mga Larawan)
Isang IoT Halloween Kalabasa | Kontrolin ang Mga LED Sa Isang Arduino MKR1000 at Blynk App ???: Kamusta Lahat, Ilang linggo na ang nakalilipas ay ang Halloween at pagsunod sa tradisyon na inukit ko ang isang magandang kalabasa para sa aking balkonahe. Ngunit sa labas ng aking kalabasa, napagtanto ko na nakakainis na lumabas tuwing gabi upang sindihan ang kandila. At ako
Halloween Kalabasa Na May Isang Moving Animatronic Eye - Ang Kalabasa na Ito ay Maaaring I-roll ang Mata Nito !: 10 Hakbang (na may Mga Larawan)
Halloween Kalabasa Na May Isang Moving Animatronic Eye | Ang Kalabasa na Ito ay Maaaring I-roll ang Mata Nito !: Sa Instructable na ito, malalaman mo kung paano gumawa ng isang kalabasa sa Halloween na kinikilabutan ang lahat kapag gumalaw ang mata nito. Isaayos ang distansya ng pag-trigger ng ultrasonic sensor sa tamang halaga (hakbang 9), at ang iyong kalabasa ay magpapakuryente sa sinumang mangahas na kumuha ng kandila
ATtiny85 Nasusuot na Pagsubaybay ng Aktibidad na Pagsubaybay ng Aktibidad at Programming ATtiny85 Sa Arduino Uno: 4 na Hakbang (na may Mga Larawan)
ATtiny85 Nasusuot na Pagsubaybay ng Aktibidad na Pagsubaybay sa Aktibidad at Programming ATtiny85 Sa Arduino Uno: Paano gagawin ang relo ng pagsusuot ng aktibidad na maaaring panoorin? Ito ay isang naisusuot na gadget na dinisenyo upang mag-vibrate kapag nakita nito ang pagwawalang-kilos. Ginugugol mo ba ang karamihan ng iyong oras sa computer na tulad ko? Nakaupo ka ba nang maraming oras nang hindi namamalayan? Pagkatapos ang aparatong ito ay f
Pagkontrol ng Mga Ilaw Sa Iyong Mga Mata: 9 Mga Hakbang (na may Mga Larawan)
Pagkontrol ng Mga Ilaw Sa Iyong Mga Mata: Sa semestre na ito sa kolehiyo, kumuha ako ng klase na tinatawag na Instrumentation in Biomedicine kung saan natutunan ko ang mga pangunahing kaalaman sa pagpoproseso ng signal para sa mga medikal na aplikasyon. Para sa huling proyekto ng klase, nagtrabaho ang aking koponan sa teknolohiya ng EOG (electrooculography). Essenti
King Kong Mask na May Mga Mata na Animatronic: 4 Mga Hakbang (na may Mga Larawan)
King Kong Mask Sa Mga Mata na Animatronic: Ipinapakita ng itinuturo na ito kung paano gumawa ng maskara na may makatotohanang gumagalaw na mga mata. Nangangailangan ang proyektong ito ng mga sumusunod na kasanayan na hindi sakop ng mga detalye: - Ang pag-setup ng Arduino, pag-upload ng mga programa at pag-upload ng sketch - Pag-solder - pag-print ng 3D