Mündəricat:
- Addım 1: Təchizat və Alətlərin Toplanması
- Addım 2: İşarələmə, Qazma və Marşrutlaşdırma
- Addım 3: Çox Əsgərlik, Kəsmə və Soyma
- Addım 4: Quraşdırma
- Addım 5: Son toxunuşlar
Video: 132 Piksel Saat: 5 Adım (Şəkillərlə birlikdə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:47
Xatırladığım müddətcə LED -lərə və vaxta aludə olmuşam. Bu layihədə, bir ladin taxtasından quraşdırılmış və parlayan 132 neopixel LED -dən istifadə edərək cari vaxtı göstərən böyük bir divar saatı yaratdım. Hər saat, dəqiqə və saniyə üçün fərdi piksel olan hibrid analog rəqəmsaldır.
Bu günə qədər götürdüyüm ən böyük layihə idi, 6 ay əvvəl düşünməyə başladım və fikir yavaş -yavaş bir araya gəldi. Nəticədən çox məmnunam və bunu sizinlə bölüşməyi səbirsizliklə gözləyirəm.
Addım 1: Təchizat və Alətlərin Toplanması
Komponentlər
Bu layihə yerli DIY mağazamdan bir hobbi lövhəsi üzərində qurulmuşdur. Lövhənin eni 850 mm, hündürlüyü 500 mm və dərinliyi 18 mm -dir.
Bu layihədə istifadə olunan LEDlər, arxa tərəfində lehim yastıqları olan təxminən 9 mm diametrli dairəvi PCB -lərə quraşdırılmış 5050 WS2812b -dir.
Arduino Pro Mini ilə uyğun mikro nəzarətçi istifadə edirəm. 5V 16 MHZ versiyasıdır. Super incə dizaynı, kiçik ayaq izi və bütün lazımsız limanları və gələcək yüksəlişlər üçün bir az ehtiyatı olduğu üçün bunu seçdim. Həm də 5 voltdur, buna görə LEDlər, Mikro nəzarətçi və RTC üçün tək bir enerji təchizatı istifadə edə bilərəm
Vaxtın saxlanması DS3231 çipi olan bir RTC (Real Time Clock) modulu tərəfindən həyata keçirilir. Bu çip çox dəqiqdir, buna görə vaxt çox sürməməlidir.
Həm də istifadə olunur:
Tel. Lehim və isti yapışqan.
Alətlər:
Elektrikli matkaplar və taxta matkaplar (10 mm və 5 mm)
Lehimleme dəmir
İsti yapışqan silahı
tel parçaları
Dremel və daldırma router aksesuarları
Addım 2: İşarələmə, Qazma və Marşrutlaşdırma
Qazma
- Düz bir kənar istifadə edərək, əks künclərdən bir xətt çəkərək lövhənin mərkəzini tapın.
- Bir ip və qələm istifadə edərək 3 dairəni işarələyin. Xarici ən çox dairə lövhənin kənarından təxminən 20 mm məsafədə, digər 2 xətt isə son sətirdən 15 mm irəliləyir.
- Xarici 2 sətirdə hər dəqiqə və saniyənin, daxili sətirdə saatların mövqelərini təyin etməyə kömək etmək üçün çap olunmuş saat üzündən istifadə etdim.
- Hər saat, dəqiqə və saniyə üçün təxminən 5 mm dərinlikdə 10 mm deliklər qazın.
- Lövhədə bir saat, dəqiqə və saniyəlik deliklər açmaq üçün 5 mm -lik qazmağı istifadə edin.
Marşrutlaşdırma
Bu addım lazım olmasa da, saatın divara bərabər şəkildə quraşdırılmasına imkan verəcəkdir.
- Lövhədə bir router və dairə bələdçisi marşrut tel kanallarından istifadə
- RTC və Micro Controller -in yaşaması üçün bir fasilə işarələyin və istiqamətləndirin.
- Bir xətti xarici xətlərdən tellərin girintisinə yönəldin
Addım 3: Çox Əsgərlik, Kəsmə və Soyma
Növbəti hissə deməkdən daha asandır. Tələsməyim üçün məsləhətim olardı. bir sistem tapmağa çalışın və bir ritmə girin.
LED -lərin hər birinin 5 volt girişi, 5 volt çıxışı, Məlumat girişi, Məlumat çıxışı, Topraklama və Torpaq çıxışı lazımdır. mikro nəzarətçi və RTC -nin 400 -dən çox telinin hər iki ucunda soyulmuş və lehimlənmiş gücü də daxil olmaqla.
Yapışqan mavi bir maddə bu addım üçün çox faydalıdır.
- Bir -birinə bağlanmaq üçün lazım olan telin uzunluğunu öyrənmək üçün bir -birinin yanındakı deliklərinə 2 LED qoyaraq başladım.
- 1 -ci tel parçasını bələdçi olaraq istifadə edərək hər rəngli teldən 60 -ı kəsdim.
- Hər bir telin ucundan 2 mm qalınlığı çıxarın və lehimlə qalaylayın.
- LED yastıqların hər birinə kiçik bir lehim lehimləyin.
- Kabelləri LED -lərə lehimləyin ki, dəqiqə və saniyə ərzində 60 ədəd və 12 saatlıq bir zəncir meydana gətirsin. 5V üçün qırmızı tel, məlumat üçün sarı və yer üçün mavi istifadə etdim.
- Hər bir Data Çıxışını (DOUT) növbəti LED -in Məlumat Girişinə (DIN) bağlamağa diqqət yetirin
- Hər bir zəncirvari dozada sonuncu aparıcıya məlumat ötürülməsinə ehtiyac yoxdur.
Bütün zəncirləri tamamladıqdan sonra onları quraşdırmadan əvvəl sınamaq yaxşı bir fikirdir. Hər bir LED -in işlədiyini təsdiqləmək üçün Arduino UNO və Adafruit NeoPixel Strand Testindən istifadə etdim.
5V, Ground və Data in zəncirlərinin hər birinə daha uzun tellər lehimləyin.
Bu nöqtədə 5 ədəd 5v tel, 3 ədəd Arduino Pro Mini və 5 Topraklama telinə bağlı olmalıdır.
5v tellərin uclarından 5 mm çıxarın və hamısını birlikdə lehimləyin və Topraklama telləri üçün təkrarlayın.
Üç zənciri tamamladıqdan sonra, Arduino Pro Mini -nin RAW pininə 5V -lik bir tel lehimləyin və eyni zamanda RTC üçün VCC pininə yapışdırın. Arduino Pro Mini və RTC -də GND -yə bir topraklama teli və sonra daha 2 tel:
Pro Mini -də RTC -dən A5 -ə SCL
Pro Mini -də RTC -dən A4 -ə qədər SDA
LED -lərin məlumat xətləri aşağıdakılara qoşulmalıdır:
- Saniyə - Rəqəmsal Pin 3.
- Dəqiqələr - DigitalPin 4
- Saat - DigitalPin 5
Addım 4: Quraşdırma
Lehimləndikdən sonra, LEDləri çuxurlarına quraşdırmaq düz irəli olmalıdır. LED-lərin quraşdırılması lazımdır, belə ki, kod arxa tərəfdən baxıldıqda məlumatlar saat yönünün əksinə hərəkət edir, çünki kod ön tərəfə baxır.
Gələcəkdə uğursuz olarsa tək bir LED əvəz etmək istədiyim üçün onları tutmaq üçün az miqdarda isti yapışqan istifadə etdim.
Bütün telləri səliqəli və səliqəli saxlamaq və lülənin konnektorunu lövhəyə düzəltmək üçün də isti yapışqan istifadə etdim.
Bir sıra arduino pro mini proqramlaşdırma təlimatları mövcuddur. Bu kodu Arduinoya yükləmək üçün xarici USB -dən serial çevirici metodundan istifadə edirəm:
Bu kod eyni zamanda RTC -də tərtib edildiyi vaxtı təyin edəcək. Yükləmə düyməsini bağlamaq vacibdir, buna görə mümkün qədər tez uyğun gəlir və yüklənir.
Bu kodun çox hissəsi Andy Doro tərəfindən NeoPixel Zəngli Saatdan götürülmüşdür. Bəziləri Adafruit NeoPixel Strand Testindən və bəzilərini bir araya gətirdim.
Bir neçə kitabxana qurmalısınız. Arduino proqramındakı Kitabxanalar Menecerindən əldə edə bilərsiniz.
Ws2812b LEDləri üçün Adafruit NeoPixel
RTC ilə I2C üzərində danışmaq üçün tel (bu standart olaraq qurulmuşdur)
və RTClib, RTC -dən nə soruşacağını bildiyinə görə
/*********************************************** ***************************Andy Doro tərəfindən NeoPixel Zəngli Saat ([email protected]) https://andydoro.com/ringclock/ ************************************************ **************************
Reviziya Tarixi
Nə ilə Tarix
20140320 AFD İlk layihə 20160105 AFD Solğun qövslər 20160916 AFD Trinket uyğun 20170727 AFD, 3D korpus üçün STARTPIXEL, dəyişkən başlanğıc nöqtəsi, DST kitabxanasını istifadə edərək avtomatik DST dəstəyi 20180424 əlavə etdi https://github.com/andydoro/DST_RTC *
/ kitabxana kodunu daxil edin:
#daxil edin #daxil edin
#daxil edin
// sancaqlar təyin edin
#SECPIN 3 təyin edin #MINPIN 4 təyin edin #HOUPIN 5 təyin edin
#define BRIGHTNESS 20 // maksimum parlaqlığı təyin edin
#təyin r 10
#define g 10 #define b 10 RTC_DS3231 rtc; // Saat obyekti qurun
Adafruit_NeoPixel şeridiS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // obyekti soyun
Adafruit_NeoPixel şeridiM = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // zolaq obyekti Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // zolaq obyekti bayt pixelColorRed, pixelColorGreen, pixelColorBlue; // rəng dəyərlərini saxlayır
boş quraşdırma () {
Wire.begin (); // Başla I2C rtc.begin (); // saata başlayın
Serial.begin (9600);
// pinMode pinMode (SECPIN, ÇIXIŞ) təyin edin; pinMode (MINPIN, ÇIXIŞ); pinMode (HOUPIN, Ç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, 21 Yanvar 2014 -ü saat 3 -də zəng edərdiniz: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }
stripS.begin ();
stripM.begin (); stripH.begin (); //strip.show (); // Bütün pikselləri "söndürmək" üçün başladın
// başlanğıc ardıcıllığı
gecikmə (500);
colorWipeS (stripS. Color (0, g, 0), 5); // Mavi rəngWipeM (stripM. Color (r, 0, 0), 5); // Mavi colorWipeH (stripH. Color (0, 0, b), 50); // Mavi
gecikmə (1000);
DateTime theTime = rtc.now (); // nəzərə alır DST bayt secondval = theTime.second (); // saniyə bayt əldə edin minuteval = theTime.minute (); // dəqiqələr alın int hourval = theTime.hour (); hourval = hourval % 12; // Bu saat 12 saatdır, əgər 13-23 olarsa 0-11-ə çevrilir
for (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); gecikmə (5); }
for (uint16_t i = 0; i <minuteval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); gecikmə (5); }
for (uint16_t i = 0; i <hourval; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); gecikmə (5); }
}
boşluq döngəsi () {
// vaxt qazan
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ə almaq int hourval = theTime.hour (); // saat saatı alın = saat dəyəri % 12; // Bu saat 12 saatdır, əgər 13-23 olarsa 0-11-ə çevrilir
stripS.setPixelColor (ikinci dəyər, 0, 0, 20); stripS.show (); gecikmə (10); if (secondval == 59) {for (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); gecikmə (16);}}
stripM.setPixelColor (dəqiqəlik, 0, g, 0);
stripM.show (); gecikmə (10); if (secondval == 59 && minuteval == 59) {for (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); gecikmə (16);}}
stripH.setPixelColor (saat dilimi, r, 0, 0);
stripH.show (); gecikmə (10); if (secondval == 59 && minuteval == 59 && hourval == 11) {for (uint8_t i = stripH.numPixels (); i> 0; i--) {stripH.setPixelColor (i, 0, 0, b); stripH.show (); gecikmə (83);}} // seriya ayıklama üçün Serial.print (saat ölçüsü, DEC); Serial.print (':'); Serial.çap (minuteval, DEC); Serial.print (':'); Serial.println (secondval, DEC); }
// Nöqtələri bir -birinin ardınca rənglə doldurun
void colorWipeS (uint32_t c, uint8_t gözləyin) {for (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); gecikmə (gözləmək); }}
void colorWipeM (uint32_t c, uint8_t gözləyin) {
for (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); gecikmə (gözləmək); }}
boş rəngWipeH (uint32_t c, uint8_t gözləyin) {
for (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); gecikmə (gözləmək); }}
Addım 5: Son toxunuşlar
İndi yalnız RTC və Micro Controller -ı fasilədə düzəltmək qalır.
Lazım gələrsə batareyanı asanlıqla dəyişdirə biləcəyim üçün RTC batareyasını yan tərəfə quraşdırdım.
5V telləri bağlayıcının + tərəfinə və Zəmini yan tərəfə bağlayın
Gücləndirin!
Bir USB batareya bankına bağladım, ancaq bir USB telefon şarj cihazı da işləyə bilər.
Qeyd:
LED -lərin parlaqlığı kodda müəyyən edilir. Mövcud tirajı aşağı saxlamaq üçün aşağıya endirilib. Bütün LED -lər yanarkən tam parlaqlıqda təxminən 8 amper çəkə bilər. Mövcud quraşdırma ilə 1 -dən azdır.
Saat Yarışmasında 2 -ci yeri tutdu
Tövsiyə:
RGB LED piksel çalarları: 17 addım (şəkillərlə birlikdə)
RGB LED Pixel Shades: Hər kəsə salam, bu təlimatda sizə bir cüt LED piksel çalarlarının necə hazırlanacağını göstərəcəyəm. Əvvəlcə bunları Milad / Yeni il evində gəzmək üçün mobil bəzək kimi geyinmək üçün yaratdım, amma bir az daha kiberpunk olmağa başladılar
Retro Piksel Sənəti üçün Kütləvi 4096 LED Ekran Edin: 5 Addım (Şəkillərlə birlikdə)
Retro Pixel Art üçün Kütləvi 4096 LED Ekran olun: ***** Mart 2019 Yeniləndi ****** Bu layihədə davam edə biləcəyiniz, hər şeyi sıfırdan qura biləcəyiniz və ya bir kit versiyasından istifadə edə biləcəyiniz bir neçə yol var. Bu Təlimat kitabında hər iki üsulu əhatə edəcəyəm. Bu Təlimat 64x64 və ya 4,096 RGB LED quraşdırılmasını əhatə edir
Piksel Balqabaq: 8 Adım (Şəkillərlə birlikdə)
Piksel Balqabaq: Uzaqdan idarəetmə vasitəsi ilə içəridən fərqli naxışlarla işıqlanan gözə çarpan olmayan bir balqabaq yaradın. Piksellər çox rəngli olsa da, balqabağın qalın dərisi narıncıdan başqa hər şeyi süzəcək, buna görə də piksel rənglərimiz dəyişir
500 LED-piksel RGB-Kərpic: 9 addım (şəkillərlə birlikdə)
500 LED-Pikselli RGB-Kərpic: Bir müddət əvvəl bu WS2812 LED-lərdən bəziləri ilə 10x10 LED-Coffetable qururam, ancaq köhnə məktəbli Snake oyununu ona qoşulmuş bir smartfonla oynamaq mümkün olsa belə, daha çox şey istəyirəm xüsusi. Buna görə daha bir neçə led qoymaq qərarına gəldim, arra
Altıbucaqlı LED Piksel Armatur: 8 Addım (Şəkillərlə birlikdə)
Şüşə Altıbucaqlı LED Piksel Armaturu: NLED nəzarətçiləri və proqram potensialını nümayiş etdirmək üçün hazırlanmış LED piksel əsaslı bir sənət əsəri. Lehimlənmiş bürüncdən və şüşədən hazırlanmış, ehtimal ki, 70 -ci illərə aid olan təmizlənmiş işıq qurğusu ətrafında tikilmişdir. Standart APA102 piksel şeridi ilə birləşdirilmiş, cus