Агуулгын хүснэгт:
Видео: ATtiny13 ба WS2812: 7 алхамтай 1 долларын үнэтэй LED гэрлийн чийдэн
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:00
Зохиогчийн бусад зүйлийг дагаж мөрдөх:
Энэ бол дөрвөн горимтой хямд үнэтэй сэтгэлийн гэрэл юм.
1. Солонгын оч. Гэрлийн оч үе үе дээшээ хөдөлж аажмаар өнгөө өөрчилдөг.
2. Солонгын гэрэл. Өнгийг аажмаар өөрчилдөг тогтвортой туяа.
3. Лааны галын симуляци.
4. Унтраасан.
Та дээд талын мэдрэгчтэй товчлуур дээр дарж горимыг сольж болно. Одоогийн горимыг унтраасны дараа EEPROM санах ойд хадгална.
ATtiny13 хэр жижиг вэ?
Энэхүү жижигхэн микроконтроллерийн ирмэг дээр байрлах төсөл, автомат унтраалга эсвэл термометрээс илүү төвөгтэй зүйлийг хамгийн бага тоног төхөөрөмжөөс авах боломжтой байв. Эцсийн эцэст хязгаарлалт нь таныг бүтээлч сэтгэхэд хүргэдэг, тийм үү? Яахав эхэндээ ийм л харагдаж байсан.
Энэ төслийн хамгийн хэцүү ажил бол бүх кодыг ATtiny13 руу оруулах явдал байв. Микроконтроллер нь 1К байт флаш, ердөө 64 байт RAM -тай. Тийм ээ, би "байт" гэж хэлэхэд найман битээс бүрдэхийг хэлнэ. Таны бүх локал хувьсагч болон дуудлагын стекийн хувьд 64 байт. Ойлгомжтой болгохын тулд бид 8 RGB LED -ийг хянах ёстой гэж бодож байна. Тэд тус бүрийг 3 байтаар тодорхойлдог (нэг нь улаан, ногоон, цэнхэр суваг тус бүр). Тиймээс, 8 LED -ийн төлөв байдлыг хадгалахын тулд бид тус бүрдээ 3 байтын 8 бүтэцтэй массивыг хэрэгжүүлэх шаардлагатай бөгөөд энэ массивын эхэнд заагч нь өөр нэг байт шаардагдана. Тиймээс 64 байтын 25 нь гарч байна. Бид RAM -ийн 39% -ийг дөнгөж ашигласан боловч хараахан эхлээгүй байна. Үүнээс гадна солонгын долоон үндсэн өнгийг хадгалахын тулд танд 7 × 3 = 21 байт хэрэгтэй тул RAM -ийн 72% нь дууссан байна. Үндсэн өнгөний хувьд би хэтрүүлсэн байна: бидэнд бүгд RAM -тэй зэрэг ажиллах шаардлагагүй бөгөөд тэд хэзээ ч өөрчлөгддөггүй тул тэдгээрийг RAM -ийн оронд флэш дээр хадгалах тогтмол массив болгон ашиглаж болно. Ямар ч байсан энэ нь ашигласан тоног төхөөрөмжийн талаар ерөнхий сэтгэгдэл төрүүлдэг.
Урьдчилан оновчлох тухай Knuth -ийн хэлсэн үгийг санаж, би юу болж байгааг харахын тулд гурван чийдэнгийн горимыг тусад нь загварчилж эхлэв. Би тэдгээрийг тус тусад нь туршиж үзсэн бөгөөд тэдгээр нь зөв ажиллаж байгаа эсэхийг шалгасан бөгөөд тус бүр нь миний микроконтроллерт тохирсон байна. Үүнийг дуусгахын тулд хэд хэдэн орой зарцуулсан бөгөөд бүх зүйл сайн болсон … би тэднийг түлхүүрийн мэдэгдэлд нэгтгэхийг оролдох хүртэл. avr-size хэрэгсэл нь 1.5 Kb хэмжээтэй текстийн хэсгийн талаар мэдээлсэн (-r тугтай хамт avr-gcc). Тэр үед миний анхны зорилго бол 2Kb флаштай ATtiny25 авах байсан бөгөөд энэ түүхийн аз жаргалтай төгсгөл байж магадгүй юм.
Гэхдээ нэлээд оновчтой болгосны дараа би тэр муу кодыг 1Кб болгон багасгаж чадна гэж бодсон юм. Гэсэн хэдий ч үүнийг хийх боломжгүй гэдгийг ойлгохын тулд дахиад нэг долоо хоног шаардагдсан бөгөөд үүнийг хийх нь дахиад нэг долоо хоног шаардагджээ. Би солонгыг таван үндсэн өнгө болгон хуваах ёстой байв (харааны хувьд мэдэгдэхүйц ялгаа байхгүй). Би тохиолдлын мэдэгдлээс ангижирч, хоёртын кодын хэмжээг багасгахын тулд if-then-if гинжийг ашигласан. Галын анимэйшн нь асар том хэмжээтэй хуурамч санамсаргүй тоо үүсгэгч хэрэгтэй тул би анхны утга бүхий LFSR -ийн хялбаршуулсан хувилбарыг хэрэгжүүлсэн. Би PRNG -ийн бүтэн мөчлөгийн үргэлжлэлийг анхаарч үздэггүй бөгөөд кодын хэмжээ ба "бодит галын хөдөлгөөнт дүрс" хоорондын тэнцвэрийг хайж байна. Би одоогоор санахгүй байгаа маш олон жижиг оновчлолыг хэрэгжүүлсэн бөгөөд галаас бусад бүх горимыг чип рүү асааж чадсан. Надад санаа алга болоход миний нийт код ойролцоогоор 1200 байт байсан.
Би завсарлага аваад AVR кодыг оновчтой болгох талаар маш их уншиж байсан. Би бүх зүйлийг орхиж, ассемблер хэл дээр дахин бичихэд ойрхон байсан боловч түүнд сүүлчийн боломжийг олгосон. Төгсгөлийн оновчлолын үеэр би солонгыг гурван үндсэн өнгөнд хувааж, бусдыг тооцоолоход хүргэж, бүх зүйлийг шалгаж AVR оновчлолын зөвлөмжийг дагаж, эцэст нь …
avrdude: бичих флаш (1004 байт):
Бичих | ###################################################### | 100% 0.90 -ээд он
Би одоогийн горимыг хадгалахын тулд бараг бүх RAM, EEPROM -ийн нэг байтыг ашигласан гэж хэлэх шаардлагагүй болно. Энэ бол хамгийн тохиромжтой, эцсийн хэрэгжилт гэж би бодохгүй байна. Энэ нь зүгээр л ажилладаг бөгөөд микроконтроллерт тохирсон байдаг. Та үүнийг илүү сайн хийж чадна гэдэгт итгэлтэй байна. Би үнэхээр байна. Эхэндээ бараг боломжгүй гэж үзсэн, боломжгүй мэт асуудлыг шийдэх хөгжилтэй байдлаа хуваалцахыг хүсч байна. "Тиймээс хакердах гэдэг нь боломжтой зүйлийн хязгаарыг судлах гэсэн үг юм." -Ричард Сталлман.
Хангамж:
1x ATtiny13 MCU (SOP-8 багц дахь MCU-ийн хувьд 0.28 доллар = 0.24 доллар, DIP8 адаптерийн хувьд 0.04 доллар)
8x WS2812 RGB LED (би самбар эсвэл LED тууз санал болгож байна) ($ 0.42)
1x TTP223 мэдрэгчтэй товчлуур ($ 0.10)
1x Micro USB -ээс DIP адаптер (0.14 доллар)
1х 10 кОм эсэргүүцэл (<$ 0.01)
1x 100nF керамик конденсатор (<$ 0.01)
1x 10-47µF электролитийн конденсатор (<0.01 $)
Нийт <$ 0.97
Алхам 1: Програм хангамжийн тохиргоо
Танд эх кодыг эмхэтгэхэд avr-gcc багаж хэрэгсэл, микроконтроллерын ROM-ийг байршуулах avrdude хэрэгсэл хэрэгтэй болно. Суулгах процесс нь маш энгийн бөгөөд энгийн боловч энэ нь таны үйлдлийн системээс хамаарна. Хэрэв та ямар нэгэн GNU/Linux ашигладаг бол таны хадгалах санд зохих багцууд байгаа байх. Энэ төслийн эх кодыг эндээс татаж авч болно.
github.com/arduinocelentano/t13_ws2812_lamp
Мөн танд light_ws2812 номын сан хэрэгтэй болно.
github.com/cpldcpu/light_ws2812
Та avr-gcc багаж хэрэгсэл, төслийн эх сурвалжтай болсны дараа терминалаа ажиллуулаад дараах кодыг бичнэ үү.
cd зам/руу/төсөл
хийх
Алхам 2: Микроконтроллерыг програмчлах
Хэрэв танд USBASP програмист байгаа бол түүнийг холболтын дагуу Attiny руу холбоно уу. Ихэвчлэн энэ нь иймэрхүү харагддаг, гэхдээ би таны жинхэнэ pinout -ийг шалгахыг зөвлөж байна!
Эсвэл та Arduino самбарыг програмист болгон ашиглаж болно. Arduino IDE -ийг нээгээд "Файл → Жишээ" цэснээс Arduino ISP -ийн жишээг олоорой. Ноорог байршуулсны дараа таны Arduino самбар програмистын үүрэг гүйцэтгэдэг. Ноорог код дээрх сэтгэгдлүүд нь хасах тухай ойлголт өгөх болно.
Одоо гүй
флаш хийх
MCU -г асаах ба
гал хамгаалагч хийх
гал хамгаалагчийн битүүдийг тохируулах.
Зөвлөмж болгож буй:
$ 100 -аас доош үнэтэй 100 долларын супер тод гар чийдэн: 5 алхам
$ 10 -аас доош үнэтэй 100 долларын супер тод гар чийдэн! Энэхүү зааварчилгааны урам зоригийг түүний тактикийн гар чийдэнгийн зааварчилгаа dchall8 -д оруулсан гэж би шууд хэлье. Бага оврын гар чийдэнг тоног төхөөрөмж багатай, бага хугацаа зарцуулдаг хялбар арга байх ёстой гэж би бодсон. Би п
Видео хуралд зориулсан 10 долларын үнэтэй MetaPrax баримт бичгийн камерын тохиргоо: 5 алхам
Видео хуралд зориулсан 10 долларын үнэтэй MetaPrax баримт бичгийн камерын тохиргоо: 20200803 онд хэвлэгдсэн Жон Э.Нэлсон [email protected] Онлайн уулзалтанд ашиглах баримт бичгийн камерууд нь онлайн худалдаа эрхлэгчдээс 60-150 долларын үнэтэй байдаг. Гэнэтийн COVID-19-тэй холбоотойгоор биечлэн сурч байгаа хүнээс дадлагажигчаар дамжуулан алсын зайн сургалтад шилжсэнээр
14 долларын үнэтэй супер тод лего гэрэл
14 долларын үнэтэй хэт тод Лего-гэрэл: Radio Shack-ийн ширээний чийдэн: Муурныхаа тусламжтайгаар 14 долларын үнэтэй ширээг Radio Shack-аас олон зориулалттай хүчирхэг Lego гэрэл болгон хувиргаарай. Нэмж дурдахад та үүнийг AC эсвэл USB -ээр тэжээж болно. Би үүнийг санамсаргүй байдлаар олж мэдээд Lego загварт гэрэлтүүлэг нэмэх эд анги худалдаж авч байсан
Ухаалаг гар утасны вэб интерфэйстэй 5 долларын үнэтэй ухаалаг чийдэн: 4 алхам
Ухаалаг гар утасны вэб интерфэйстэй 5 долларын үнэтэй ухаалаг чийдэн: Сайн байна уу! Намайг Рафаэл гэдэг. Энэ бол миний анхны зааварчилгаа юм! Энэхүү дэнлүүг бүтээх миний гол зорилго бол хөдөлгөөний бэрхшээлтэй хүмүүсийн амьдралд туслах явдал юм. Хэзээ нэгэн цагт бидэнд хананы унтраалга эсвэл хүрэхэд хэцүү залгуур байхгүй, харин ухаалаг гар утсаа удирдах боломжтой болно
Видео болон гэрэл зургийн зориулалттай 2 долларын үнэтэй LED камерын гэрэл: 11 алхам
Видео болон гэрэл зургийн зориулалттай 2 долларын үнэтэй LED камерын гэрэл: ШИНЭЧЛЭХ: Би 180 люмен бүхий шинэ, сайжруулсан хувилбартай.Дижитал камер зохистой видео авснаас хойш би DV видео камераа үүрэхээ больж, цэгээ ашиглан дижитал камерыг хэдэн минут зарцуулдаг. MOV эсвэл MPG видео бичлэгийг эндээс үзнэ үү