Mundarija:

Ish vaqti: 5 qadam (rasmlar bilan)
Ish vaqti: 5 qadam (rasmlar bilan)

Video: Ish vaqti: 5 qadam (rasmlar bilan)

Video: Ish vaqti: 5 qadam (rasmlar bilan)
Video: Nilufar Hamidova || Nilufar Xamidova || Nilufar Hamidova rasmlari 2024, Iyul
Anonim
Image
Image
Qismlarni yig'ish va yog'ochdan ishlov berish
Qismlarni yig'ish va yog'ochdan ishlov berish

Men tez -tez o'zim nima qilmoqchi ekanligimni bilmaydigan narsalarni sotib olaman. Ushbu loyiha 12x WS2812b LEDlari yoqilgan halqani sotib olish natijasidir. Menda bu borada rejalar yo'q edi, lekin u Internetda juda zo'r ko'rinardi, shuning uchun men uni aravamga tiqib qo'ydim, u kelganida bir muddat o'ynadim va keyin hammasini unutdim.

Birozdan keyin men soat yasash haqida o'yladim va u hech narsa qilmay o'tirganini esladim. Men daqiqalarni to'ldirish uchun 60 LEDli ikkinchi halqani sotib olish haqida o'yladim, lekin keyin biz qanday qilib vaqtga qaraymiz va uni 5 daqiqagacha aylantiramiz deb o'ylay boshladim.

Bu bilan men o'zimning 12 LED halqam bilan ish soatini yasadim. U bir vaqtning o'zida 1 LEDni ko'rsatadi, bu soatni ko'rsatadi (Moviy LED) va keyin daqiqalarni (Qizil LED) pastga aylantiradi.

1 -qadam: ehtiyot qismlarni yig'ish va yog'ochdan ishlov berish

Qismlarni yig'ish va yog'ochdan ishlov berish
Qismlarni yig'ish va yog'ochdan ishlov berish
Qismlarni yig'ish va yog'ochdan ishlov berish
Qismlarni yig'ish va yog'ochdan ishlov berish
Ehtiyot qismlarni yig'ish va yog'ochdan ishlov berish
Ehtiyot qismlarni yig'ish va yog'ochdan ishlov berish

Men bir kuni ishga kelib, taglik topganimdan juda omadli edim. Bu pallet menga yopishib qoldi, chunki u sizning standartingizga o'xshamadi. Bu toza, issiqlik bilan ishlangan va eng g'ayrioddiy qattiq eman edi.

Ushbu loyiha palletning bir qismidan qilingan. (Men uyga olib ketishdan oldin xo'jayindan so'radim)

Shuningdek ishlatiladi:

  • 12 pikselli ws2812b LED halqali
  • Haqiqiy vaqt soati (RTC) moduli (I2C bilan DS3231 ishlataman)
  • Arduino Nano v3.0 mos keladi
  • Akril varaq (5 mm)
  • Rangli sim

Asboblar

  • Quvvat matkapi
  • Router
  • Yog'ochdan yasalgan tekis sozlanishi
  • Quvvat zımpara
  • Qo'l arra
  • Lehimlash temir
  • Issiq yopishtiruvchi qurol
  • Qum qog'oz
  • Daniya yog'i

Zımpara

Men yog'och zımpara yordamida yog'och blokni tekis va tekis qilib, hamma tomonlari toza va tekis bo'lguncha tozalashni boshladim. Men o'tmishdagi ba'zi tarixlarni ko'rishni xohlaganim uchun, ba'zi kamchiliklarni ko'rinadigan qilib qo'ydim, lekin u to'g'ri yoki to'rtburchaklar emas.

Teshiklarni belgilash va kesish

Zımpara qilgandan so'ng, men soatning yuzini xohlagan tomonni tanladim va markazni har bir burchakdan chiziqlar bilan belgilab qo'ydim. Men sozlanadigan yog'ochni halqadan bir oz kattaroq qilib qo'ydim, shuning uchun akril uchun 5 mm chuqurlikda o'tiradigan va kesadigan tokchasi bor edi, keyin kesgichni LED halqasining kattaligidan kattaroq qilib sozlab, yana 5 mm yoki undan ko'pini kesib tashladim..

Yo'nalish va kabel teshiklari

Ruterimni 12 mm bit bilan ishlatib, RTC va Arduino -ni yashirish uchun blokning pastki qismidagi chuqurchaga chiqdim. Uning chuqurligi taxminan 15 mm va har qanday chetidan kamida 5 mm. Men markazni (ishni) pastdan belgilab qo'ydim va LED simlariga ruxsat berish uchun 10 millimetrli burg'ulashni yarmigacha o'tkazdim. Keyin 5 mm diametrli diodli chuqurchaning markazidan 10 mm teshikni pastdan teshib o'tdim.

Quvvat kirishi uchun orqa tomondan yana 4 mm teshik va kichikroq yo'riqnoma yordamida LED halqasining orqa qismidagi simlar uchun kanal yasash va yog'och ishi bajariladi.

2 -qadam: Akril doiralar

Akril doiralar
Akril doiralar
Akril doiralar
Akril doiralar
Akril doiralar
Akril doiralar

Soat oldida akril yasash uchun men teshikdan kattaroq kvadrat bo'lakni kesib tashlashni aytdim. Keyin ishga tushirish uchun zımpara yordamida burchaklarni to'g'ri shakli va o'lchamiga qadar olib tashlashni boshladim. Keyin qo'lda silliqlashga o'tdim, shuning uchun men otishni to'xtatmadim va qaytadan boshlashim kerak edi.

Bu asta -sekin va zerikarli sinov va xato jarayoni edi, u to'g'ri o'rnatilgunga qadar, lekin menimcha, yakuniy natija bunga loyiq edi. Men akrilning old qismiga muzli ko'rinish berish uchun juda nozik qog'oz ishlatib tugatdim.

3 -qadam: Lehimlash

Lehimlash
Lehimlash
Lehimlash
Lehimlash
Lehimlash
Lehimlash
Lehimlash
Lehimlash

Shu munosabat bilan men simlarim uchun rang tizimidan foydalanishni yaxshi ko'raman:

  • Quvvat uchun qizil (5v)
  • Er uchun oq
  • Ma'lumot uchun sariq
  • Soat uchun yashil rang

Men yuqoridagi tizim yordamida LED halqasiga 3 ta kerakli simni lehimlashdan va simlarni teshikdan pastga surishdan boshladim. Haqiqiy majburlashga duch kelmaslik kerak, men halqani joyida ushlab turish uchun ozgina issiq elim ishlatardim. (Men uni biroz o'zgartirishim mumkin) va akrilni chetiga ozgina issiq elim bilan o'rnating.

Keyin yuqoridagi tizim yordamida 4 ta simni RTCga lehimladim. Ishlarni biroz toza saqlash uchun men Arduino -dan RTC quvvatini olishga qaror qildim. Keyin hamma narsani Arduino -ga ulab, Arduino -ga 1 simni, ikkinchisini esa topraklash uchun lehimladi.

RTC

  • Analog pin 5 ga SCL (soat)
  • Analog pin 4 ga SDA (ma'lumotlar)
  • VCC dan 5V gacha
  • Arduino -dagi har qanday GND -ga GND

LED halqa

Din raqamli pin 6

Menda eski USB kabeli bor edi, shuning uchun uni soatni quvvatlantirish uchun ishlatishga qaror qildim. Men odatda biror narsaga ulanadigan uchini kesib tashladim va uni orqadagi teshikdan itirdim. Keyin VCC -ni Arduino -ga lehimlashdan oldin, LED halqasini musbat tomonga va Arduino -dan LED -ni erga lehimlashdan oldin, uchlarini echib oling. Men birozdan keyin issiqlikni pasaytirdim va u yaxshi ko'rinardi, Issiq yopishtiruvchi qurol hamma narsani ushlab turish uchun qaytib keldi. Men Arduinodan etarlicha o'ynab ketishga qaror qildim, shuning uchun kelajakda USB portiga kira olaman, lekin men unchalik tushib keta olmayman.

4 -qadam: Kod

Endi siz ushbu kodni Arduino -ga yuklashingiz kerak.

Agar RTC ishlamayotgan bo'lsa, bu vaqt kod tuzilgan vaqtga qarab belgilanadi, shuning uchun yuklash tugmachasini bosing va tasdiqlamang.

bu vaqtni belgilash uchun juda yaxshi ishlaydi.

www.instructables.com/id/Setting-the-DS130…

Bu kodning katta qismini men Adafruit NeoPixel kutubxonasidan, ba'zilarini RTC kutubxonasidan, ba'zilarini esa o'zim tuzganman.

// kutubxona kodini o'z ichiga oladi: #include

#qo'shing

#qo'shing

// pinlarni belgilang

#PIN kodni belgilang 6

#devetine BRIGHTNESS 20 // maksimal yorqinlikni o'rnating

#aniqlang r 5

#aniqlang g 5

#ta'rif b 5

RTC_DS3231 rtc; // Soat ob'ektini o'rnating

Adafruit_NeoPixel tasmasi = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800); // chiziqli ob'ekt

bo'sh o'rnatish () {

Wire.begin (); // I2C ni boshlang

rtc.begin (); // soat boshlanishi

Serial.begin (9600);

// pinmodlarni o'rnating

pin rejimi (PIN, OUTPUT);

agar (rtc.lostPower ()) {

Serial.println ("RTC kuchini yo'qotdi, vaqtni belgilashga ruxsat bering!");

// keyingi satrda RTC bu eskiz tuzilgan sana va vaqtga o'rnatiladi

rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))));

// Bu satr RTCni aniq sana va vaqt bilan belgilaydi, masalan o'rnatish uchun

// 2014 yil 21 -yanvar, soat 03:00 da siz qo'ng'iroq qilardingiz:

// rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0));

}

strip.begin ();

strip.show (); // Barcha piksellarni o'chirib qo'ying

DateTime theTime = rtc.now (); // DSTni hisobga oladi

bayt soniyali = theTime.second (); // soniya oling

bayt minuteval = theTime.minute (); // daqiqa oling

int hourval = theTime.hour ();

nuqta (chiziqli Rang (0, g, 0), 50);

}

void loop () {

// vaqt toping

DateTime theTime = rtc.now (); // DSTni hisobga oladi

int minuteval = theTime.minute (); // daqiqa oling

int hourval = theTime.hour (); // soatni oling

int secondval = theTime.second ();

agar (minuteval 0) {

strip.setPixelColor (0, r, 0, 0);

strip.show ();}

aks holda (minuteval <= 9) {

strip.setPixelColor (1, r, 0, 0);

strip.show ();}

aks holda (minuteval <= 14) {

strip.setPixelColor (2, r, 0, 0);

strip.show ();}

aks holda (minuteval <= 19) {

strip.setPixelColor (3, r, 0, 0);

strip.show ();}

aks holda (minuteval <= 24) {

strip.setPixelColor (4, r, 0, 0);

strip.show ();}

aks holda (minuteval <= 29) {

strip.setPixelColor (5, r, 0, 0);

strip.show ();}

aks holda (minuteval <= 34) {

strip.setPixelColor (6, r, 0, 0);

strip.show ();}

aks holda (minuteval <= 39) {

strip.setPixelColor (7, r, 0, 0);

strip.show ();}

aks holda (minuteval <= 44) {

strip.setPixelColor (8, r, 0, 0);

strip.show ();}

aks holda (minuteval <= 49) {

strip.setPixelColor (9, r, 0, 0);

strip.show ();}

aks holda (minuteval <= 54) {

strip.setPixelColor (10, r, 0, 0);

strip.show ();}

aks holda (minuteval <= 59) {

strip.setPixelColor (11, r, 0, 0);

strip.show ();}

kechikish (1000);

uchun (int i = 0; i <12; i ++) {

strip.setPixelColor (i, 0, 0, 0);

strip.show ();

}

agar (soat vaqti == 0) {

strip.setPixelColor (0, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 1) {

strip.setPixelColor (1, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 2) {

strip.setPixelColor (2, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 3) {

strip.setPixelColor (3, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 4) {

strip.setPixelColor (4, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 5) {

strip.setPixelColor (5, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 6) {

strip.setPixelColor (6, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 7) {

strip.setPixelColor (7, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 8) {

strip.setPixelColor (8, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 9) {

strip.setPixelColor (9, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 10) {

strip.setPixelColor (10, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 11) {

strip.setPixelColor (11, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 12) {

strip.setPixelColor (0, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 13) {

strip.setPixelColor (1, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 14) {

strip.setPixelColor (2, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 15) {

strip.setPixelColor (3, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 16) {

strip.setPixelColor (4, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 17) {

strip.setPixelColor (5, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 18) {

strip.setPixelColor (6, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 19) {

strip.setPixelColor (7, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 20) {

strip.setPixelColor (8, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 21) {

strip.setPixelColor (9, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 22) {

strip.setPixelColor (10, 0, 0, b);

strip.show ();}

aks holda (soat vaqti == 23) {

strip.setPixelColor (11, 0, 0, b);

strip.show ();}

kechikish (1000);

uchun (int i = 0; i <12; i ++) {

strip.setPixelColor (i, 0, 0, 0);

strip.show ();

}

// ketma -ket disk raskadrovka uchun

Serial.print (soat soatlari, DEC);

Serial.print (':');

Ketma -ket chop etish (minuteval, DEC);

Serial.print (':');

Serial.println (ikkinchi darajali, DEC);

}

bo'sh nuqta (uint32_t c, uint8_t kuting) {

uchun (int j = 0; j <3; j ++) {

uchun (int i = 0; i <12; i ++) {

strip.setPixelColor (i, c);

strip.show ();

kechiktirish (kutish);

uchun (int i = 0; i <12; i ++) {

strip.setPixelColor (i, 0, 0, 0);

strip.show ();}

}

}

}

5 -qadam: Daniya yog'i

Daniya yog'i
Daniya yog'i
Daniya yog'i
Daniya yog'i
Daniya yog'i
Daniya yog'i
Daniya yog'i
Daniya yog'i

Oxirgi va ixtiyoriy qadam - yog'ochga Daniya yog'ini surtish. Menga bu donni qanday chiqarishi juda yoqadi va u dog 'va namlikdan himoya qiladi. Shuning uchun men buni juda tavsiya qilaman.

Siz uni tarashingiz mumkin, yoki men uni artish uchun faqat eski matodan foydalanaman.

Qolgan narsa - uni rozetkaga ulash va zavqlanish.

Tavsiya: