Mundarija:

Neopixel yordamida LED soat: 4 qadam (rasmlar bilan)
Neopixel yordamida LED soat: 4 qadam (rasmlar bilan)

Video: Neopixel yordamida LED soat: 4 qadam (rasmlar bilan)

Video: Neopixel yordamida LED soat: 4 qadam (rasmlar bilan)
Video: MKS Gen L - Marlin 1 1 9 (configuration.h) 2024, Iyul
Anonim
Neopixel yordamida LED soat
Neopixel yordamida LED soat
Neopixel yordamida LED soat
Neopixel yordamida LED soat
Neopixel yordamida LED soat
Neopixel yordamida LED soat
Neopixel yordamida LED soat
Neopixel yordamida LED soat

60 neopikselli LED soatni qanday yasash bo'yicha ko'rsatmaga xush kelibsiz.

Siz PDF -ning 3 ta biriktirilgan qismi soat segmentlari uchun, ikkinchisi tayanch uchun va oxirgi qismi bo'limlarni bir -biriga yopishtirishda yordam beradigan shablonni topasiz.

Shunday qilib, buni bajarish uchun sizga quyidagilar kerak bo'ladi

  • 60 neopikselli halqa 4 chorakda keladi. "ws2812 ring 60" ni qidiring (£ 12.00)
  • "DS3231 moduli" uchun RTC qidiruvi (£ 2.50)
  • Arduino Nano (4 funt)
  • 3 mm/1/8 dyuymli kontrplak.
  • sim bo'laklari. Umid qilamanki, sizda atrofdagilar bormi?
  • 5V USB quvvat manbai. Farzandlaringiz ulagichni yo'q qilgan turi.

Quyida Lipo batareyasi bilan ishlaydigan narsalar bor, lekin sinovdan so'ng, soat juda ko'p quvvat sarflagan, shuning uchun batareya USB -quvvat manbaiga ulangan.

  • shahar-shahar konvertorini qidirish "konvertorni kuchaytirish" (3 funt)
  • TP4056 zaryadlovchi davri "tp4056" qidiruvi (2 funt)
  • LiPo 1000Mah bitta hujayrali. "1000mah lipo 3.7" yoki "503450 lipo" (8.00 funt) ni qidiring

LiPo raqami - 503450, shuning uchun uning uzunligi 50 mm, kengligi 34 mm va chuqurligi 5,0 degan ma'noni anglatishini bilish yaxshi bo'lardi.

1 -qadam: Yog'och qismlari

Yog'och bitlari
Yog'och bitlari
Yog'och qismlari
Yog'och qismlari
Yog'och bitlari
Yog'och bitlari

Siz rasmlarda men dizaynni bosib chiqarganimni va uni kontrplakga yopishtirib qo'yganimni ko'rishingiz kerak. Aniq bo'lmasligi mumkinki, men bir vaqtning o'zida 3 qismni kesib tashladim va pastki qismi birinchi navbatda perimetr bo'ylab kesiladi, so'ngra bir qismi (orqa tomondan) chiqariladi, keyin qolgan ikkita bo'lakda, keyin boshqa qismda teshik kesiladi. old qismini qoldirib, simlar uchun uyasi kesilgan.

Hamma bitlar kesib bo'lgach, avval ularning bir -biriga qanday mos kelishini tekshirib, keyin hammasini yopishtirishingiz kerak. Men hamma narsani to'g'ri dumaloq ekanligiga ishonch hosil qilish uchun soat rejasi ustiga 3 ta qatlamni qurdim. Pastki qismlarni to'g'ri yo'nalishda olishingizga ishonch hosil qiling va to'liq o'rta bo'lak teskari tomonga o'rnatiladi, shunda siz bo'g'inlar ustida o'tirasiz.

Old qismdagi teshiklar chorakdagi lehimli bo'g'inlarni o'tirishga imkon beradi, pastki qismi esa simlar orqali o'tadi.

Rasmlar turkumi, shuningdek, bazaning qanday birlashtirilganligini ko'rsatadi.

2 -qadam: LED halqasini ulash

LED halqasini ulash
LED halqasini ulash
LED halqasini ulash
LED halqasini ulash
LED halqasini ulash
LED halqasini ulash
LED halqasini ulash
LED halqasini ulash

Bu qadam haqida ko'p gapirish mumkin emas, lekin agar siz WS2812LED tasmasini ishlatmagan bo'lsangiz, ular aqlli, shuning uchun har birining kirish va chiqish ma'lumotlari bor. 15 ta LEDli kamonlarda PCB barcha ulanishlarni boshqaradi, lekin siz bo'limlarga kirganingizda siz quvvat ulanishlari va ma'lumotlarni ulashingiz kerak. Siz ulanishlarni noto'g'ri qabul qila olmaysiz, chunki ular doira ichida, lekin siz aylanani tugatganingizda simlarni IN ma'lumotlariga ulashga ruxsat berish uchun IN/OUT ma'lumotlarida bitta havola etishmasligi kerak. Qachon simlar ma'lumotga ulansa IN birinchi LED bo'ladi yoki u noldan to'g'ri raqamlanadi.

O'ylaymanki, LED halqasini yog'och halqaga mahkamlashning eng yaxshi usuli qanday? lekin oxir -oqibat men har safar LEDni o'tkazib yubormaydigan sim va dastgohni ishlatishga qaror qildim.

3 -qadam: Arduino Nano va quvvatni ulash

Arduino Nano va Power simlarini ulash
Arduino Nano va Power simlarini ulash
Arduino Nano va Power simlarini ulash
Arduino Nano va Power simlarini ulash
Arduino Nano va Power simlarini ulash
Arduino Nano va Power simlarini ulash

Men dastlab LiPo -ni ushbu loyihada ishlatishga qaror qildim, lekin sinab ko'rganimda batareya bir kechada zaryadsizlandi. Avvaliga men akkumulyator zaryadsizlangan bo'lishi mumkin deb o'yladim, shuning uchun men oqimni o'lchadim va zanjir 73mA chizilganligini aniqladim, demak u batareyada ko'proq bo'ladi. Aslida men batareyadagi oqimni o'lchadim (kuchaytirgichdan oldin) va uning 110mA dan yuqori ekanligini aniqladim. Ma'lum bo'lishicha, bu soat batareyada ishlamaydi.

Buning o'rniga men 5V USB zaryadlovchidan foydalanishni tanladim. Menda ulagichlar ikkita kichik boladan suiiste'mol qilinganligi sababli, menda o'lik USB zaryadlovchilar ko'p.

Shunday qilib, biz WS2812 LED -laridan foydalanayotganimiz uchun Arduino Nano -ga faqat 3 ta ulanish mavjud.

  • Quvvat
  • Zamin
  • Ma'lumotlar IN. Nano -dagi to'q sariq rang

Keyin bizda RTC bor, u faqat 4 ta simga ega.

  • Quvvat 5 volt
  • Zamin
  • SCL (I2C Clock) Nano -da A5 -dan ko'k ranggacha
  • SDA (I2C ma'lumotlari) Nanoda A4 dan sariq ranggacha

Nihoyat, biz kuchga muhtojmiz va bu Nano-dagi 5 V kuchlanishli terminalga to'g'ri keladi. Vin 5 voltdan (ya'ni 7-12 voltsdan) katta kuchlanishga va erga mo'ljallangan.

4 -qadam: Dastur

Men dasturlashni juda yaxshi ko'raman, men unchalik yaxshi emasman.

Muammo 1

Soniya va daqiqalar 0-59 gacha bo'lgan raqam sifatida to'g'ri ko'rsatilgan. Biroq, birinchi LED va shuning uchun nol pastda. Shuning uchun buni tuzatish kerak edi.

void correctPos (int A)

{agar (A 30) {A = A - 31; }} temp = A; }

Muammo 2

Men yangi pozitsiyani ko'rsatishdan oldin barcha LEDlarni tozalashga harakat qildim, lekin bu LEDlarning yonib -o'chishiga olib keldi. Shunday qilib, men keyingi LEDni yoqishga qaror qildim, keyin oldingi chiroqni o'chirib qo'ydim. Bu juda yaxshi ishladi ??? YO'Q, chunki agar yangi pozitsiya nol bo'lsa, u -1ni o'chirib qo'yadi. Shunday qilib, bu bir vaqtning o'zida hal qilindi.

void deletePrevious (int B)

// oldingi ledni o'chiring, agar u nol bo'lsa // 59ni o'chiring, faqat 1ni olib tashlang // o'chiring. {if (B == 0) {strip.setPixelColor (59, 0, 0, 0); // Hammasi o'chirilgan} boshqa {strip.setPixelColor (B - 1, 0, 0, 0); // hammasi o'chirilgan}}

3 -muammo

Yuqorida aytilganlarni bajarish, yangi ikkinchi pozitsiya eski daqiqalar o'rnida bo'lmaguncha, juda yaxshi ishladi. Bu shuni anglatadiki, soniyalardan keyin yangilangan daqiqa o'chirilgan! Soat/daqiqa uchun ham xuddi shunday

agar (sekund == min-1)

{strip.setPixelColor (min-1, 0, 30, 0); }

Muammo 4

Ishlar yaxshi boshlayapti, shuning uchun ular bir xil holatda tushganda ranglarni aralashtiraylikmi?

agar (daqiqa == soniya)

{strip.setPixelColor (min, 15, 13, 0); // yashil va qizil rangdan sariq ranggacha. }

Muammo 5

Ish vaqti 24 soat formatida boshlanadi. shuning uchun bu birinchi navbatda tuzatishni talab qiladi

agar (soat> 12)

{soat = soat -12; }

Muammo 6

Va shuni unutmasligimiz kerakki, kuniga 24 soat bor va menda 60 LED bor. Haqiqatan ham, uni 5 ga ko'paytiring

soat = soat * 5;

Muammo 7

Yuqorida aytilganlarni bajarib, bizda hozirda 4 LEDli soatlik sakrash bor, agar u barcha LEDlarni ishlatsa va bir soatlik kasrlarni to'g'ri ko'rsatsa, ancha yaxshi bo'larmidi? Shunga qaramay, bu oson tuzatish edi, men faqat asl daqiqalar sonini soatlarga 12 ga qo'shdim.

soat = soat + (addMin/12);

Muammo 8

Soat yoki minut pastda bo'lsa, sekundlar bir soniya oldin yo'qoladi.

soat = agar (mins == 0)

{if (secs == 59) {strip.setPixelColor (59, 0, 30, 0); // green}} if (hours == 0) {if (secs == 59) {strip.setPixelColor (59, 0), 30, 0); // yashil}}

Muammo 9

Vaqtni sozlash. Men bu tuzilishni juda sodda saqlashga qaror qildim, shuning uchun vaqtni sozlash tugmalari yo'q edi. Demak, bu soatni kompyuterga ulash va yangi vaqtni yuklash. Shunchaki quyidagi bo'limga izoh qoldiring va kerakli vaqtni belgilang, so'ng dasturni yuklang. To'g'ri chiziqni qayta sharhlang va dasturni qayta yuboring, aks holda agar siz quvvatni yo'qotib qo'ysangiz, u sozlamani qayta ishga tushiradi va eski vaqtni qayta yuklaydi.

// 2020 yil 12 aprel, soat 23:20 da siz qo'ng'iroq qilardingiz:

//rtc.adjust(DateTime(2020, 4, 12, 23, 20, 0));

Tavsiya: