Mündəricat:

İş saatı: 5 addım (şəkillərlə)
İş saatı: 5 addım (şəkillərlə)

Video: İş saatı: 5 addım (şəkillərlə)

Video: İş saatı: 5 addım (şəkillərlə)
Video: İş müsahibələrində soruşulan 5 əsas sual | Təcrübələrim 2024, Noyabr
Anonim
Image
Image
Parça və Taxta İşlərinin Toplanması
Parça və Taxta İşlərinin Toplanması

Çox vaxt özümlə nə edəcəyimi bilmədiyim şeyləri satın alıram. Bu layihə, 12x WS2812b LEDləri olan bir üzük satın alınmasının nəticəsidir. Bunun üçün heç bir planım yox idi, amma sərin bir internetə bənzəyirdi, buna görə səbətimə yapışdırdım, gəldikdə bir müddət onunla oynadım və sonra hər şeyi unutdum.

Bir müddət sonra bir saat düzəltməyi düşünürdüm və heç bir şey etməyərək oturduğunu xatırladım. Dəqiqələri tamamlamaq üçün 60 LED -lə ikinci bir üzük almağı düşünürdüm, amma sonra necə baxdığımızı və 5 dəqiqəyə qədər yuvarlaqlaşdırdığımızı düşünməyə başladım.

Mənimki ilə iş saatını düzəltmək üçün 12 LED üzüklə yola çıxdım. Saatı (Mavi LED) və sonra yuvarlaqlaşdırılan dəqiqələri (Qırmızı LED) göstərmək üçün 1 saniyədə 1 LED göstərir.

Addım 1: Parça və Taxta İşlərinin Toplanması

Parça və Taxta İşlərinin Toplanması
Parça və Taxta İşlərinin Toplanması
Parça və Taxta İşlərinin Toplanması
Parça və Taxta İşlərinin Toplanması
Parça və Taxta İşlərinin Toplanması
Parça və Taxta İşlərinin Toplanması

Bir gün işə gəlib palet gördüyüm üçün çox şanslı oldum. Bu palet standarta bənzəmədiyi üçün mənə yapışdı. Təmiz, istiliklə işlənmiş və ən qeyri -adi möhkəm palıd idi.

Bu layihə paletin bir hissəsindən hazırlanır. (Evə aparmadan əvvəl patrondan soruşdum)

Həm də istifadə olunur:

  • 12 piksellik ws2812b LED üzük
  • Real vaxt saatı (RTC) modulu (I2C ilə DS3231 istifadə edirəm)
  • Arduino Nano v3.0 uyğun gəlir
  • Akril təbəqə (5 mm)
  • Rəngli Tel

Alətlər

  • Güc Matkabı
  • Router
  • Tənzimlənən düz ağac ucu
  • Güc zımpara
  • Əl mişarı
  • Lehimleme dəmir
  • İsti yapışqan silahı
  • Qum kağızı
  • Danimarka yağı

Zımpara

Ağac blokunu bütün tərəfləri təmiz və hamar olana qədər düzəltmək və təmizləmək üçün güc zımpara ilə başladım. Tarixin bir hissəsini ağacda görmək istədiyim üçün bəzi qüsurları görünən və mükəmməl düz və ya düz olmayan bir şəkildə buraxdım.

Deliklərin işarələnməsi və kəsilməsi

Zımpara etdikdən sonra saatın üzünü istədiyim tərəfi seçdim və hər küncdən xətt çəkərək mərkəzi işarələdim. Tənzimlənən taxtanı led halqadan bir qədər böyük qoydum ki, akrilin oturub təxminən 5 mm dərinlikdə kəsə biləcəyi bir rəf olacaq, sonra kəsicini LED halqasının ölçüsündən bir qədər yuxarı tənzimləyə və başqa 5 mm və ya daha çox kəsə bilərəm..

Marşrutlaşdırma və kabel delikləri

Routerimi 12 mm bitlə istifadə edərək, RTC və Arduino -nu gizlətmək üçün blokun altındakı bir boşluq düzəltdim. Təxminən 15 mm dərinlikdə və hər hansı bir kənardan 5 mm -dən az olmamalıdır. Aşağıdan mərkəzi (iş) işarələdim və LED tellərinə icazə vermək üçün yarıdan bir az keçmiş 10 mm bit istifadə edərək qazdım. Sonra 5 mm -lik bir bit istifadə edərək, LED girintisinin mərkəzindən aşağıdan 10 mm -lik çuxuru qarşılamaq üçün qazdım.

Gücün daxil olması və daha kiçik bir router bitindən istifadə edərək LED halqasının arxasındakı tellər üçün bir kanal düzəltmək üçün 4 mm arxa daha bir çuxur və ağac işi aparılır.

Addım 2: Akrilik dairələr

Akrilik dairələr
Akrilik dairələr
Akrilik dairələr
Akrilik dairələr
Akrilik dairələr
Akrilik dairələr

Saatın ön hissəsinə akril hazırlamaq üçün doldurmalı olduğu çuxurdan daha böyük olan bir kvadrat parçanı kəsdiyimi bildirdim. Sonra işə başlamaq üçün güc zımpara istifadə edərək küncləri lazımi forma və ölçüdə olana qədər çıxarmağa başladım. Daha sonra əllə zımparalamağa keçdim, buna görə də çəkiliş etmədim və yenidən başlamalı oldum.

Düzgün uyğunlaşana qədər yavaş və yorucu bir sınaq və səhv prosesi idi, amma düşünürəm ki, son nəticə buna dəyərdi. Akrilikin ön tərəfinə buzlu bir görünüş vermək üçün çox incə bir kağız istifadə edərək bitirdim.

Addım 3: Lehimləmə

Lehimləmə
Lehimləmə
Lehimləmə
Lehimləmə
Lehimləmə
Lehimləmə
Lehimləmə
Lehimləmə

Bu münasibətlə tellərim üçün rəng sistemindən istifadə etməyi xoşlayıram:

  • Güc üçün Qırmızı (5v)
  • Torpaq üçün ağ
  • Məlumat üçün Sarı
  • Saat üçün yaşıl

Yuxarıdakı sistemi istifadə edərək 3 zəruri teli LED halqasına lehimləmək və telləri çuxurdan aşağı itələməklə başladım. Əsl məcburiyyətə məruz qalmamalı olduğu üçün üzüyü yerində saxlamaq üçün bir az isti yapışqan istifadə etdim. (Bəzən dəyişdirməyim lazım ola bilər) və akrilin kənarına bir az isti yapışqan ilə quraşdırın.

Daha sonra yuxarıdakı sistemi istifadə edərək 4 teli RTC -yə lehimlədim. İşləri bir az səliqəli saxlamaq üçün Arduinodan RTC üçün güc almağa qərar verdim. Sonra hər şeyi Arduino -ya bağladı və güc üçün 1 tel, Arduino -ya torpaq üçün başqa bir tel lehim etdi.

RTC

  • Analog Pin 5 -ə SCL (Saat)
  • Analog Pin 4 -ə SDA (Məlumat)
  • VCC -dən 5V -ə qədər
  • Arduino üzərindəki hər hansı bir GND -yə GND

LED Üzük

Din rəqəmsal pin 6

Əlimdə köhnə bir USB kabeli var idi, buna görə saatı gücləndirmək üçün istifadə etməyə qərar verdim. Normalda bir şeyə bağlanacaq ucunu kəsdim və arxadakı çuxurdan itələdim. Sonra VCC -ni Arduino -ya və LED halqasını Arduino -dan Arduino -dan Yerə qədər müsbət tərəfə və Zəmini lehimləməzdən əvvəl uclarını soyun və bağlayın. Bir az sonra istilik azaldı və yaxşı görünürdü, İsti yapışqan silahı hər şeyi tutmaq üçün geri qayıtdı. Arduinodan gələcəkdə proqramlaşdırmaq üçün USB portuna daxil ola biləcəyim qədər düşə biləcəyim qədər oyunla ayrılmaq qərarına gəldim.

Addım 4: Kod

İndi bu kodu Arduinoya yükləyə bilməlisiniz.

RTC işləmirsə, kodun tərtib edildiyi vaxta əsasən vaxtı təyin edəcək, buna görə yükləmə düyməsini vurduğunuzdan və yoxlamadığınızdan əmin olun.

alternativ olaraq bu da vaxt təyin etmək üçün həqiqətən yaxşı işləyir.

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

Bu kodun böyük bir hissəsini Adafruit NeoPixel kitabxanasından, bəzilərini tapdığım RTC kitabxanasından, bəzilərini isə özüm hazırladım.

// kitabxana kodunu daxil edin: #include

#daxil edin

#daxil edin

// sancaqlar təyin edin

#PIN 6 təyin edin

#define BRIGHTNESS 20 // maksimum parlaqlığı təyin edin

#təyin r 5

#təyin g 5

#təyin b 5

RTC_DS3231 rtc; // Saat obyekti qurun

Adafruit_NeoPixel zolağı = Adafruit_NeoPixel (12, PIN, NEO_GRB + NEO_KHZ800); // obyekti soyun

boş quraşdırma () {

Wire.begin (); // I2C -ə başlayın

rtc.begin (); // saata başlayın

Serial.begin (9600);

// pinmodları təyin edin

pinMode (PIN, ÇIXIŞ);

if (rtc.lostPower ()) {

Serial.println ("RTC gücünü itirdi, vaxtı təyin edək!");

// aşağıdakı xətt RTC -ni bu eskizin tərtib edildiyi tarix və saata təyin edir

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

// Bu xətt RTC -ni açıq bir tarix və vaxtla təyin edir, məsələn, qurmaq üçün

// 21 yanvar 2014 -cü il saat 3 -də zəng edərdiniz:

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

}

strip.begin ();

strip.show (); // Bütün pikselləri "söndürmək" üçün başladın

DateTime theTime = rtc.now (); // DST -ni nəzərə alır

bayt saniyə = theTime.second (); // saniyə əldə edin

bayt dəqiqə = theTime.minute (); // dəqiqələr əldə edin

int hourval = theTime.hour ();

nöqtə (şerit Rəng (0, g, 0), 50);

}

boşluq döngəsi () {

// vaxt qazan

DateTime theTime = rtc.now (); // DST -ni nəzərə alır

int minuteval = theTime.minute (); // dəqiqələr əldə edin

int hourval = theTime.hour (); // saatlar əldə edin

int secondval = theTime.second ();

əgər (dəqiqə 0) {

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

strip.show ();}

başqa halda (minuteval <= 9) {

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

strip.show ();}

başqa halda (minuteval <= 14) {

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

strip.show ();}

başqa halda (minuteval <= 19) {

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

strip.show ();}

başqa halda (minuteval <= 24) {

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

strip.show ();}

başqa halda (minuteval <= 29) {

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

strip.show ();}

başqa əgər (minuteval <= 34) {

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

strip.show ();}

başqa halda (minuteval <= 39) {

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

strip.show ();}

başqa halda (minuteval <= 44) {

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

strip.show ();}

başqa halda (minuteval <= 49) {

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

strip.show ();}

başqa halda (minuteval <= 54) {

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

strip.show ();}

başqa halda (minuteval <= 59) {

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

strip.show ();}

gecikmə (1000);

üçün (int i = 0; i <12; i ++) {

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

strip.show ();

}

əgər (saat aralığı == 0) {

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

strip.show ();}

başqa halda (hourval == 1) {

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

strip.show ();}

başqa halda (hourval == 2) {

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

strip.show ();}

başqa əgər (hourval == 3) {

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

strip.show ();}

başqa əgər (hourval == 4) {

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

strip.show ();}

başqa əgər (hourval == 5) {

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

strip.show ();}

başqa əgər (saat aralığı == 6) {

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

strip.show ();}

başqa əgər (saat aralığı == 7) {

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

strip.show ();}

başqa əgər (saat aralığı == 8) {

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

strip.show ();}

başqa əgər (saat aralığı == 9) {

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

strip.show ();}

başqa əgər (saat aralığı == 10) {

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

strip.show ();}

başqa halda (hourval == 11) {

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

strip.show ();}

başqa halda (hourval == 12) {

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

strip.show ();}

başqa əgər (saat aralığı == 13) {

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

strip.show ();}

başqa əgər (hourval == 14) {

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

strip.show ();}

başqa əgər (saat aralığı == 15) {

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

strip.show ();}

başqa əgər (saat aralığı == 16) {

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

strip.show ();}

başqa əgər (hourval == 17) {

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

strip.show ();}

başqa əgər (saat aralığı == 18) {

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

strip.show ();}

başqa əgər (saat aralığı == 19) {

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

strip.show ();}

başqa əgər (saat aralığı == 20) {

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

strip.show ();}

başqa əgər (saat aralığı == 21) {

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

strip.show ();}

başqa əgər (saat aralığı == 22) {

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

strip.show ();}

başqa əgər (saat aralığı == 23) {

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

strip.show ();}

gecikmə (1000);

üçün (int i = 0; i <12; i ++) {

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

strip.show ();

}

// serial ayıklama üçün

Serial.print (saat dilimi, DEC);

Serial.print (':');

Serial.çap (minuteval, DEC);

Serial.print (':');

Serial.println (secondval, DEC);

}

boş nöqtə (uint32_t c, uint8_t gözləyin) {

üçün (int j = 0; j <3; j ++) {

üçün (int i = 0; i <12; i ++) {

strip.setPixelColor (i, c);

strip.show ();

gecikmə (gözləmək);

üçün (int i = 0; i <12; i ++) {

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

strip.show ();}

}

}

}

Addım 5: Danimarka yağı

Danimarka yağı
Danimarka yağı
Danimarka yağı
Danimarka yağı
Danimarka yağı
Danimarka yağı
Danimarka yağı
Danimarka yağı

Son və isteğe bağlı addım oduna bir az danimarka yağı tətbiq etməkdir. Taxılın necə çıxarılmasını çox bəyənirəm, ləkələrdən və nəmdən bir qədər müdafiə edir. Buna görə çox tövsiyə edirəm.

Üzünüzü fırçalaya bilərsiniz və ya köhnə bir parça ilə silə bilərəm.

İndi qalan tək şey onu bağlamaq və zövq almaqdır.

Tövsiyə: