Mundarija:

42 RGB LED pikselli badiiy rasm: 5 qadam
42 RGB LED pikselli badiiy rasm: 5 qadam

Video: 42 RGB LED pikselli badiiy rasm: 5 qadam

Video: 42 RGB LED pikselli badiiy rasm: 5 qadam
Video: Светодиодные пиксели - что это и где купить? 2024, Noyabr
Anonim
42 RGB LED pikselli badiiy rasm
42 RGB LED pikselli badiiy rasm

Hey, Shunday qilib, "Agar shunday bo'lsa" deb nomlangan maktab topshirig'ida men Arduino Uno boshlang'ich to'plami yordamida interaktiv // nimadir // qilishim kerak edi (va kim o'zlarini sotib olmoqchi bo'lsa ham). Men San'at/Texnologiyani o'rganayotganimni ko'rib, ikkalasini (san'at va texnika) birlashtirishni xohlardim. Men Arduino -ga mos keladigan RGB LED -laridan iborat rasm chizaman deb o'ylardim va o'yinchi/rassomga RGB LED -lari orqali qo'lda aylanishiga va rang tanlashiga ruxsat beraman. Shunday qilib, ular o'zlarining "pikselli san'ati" ni yaratishi mumkin!

1 -qadam: Ba'zi ma'lumot va nazariyalar

Xo'sh, keling, butani urmaylik. Agar siz ushbu loyihani hayotga tatbiq etmoqchi bo'lsangiz: qiyin. Menga nima qilish kerakligini aniqlash/o'rganish va undan ham ko'proq narsani bajarish uchun ko'p soat kerak bo'ldi, lekin agar siz haqiqatan ham juda kichik "rasmlar" yarata oladigan sim bilan to'ldirilgan qutini xohlasangiz, men sizga buni o'rgataman.

Shunday qilib, birinchi navbatda birinchi narsa. Biz Arduino -da iloji boricha ko'proq LED/RGB LEDni xohlaymiz. Qancha ko'p (RGB) LED ulansangiz, siz "rasm" chizishingiz mumkin (10x10 piksel o'ng tomonda 2x2 ga qaraganda ko'proq harakatlanish xonasini beradi). O'ylaymanki, sizning 13 ta raqamli pinlaringizda (RGB registrlari) ko'p sonli (RGB) LEDlarni olishning boshqa usullari bor, lekin men "Charlieplexing" usulini qo'lladim. Men bu kontseptsiyani tushunishga yordam beradigan ko'rsatma bilan bog'lanaman (ular buni juda yaxshi tushuntirishadi), lekin men ham sizga bu erda tezkor versiyasini beraman. Charlieplexing quyidagicha:

Siz 1 -pin va 2 -pin o'rtasida LEDni qo'yasiz, agar siz 1 -pinni YUQORI va 2 -ni LOW -ga qo'ygan bo'lsangiz, aylana muammosiz ishlaydi va LED yonadi. Asosiysi. Xo'sh, endi siz boshqa LEDni ulaysiz, lekin aylanib o'ting. Uzun uchi 2da, qisqa uchi pin1da. Agar siz 2 -pinni YUQORI va 1 -POMni LOW -ga aylantirsangiz, 2 -chi LED yonadi va sizning birinchi o'chadi, chunki oqim noto'g'ri bo'ladi. Endi siz 2 pinli ikkita LEDni ulashingiz mumkin. Agar biz aralashmaning 3 -chi pinini olsak, siz bu hiylani 1 va 2, 1 va 3 va 2 va 3 oralig'ida qilishingiz mumkin. Bu 6 LED. Bu davom etadi, 5 ta pin bizga (2 + 4 + 6 + 8) 20 ta LED beradi. Hamma 13 raqamli pimdan foydalanish bizga 156 variantni beradi. Bu 156 LEDni alohida -alohida yoqish va o'chirish.

(ha, siz hayron bo'lganlar uchun. Ha, agar sizda ko'p narsalarni bir vaqtning o'zida yoqish imkonsiz bo'lsa -da, lekin tashvishlanmang, arduino svetodiodlar orasidagi almashishni shunchalik tez amalga oshiradiki, inson ko'zlari miltillashni ko'ra olmaydi)

(Yaxshi va batafsil tushuntirish, rasmlar bilan)

To'g'ri, biz simlarni ulashda ko'p kuch sarflaymiz (bu haqda keyinroq to'xtalib o'taman), biz juda ko'p LEDlar panjarasini yasashimiz mumkin, lekin bunga yo'l qo'ymaylik. LEDlar juda zerikarli. Qanday qilib faqat 2 ta rang bilan rasm yasash mumkin? O'ylaymanki, siz qila olasiz, lekin o'ngdan tanlash uchun ko'proq ranglar bo'lsa, salqinroqmi? to'g'ri Shunday qilib, biz RGB LEDlariga murojaat qilamiz!

RGB LED'lari asosan 3 ta LEDni o'z ichiga oladi. Ular umumiy katod yoki anodga ega (bu erda quvvat kirsa yoki o'chadi), qolgan 3 "oyoq" esa sizning qizil yashil va ko'k LEDingizdir. Shuni yodda tutgan holda, biz ham ularni charlieplex qila olamiz! Har bir RGB LED 3 ta oddiy LEDni hisobga oladi. Shunday qilib, siz ularni birma -bir yoqishingiz va o'chirishingiz va sovuq ranglar tanlashingiz mumkin! Yagona kamchilik shundaki, bu ishni ancha qiyinlashtiradi, chunki siz xaritani rejalashtirishingiz va svetodiodli LEDlarni 3 barobar ko'p ulashingiz kerak.

Men 13 ta pinli 42 ta RGB LEDni oldim. Bu 126 ta oddiy LED … juda ko'p son. Sizga buni qanday qilganimni aytib beray.

2 -qadam: Rejalashtirish

Rejalashtirish
Rejalashtirish

Ha, nima qilayotganingizning nazariyasini tushunganingizda, bu qadam juda oson. Siz asosan barcha LED -laringizni yozasiz va qaysi pinni qaysi RGB LED "oyog'iga" o'tkazish kerakligini rejalashtirasiz, shunda siz barcha variantlaringizni qamrab olasiz. Men o'z rejamning rasmini ilova qildim, bundan ham bemalol foydalaning (men mavjud bo'lgan barcha variantlarni ishlatmadim, chunki men "faqat" 156 dan 126 ta ulanishga muhtoj edim. Men buni shunday tuzganman, chunki u qurilishni biroz yengilroq qiladi.).

Buni qog'ozga olish juda muhim, keyinroq kodlash kerak bo'ladi. Agar siz buni yozmasangiz va 1 ulanishni buzsangiz, bu LED uchun kod ishlamaydi.

3 -qadam: Kod

Xo'sh, agar sizda 2 ta RGB LED -ni 2 ta pin bilan qanday ulash haqida fikringiz bo'lsa: Davom eting! Kodni tekshirish juda yaxshi, lekin ishontirib aytamanki, u ishlaydi! Iloji boricha iloji boricha "toza" kodlashni qilishga harakat qildim (Siz buni kalitlarning kalitlari bilan ham boshqarishingiz mumkin edi, lekin bu sizning x42 kodingizni yozishga majbur qilgan dahshatli muammo, bu menga yaxshiroq bo'lishi mumkinligini anglab etdi. yo'l).

Kodning maqsadi quyidagicha. Siz LED1dan boshlaysiz. 1 -tugma keyingi LEDga o'tishga imkon beradi, lekin oldingi LED yonadi. Button2 oldingi LED -ga qaytishga imkon beradi, 3 -tugma rangni o'zgartirishga imkon beradi. Hozirgi tanlangan LED yonib -o'chib turadi, shuning uchun qaysi LED "tanlanganini" ko'rishingiz mumkin.

Buni amalga oshirish uchun men massivlar bilan ishladim. Men LED sinfini yaratdim, u rejalashtirish bosqichida siz yozgan ma'lumotni ishlatib, qaysi rangni yaratish kerakligini aniqladi. Men ularning barchasini bir qatorga qo'ydim va men arduino -ni LEDarray orqali o'tkazishga ruxsat berdim, qaysi biri yoqilganligini aniqlash uchun va rang qatori orqali qaysi rang tanlanganligini aniqlash uchun (rang 7 ta rangni tanlash imkonini beruvchi kalit bilan belgilanadi). Miltillovchi if-ifodasi bilan tartibga solinadi.

Kod biriktirilgan, uni yuklab oling va ishlating. Agar tushunmagan narsangiz bo'lsa, sharhlar bo'limi savollar uchun ochiq, lekin siz asosan yopishtirib nusxa ko'chirishingiz mumkin!

4 -qadam: eng qiyin qism

Eng qiyin qism
Eng qiyin qism
Eng qiyin qism
Eng qiyin qism

Shunday qilib, endi sizda fikr, ish kodi bor …. faqat mahsulot emas. Bu loyihaning eng dahshatli qismi, shuning uchun men buni engil qabul qilmaslikni maslahat beraman. Hamma bir xil pin bilan tugaydigan har xil oyoqlarni eslaysizmi? Ha, siz LEDlar tarmog'ini yasashingiz kerak, so'ngra har bir oyog'ingizni bir xil pinga o'tishi kerak bo'lgan boshqa oyog'iga ulang va keyin ularni shu pinga ulang. Bu eng qiyin qism va men ham 100% mukammal chiqmadim, agar siz lehimlashni yaxshi bilsangiz, ehtimol sizda imkoniyat bor.

Men bir vaqtning o'zida bir qator RGB LEDlarini qo'ydim va har bir oyog'iga mis simni uladim (men korpusli/o'ralgan mis simni tavsiya qilaman. Meniki juda qalin edi va bu menga juda ko'p qayg'u keltirdi). Ikkala oyoq yoki sim bir -biriga tegmasligiga ehtiyot bo'ling! keyin "oddiygina" bir xil pinga o'tishi kerak bo'lgan barcha simlarni ulang, so'ng ularni rezistorga ulang va uni shu pinga ulang. Ishonchim komilki, buni amalga oshirishning "xavfsizroq" usuli bor, lekin ishonchim komilki, kimdir harakat qilayotganda simga cho'kib ketadi … va sizning taxtangiz juda katta!

(men bu qadamni soddalashtiradigan rasm qo'shdim. Bu sizga qaysi oyog'ingizga qaysi pinni tutish kerakligini, mening kodimga to'liq amal qilishini aytadi.)

Menga 4 kunlik ish kerak bo'ldi, lekin endi har bir LEDni (minus 3-4) o'z-o'zidan yoqilishi mumkin!

keyin siz faqat ba'zi tugmachalarni va prestoni ulashingiz kerak! Sizning shaxsiy pikselli rasmingiz!

Bu odam, shuningdek, sim o'tkazishga misol keltirdi, bu juda foydali

5 -qadam: Gloat. Mutlaqo Gloat

Agar siz boshlang'ich bo'lsangiz (men kabi) va siz bu kalamush simlariga o'xshash narsalarni yasashga muvaffaq bo'lsangiz va u yoqilsa; g'amgin Siz haqiqatan ham yaxshilik qildingiz!

Agar sizda biron bir savol/sharh bo'lsa, ularni quyida qoldiring, agar iloji bo'lsa, yordam berishga harakat qilaman!

Tavsiya: