Orodha ya maudhui:

Taa ya Mood ya 1 $ LED na ATtiny13 na WS2812: 7 Hatua
Taa ya Mood ya 1 $ LED na ATtiny13 na WS2812: 7 Hatua

Video: Taa ya Mood ya 1 $ LED na ATtiny13 na WS2812: 7 Hatua

Video: Taa ya Mood ya 1 $ LED na ATtiny13 na WS2812: 7 Hatua
Video: Электрика в квартире своими руками. Финал. Переделка хрущевки от А до Я. #11 2024, Novemba
Anonim
Taa ya Mood ya 1 $ 1 na ATtiny13 na WS2812
Taa ya Mood ya 1 $ 1 na ATtiny13 na WS2812

Fuata Zaidi na mwandishi:

Seva ya kibinafsi ya CalDAV kwenye Kompyuta ya Bodi Moja
Seva ya kibinafsi ya CalDAV kwenye Kompyuta ya Bodi Moja
Seva ya kibinafsi ya CalDAV kwenye Kompyuta ya Bodi Moja
Seva ya kibinafsi ya CalDAV kwenye Kompyuta ya Bodi Moja
Wavamizi wa LCD: Wavamizi wa nafasi kama mchezo kwenye 16x2 Uonyesho wa Tabia ya LCD
Wavamizi wa LCD: Wavamizi wa nafasi kama mchezo kwenye 16x2 Uonyesho wa Tabia ya LCD
Wavamizi wa LCD: Wavamizi wa nafasi kama mchezo kwenye 16x2 Uonyesho wa Tabia ya LCD
Wavamizi wa LCD: Wavamizi wa nafasi kama mchezo kwenye 16x2 Uonyesho wa Tabia ya LCD
Octarine: Mchezo Unaofanana wa Rangi na WS2812 RGB LEDs
Octarine: Mchezo Unaofanana wa Rangi na WS2812 RGB LEDs
Octarine: Mchezo Unaofanana wa Rangi na WS2812 RGB LEDs
Octarine: Mchezo Unaofanana wa Rangi na WS2812 RGB LEDs

Hii ni taa ya hali ya bei ya chini na njia nne.

1. Cheche cha Upinde wa mvua. Cheche ya nuru huenda juu mara baada ya muda na hubadilisha rangi pole pole.

2. Mwangaza wa upinde wa mvua. Mwanga thabiti ambao hubadilisha rangi pole pole.

3. Uigaji wa moto wa mshumaa.

4. Zima.

Unaweza kubadilisha njia kwa kugonga kitufe cha kugusa juu. Hali ya sasa imehifadhiwa kwenye kumbukumbu ya EEPROM baada ya kuzima.

Je! ATTiny13 ni ndogo kiasi gani?

Wazo lilikuwa kupata vitu vya juu kutoka kwa vifaa vya chini, kitu ngumu zaidi kuliko swichi ya kiotomatiki au kipima joto, mradi karibu na ukingo wa mdhibiti mdogo huyu. Baada ya yote, vikwazo vinakufanya ufikirie ubunifu, sawa? Kweli, ilionekana kama hapo mwanzo.

Changamoto kubwa katika mradi huu ilikuwa kusukuma nambari yote kwenye ATtiny13. Mdhibiti mdogo ana kaiti 1K ka na ka 64 tu za RAM. Ndio, ninaposema "ka", namaanisha zile zenye bits nane. Baiti 64 kwa anuwai zote za eneo lako na stack ya simu. Ili kuifanya iwe wazi, fikiria tunapaswa kudhibiti 8 RGB LEDs. Kila moja hufafanuliwa na ka 3 (moja ya chaneli nyekundu, kijani na bluu mtawaliwa). Kwa hivyo, tu kuhifadhi hali ya LED 8, tutahitaji kutekeleza safu ya miundo 8 ka 3 na kila kiashiria kwa mwanzo wa safu hii itachukua baiti moja zaidi. Kwa hivyo, ka 25 kati ya 64 ziko nje. Tumetumia 39% tu ya RAM na bado hatujaanza. Kwa kuongeza, kuhifadhi rangi saba za msingi za upinde wa mvua, utahitaji 7 × 3 = 21 ka, kwa hivyo 72% ya RAM iko nje. Kweli, kama kwa rangi ya kimsingi, mimi huzidisha: hatuitaji zote kwa wakati mmoja kwenye RAM na hazibadiliki, kwa hivyo zinaweza kutekelezwa kama safu ya mara kwa mara kuhifadhiwa kwa taa badala ya RAM. Kwa hivyo, inatoa maoni ya jumla juu ya vifaa vilivyotumika.

Kukumbuka taarifa ya Knuth juu ya utaftaji wa mapema, nilianza kutoka kuiga aina tatu za taa kando ili kuona kile kinachotokea. Nimewajaribu kando ili kuhakikisha kuwa wanafanya kazi vizuri na kila mmoja anafaa mdhibiti wangu mdogo. Ilichukua jioni kadhaa kuifanikisha na kila kitu kilikwenda vizuri… hadi nikajaribu kuwaweka pamoja ndani ya taarifa ya kubadili. shirika la ukubwa wa avr liliripoti ukubwa wa sehemu ya maandishi ya 1.5 Kb (na -s bendera ya avr-gcc). Wakati huo nia yangu ya asili ilikuwa kunyakua ATtiny25 na 2Kb flash na huo ungekuwa mwisho mzuri wa hadithi hii.

Lakini kwa namna fulani nilihisi kuwa baada ya utaftaji mzuri ningeweza kupunguzia nambari hiyo mbaya kuwa 1Kb. Walakini, ilichukua wiki moja zaidi kugundua kuwa haiwezekani na wiki moja zaidi kuifanikisha hata hivyo. Ilinibidi kukata upinde wa mvua kwa rangi tano za kimsingi (bila tofauti kubwa ya kuona). Niliondoa taarifa za kesi na nikatumia mnyororo wa ikiwa-basi-ikiwa kupunguza saizi ya msimbo wa binary. Uhuishaji wa moto unahitaji jenereta ya nambari ya bandia ambayo ni kubwa sana, kwa hivyo nilitekeleza toleo rahisi la LFSR na thamani ya awali ya kila wakati. Sijali kuhusu urefu kamili wa mzunguko wa PRNG na ninatafuta tu usawa wa kushuka kati ya saizi ya nambari na "uhuishaji halisi wa moto". Nilitekeleza pia uboreshaji mdogo ambao siwezi kukumbuka hivi sasa na hata niliweza kuwasha njia zote mbali na moto kuingia kwenye chip. Wakati niliishiwa na maoni, nambari yangu kamili ilikuwa kama ka 1200.

Nilichukua muda wa kumaliza na nilikuwa nikisoma mengi juu ya kuboresha nambari ya AVR. Nilikuwa karibu kutoa na kuandika kila kitu kwa lugha ya mkusanyiko lakini nikampa nafasi ya mwisho. Wakati wa kukimbilia kwa utaftaji wa mwisho, nimekata upinde wa mvua kwa rangi tatu za kimsingi na nikafanya zingine zihesabiwe juu ya nzi, nilikagua kila kitu na kufuata mapendekezo ya kuboresha AVR na mwishowe…

avrdude: kuandika flash (1004 ka):

Kuandika | # ############ | 100% 0.90s

Hakuna haja ya kusema kuwa nilitumia karibu RAM yote na kaiti moja tu ya EEPROM kuhifadhi hali ya sasa. Simaanishi kuwa huu ni utekelezaji bora na wa mwisho. Inafanya kazi tu na inafaa mdhibiti mdogo. Nina hakika, unaweza kufanya vizuri zaidi. Mimi ni kweli. Nataka tu kushiriki raha ya kutatua shida inayoonekana isiyowezekana unayofikiria haiwezekani mwanzoni. "Kwa hivyo, udukuzi unamaanisha kuchunguza mipaka ya kile kinachowezekana…" - Richard Stallman.

Ugavi:

1x ATtiny13 MCU ($ 0.28 = $ 0.24 kwa MCU katika kifurushi cha SOP-8 na $ 0.04 kwa DIP8 Adapter)

8x WS2812 RGB LEDs (Ninapendekeza bodi au kipande cha mstari wa LED) ($ 0.42)

Kitufe cha kugusa cha 1x TTP223 ($ 0.10)

1x USB ndogo kwa adapta ya DIP ($ 0.14)

Kipinzani cha 1x 10kΩ (<$ 0.01)

1x 100nF kauri capacitor (<$ 0.01)

1x 10-47µF capacitor elektroni (<$ 0.01)

Jumla <$ 0.97

Hatua ya 1: Usanidi wa Programu

Usanidi wa Programu
Usanidi wa Programu

Utahitaji zana ya zana ya avr-gcc kwa kukusanya nambari ya chanzo na matumizi ya avrdude kwa kupakia ROM ya microcontroller. Mchakato wa usanikishaji ni rahisi na rahisi, lakini inategemea mfumo wako wa kufanya kazi. Ikiwa unatumia aina fulani ya GNU / Linux, labda tayari una vifurushi sahihi kwenye mti wako wa hazina. Nambari ya chanzo ya mradi huu inaweza kupakuliwa hapa:

github.com/arduinocelentano/t13_ws2812_lamp

Utahitaji pia maktaba ya light_ws2812:

github.com/cpldcpu/light_ws2812

Mara tu unapopata zana ya zana ya avr-gcc na vyanzo vya mradi, endesha kituo chako na andika nambari ifuatayo:

Njia ya cd / kwa / mradi

fanya

Hatua ya 2: Kupanga programu ya Microcontroller

Programu ya Mdhibiti Mdogo
Programu ya Mdhibiti Mdogo
Programu ya Mdhibiti Mdogo
Programu ya Mdhibiti Mdogo
Programu ya Mdhibiti Mdogo
Programu ya Mdhibiti Mdogo

Ikiwa una aina fulani ya programu ya USBASP, inganisha tu kwa Attiny kulingana na pinout yake. Kawaida ingeonekana kama hii lakini ninapendekeza sana kuangalia pinout yako halisi!

Vinginevyo, unaweza kutumia bodi ya Arduino kama programu. Fungua Arduino IDE na upate mfano wa Arduino ISP kwenye menyu ya "Faili → Mifano". Baada ya kupakia mchoro, bodi yako ya Arduino hufanya kama programu. Maoni kwenye nambari ya mchoro yatakupa kidokezo cha kuchora.

Sasa kimbia

fanya flash

kuangaza MCU na

tengeneza fuse

kuweka fuse bits.

Hatua ya 3: Skematiki

Ilipendekeza: