Satura rādītājs:
Video: LED noskaņas lampa 1 USD vērtībā ar ATtiny13 un WS2812: 7 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:51
Sekojiet vairāk autora:
Šī ir lēta garastāvokļa lampa ar četriem režīmiem.
1. Varavīksnes dzirksts. Gaismas dzirksts ik pa laikam virzās uz augšu un pakāpeniski maina krāsu.
2. Varavīksnes mirdzums. Stabils spīdums, kas pakāpeniski maina krāsu.
3. Sveces uguns simulācija.
4. Izslēgts.
Režīmus var pārslēgt, augšpusē pieskaroties pieskāriena pogai. Pašreizējais režīms pēc izslēgšanas tiek saglabāts EEPROM atmiņā.
Cik niecīgs ir ATtiny13?
Ideja bija iegūt maksimālas iespējas no minimālās aparatūras, kaut kas sarežģītāks par automatizētu slēdzi vai termometru - projektu, kas atrodas tuvu šī mazā mikrokontrollera malai. Galu galā ierobežojumi liek domāt radoši, vai ne? Nu, sākumā tā izskatījās.
Visgrūtākais šajā projektā bija ievietot visu kodu ATtiny13. Mikrokontrolleram ir 1K baitu zibspuldze un tikai 64 baiti RAM. Jā, sakot “baiti”, es domāju tos, kas sastāv no astoņiem bitiem. 64 baiti visiem vietējiem mainīgajiem un zvanu stekam. Lai tas būtu skaidrs, apsveriet, ka mums ir jākontrolē 8 RGB gaismas diodes. Katru no tiem nosaka 3 baiti (viens attiecīgi sarkanajam, zaļajam un zilajam kanālam). Tātad, lai saglabātu 8 gaismas diodes stāvokli, mums būs jāievieš 8 struktūru masīvs ar 3 baitiem katrā, un rādītājs uz šī masīva sākumu aizņem vēl vienu baitu. Tādējādi 25 no 64 baitiem ir ārā. Mēs tikko esam izmantojuši 39% RAM un vēl neesam sākuši. Turklāt, lai saglabātu septiņas varavīksnes pamatkrāsas, jums būs nepieciešami 7 × 3 = 21 baiti, tātad 72% RAM nav. Runājot par pamatkrāsām, es pārspīlēju: mums tie visi nav vajadzīgi vienlaicīgi RAM un tie nekad nemainās, tāpēc tos var ieviest kā pastāvīgu masīvu, kas jāglabā zibspuldzes vietā, nevis RAM. Jebkurā gadījumā tas rada vispārēju iespaidu par izmantoto aparatūru.
Atceroties Knutas paziņojumu par priekšlaicīgu optimizāciju, es sāku ar trīs lampu režīmu prototipēšanu atsevišķi, lai redzētu, kas notiek. Esmu tos pārbaudījis atsevišķi, lai pārliecinātos, ka tie darbojas pareizi un vai katrs atbilst manam mikrokontrolleram. Pagāja pāris vakaru, lai to paveiktu, un viss gāja labi … līdz es mēģināju tos salikt slēdzī. avr izmēra utilīta ziņoja par 1,5 Kb teksta sadaļas lielumu (ar -s karogu avr-gcc). Tajā brīdī mans sākotnējais nodoms bija paķert kādu ATtiny25 ar 2Kb zibspuldzi, un tas varēja būt šī stāsta laimīgās beigas.
Bet kaut kā man šķita, ka pēc ievērojamas optimizācijas man izdosies samazināt šo štrunts kodu 1Kb. Tomēr pagāja vēl nedēļa, lai saprastu, ka tas nav iespējams, un vēl viena nedēļa, lai to paveiktu. Varavīksne bija jāsamazina līdz piecām pamatkrāsām (bez būtiskas vizuālās atšķirības). Es atbrīvojos no gadījumu paziņojumiem un izmantoju ķēdi if-tad-if, lai samazinātu binārā koda lielumu. Ugunsgrēka animācijai ir nepieciešams pseidogadījuma skaitļu ģenerators, kas ir diezgan apjomīgs, tāpēc es ieviesu vienkāršotu LFSR versiju ar nemainīgu sākotnējo vērtību. Man vienalga PRNG pilna cikla garums un tikai meklēju nolaišanās līdzsvaru starp koda lielumu un “reālistisku uguns animāciju”. Es arī īstenoju daudzas nelielas optimizācijas, kuras šobrīd neatceros, un pat izdevās mikroshēmā ieslēgt visus režīmus, izņemot uguni. Kad man beidzās idejas, mans kopējais kods bija aptuveni 1200 baitu.
Es paņēmu taimautu un daudz lasīju par AVR koda optimizāciju. Es biju tuvu tam, lai atteiktos un visu pārrakstītu montāžas valodā, bet devu tai pēdējo iespēju. Pēdējā optimizācijas steigā es esmu sagriezis varavīksni trīs pamatkrāsās un licis citas aprēķināt pēc lidojuma, es visu pārbaudīju un ievēroju AVR optimizācijas ieteikumus un visbeidzot …
avrdude: rakstīšanas zibspuldze (1004 baiti):
Rakstīšana | ################################################ | 100% 0.90
Nav nepieciešams teikt, ka pašreizējā režīma saglabāšanai esmu izmantojis gandrīz visu RAM un tikai vienu EEPROM baitu. Es nenozīmē, ka tā ir ideāla un galīga īstenošana. Tas vienkārši darbojas un atbilst mikrokontrolleram. Esmu pārliecināts, ka jūs varētu darīt labāk. Es tiešām esmu. Es tikai vēlos dalīties priekā atrisināt šķietami nepraktisku problēmu, kuru jūs sākumā uzskatāt par gandrīz neiespējamu. "Tādējādi uzlaušana nozīmē iespēju robežu izpēti …" -Ričards Stallmans.
Piegādes:
1x ATtiny13 MCU (0,28 USD = 0,24 USD MCU SOP-8 iepakojumā un 0,04 USD DIP8 adapterim)
8x WS2812 RGB gaismas diodes (es iesaku dēli vai LED sloksnes gabalu) (0,42 ASV dolāri)
1x TTP223 pieskāriena poga (0,10 ASV dolāri)
1x Micro USB uz DIP adapteris (0,14 ASV dolāri)
1x 10kΩ rezistors (<$ 0,01)
1x 100nF keramikas kondensators (<$ 0,01)
1x 10–47µF elektrolītiskais kondensators (<$ 0,01)
Kopā <0,97 ASV dolāri
1. darbība. Programmatūras iestatīšana
Jums būs nepieciešama rīku ķēde avr-gcc avota koda apkopošanai un avrdude utilīta mikrokontrollera ROM augšupielādēšanai. Instalēšanas process ir diezgan vienkāršs un vienkāršs, taču tas ir atkarīgs no jūsu operētājsistēmas. Ja izmantojat kaut kādu GNU/Linux, jums, iespējams, jau ir piemērotas pakotnes jūsu krātuves kokā. Šī projekta avota kodu var lejupielādēt šeit:
github.com/arduinocelentano/t13_ws2812_lamp
Jums būs nepieciešama arī bibliotēka light_ws2812:
github.com/cpldcpu/light_ws2812
Kad esat ieguvis rīku ķēdi avr-gcc un projektu avotus, palaidiet savu termināli un ierakstiet šādu kodu:
cd ceļš/uz/projektu
veidot
2. solis: mikrokontrollera programmēšana
Ja jums ir sava veida USBASP programmētājs, vienkārši pievienojiet to Attiny atbilstoši tā kontaktam. Parasti tas izskatītos šādi, bet es ļoti iesaku pārbaudīt savu faktisko pinout!
Alternatīvi kā programmētāju varat izmantot Arduino plāksni. Atveriet Arduino IDE un izvēlnē “Fails → Piemēri” atrodiet Arduino ISP piemēru. Pēc skices augšupielādes jūsu Arduino tāfele darbojas kā programmētājs. Skices koda komentāri ļautu jums uzzināt, kā to atrast.
Tagad skrien
uzplaiksnīt
lai mirgo MCU un
uztaisīt drošinātāju
lai uzstādītu drošinātāju bitus.
Ieteicams:
Noskaņas lampa ar RGB vadību: 4 soļi
Garastāvokļa lampa ar RGB vadību: Este proyecto se trató de hacer una lampara de * sentimientos * utilizando un Arduino Uno. Nepieciešami visdažādākie materiāli, džemperi, gaismas diodes RGB vai Neopixel, atkarīgi no tā, kā to var redzēt. En este caso utilizaremos vadīja RGB kopā ar
RGB ikosaedra noskaņas lampa: 9 soļi (ar attēliem)
RGB ikosaedra noskaņojuma lampa: ģeometriskās formas vienmēr ir piesaistījušas mūsu uzmanību. Nesen viena šāda aizraujoša forma izraisīja mūsu zinātkāri: ikosaedrs. Ikosaedrs ir daudzskaldnis ar 20 sejām. Var būt bezgala daudz dažādu ikosaedras formu, bet bez
Noskaņas skaļrunis- spēcīgs skaļrunis noskaņas mūzikas atskaņošanai, pamatojoties uz apkārtējās vides temperatūru: 9 soļi
Noskaņas skaļrunis- spēcīgs skaļrunis noskaņojuma atskaņošanai, pamatojoties uz apkārtējās vides temperatūru: Sveiki! Skolas projektam MCT Howest Kortrijk es izveidoju noskaņas skaļruni, kas ir vieda Bluetooth skaļruņu ierīce ar dažādiem sensoriem, LCD un WS2812b iekļauta LED josla. Skaļrunis atskaņo fona mūziku, pamatojoties uz temperatūru, bet var
Galaxy noskaņas lampa: 10 soļi (ar attēliem)
Galaxy noskaņojuma lampa: Kosmoss ir aizraujošs ar zvaigznēm un planētām. Bet nekas nav burvīgāks un relaksējošāks par skatīšanos uz skaidrām zvaigžņotām debesīm un skatīšanos plašumā. Šajā projektā mēs cenšamies atjaunot šo milzīgo pieredzi, izveidojot galaktiku
Kā mājās izveidot WiFi drošības sistēmu 10 USD vērtībā? Nekādu maksu un darbu nekur!: 3 soļi
Kā mājās izveidot WiFi drošības sistēmu 10 USD vērtībā? Nekur nav jāmaksā un jāstrādā !: Kā mājās izveidot Wi -Fi drošības paziņojumu sistēmu 10 USD vērtībā? Nav jāmaksā un tas darbojas visur! Ja PIR kustības sensors nosaka kustību, tas nosūta paziņojumu uz jūsu mobilo tālruni. ESP8266 ESP-01 WiFi modulis, PIR kustības sensors un 3.3