İçindekiler:

132 Piksel Saat: 5 Adım (Resimlerle)
132 Piksel Saat: 5 Adım (Resimlerle)

Video: 132 Piksel Saat: 5 Adım (Resimlerle)

Video: 132 Piksel Saat: 5 Adım (Resimlerle)
Video: #shorts #öğretmen #teacher #okulöncesi #eğitim #ingilizce #learning #teaching #youtubeshorts 2024, Kasım
Anonim
Image
Image
132 Piksel Saat
132 Piksel Saat

Hatırlayabildiğim kadarıyla LED'lere ve zamana takıntılıydım. Bu projede, bir ladin tahtasına monte edilmiş ve parlayan 132 neopiksel LED'leri kullanarak şimdiki zamanı gösteren büyük bir duvar saati oluşturdum. Her saat, dakika ve saniye için ayrı bir piksele sahip hibrit bir analog dijital.

Bu şimdiye kadar üstlendiğim en büyük projeydi, 6 ay önce düşünmeye başladım ve fikir yavaş yavaş oluştu. Sonuçtan gerçekten çok memnunum ve sizinle paylaşmak için sabırsızlanıyorum.

Adım 1: Sarf Malzemeleri ve Araçları Toplama

Malzemeleri ve Aletleri Toplama
Malzemeleri ve Aletleri Toplama
Malzemeleri ve Aletleri Toplama
Malzemeleri ve Aletleri Toplama
Malzemeleri ve Aletleri Toplama
Malzemeleri ve Aletleri Toplama
Malzemeleri ve Aletleri Toplama
Malzemeleri ve Aletleri Toplama

Bileşenler

Bu proje, yerel DIY mağazamdan bir cıvıl cıvıl hobi tahtası üzerine inşa edilmiştir. Tahta, 850 mm genişliğinde, 500 mm yüksekliğinde ve 18 mm derinliğindedir.

Bu projede kullanılan LED'ler, arkada lehim pedleri bulunan yaklaşık 9 mm çapında dairesel PCB'ler üzerine monte edilmiş 5050 WS2812b'dir.

Arduino Pro Mini uyumlu bir mikro denetleyici kullanıyorum. 5V 16 MHZ versiyonu. Süper ince tasarımı, küçük ayak izi ve tüm gerekli bağlantı noktalarının yanı sıra gelecekteki yükseltmeler için bazı yedekleri olduğu için bunu seçtim. Ayrıca 5 volt olduğundan LED'ler, Mikro denetleyici ve RTC için tek bir güç kaynağı kullanabilirim

Zaman tutma, DS3231 yongasını içeren bir RTC (Gerçek Zamanlı Saat) modülü tarafından halledilir. Bu çip çok hassastır, bu nedenle zaman çok fazla kaymamalıdır.

Ayrıca kullanılır:

Tel. Lehim ve sıcak tutkal.

Aletler:

Elektrikli matkap ve ahşap matkap uçları (10 mm ve 5 mm)

Havya

Sıcak yapıştırıcı tabancası

tel parçaları

Dremel ve daldırma freze aksesuarları

Adım 2: İşaretleme, Delme ve Yönlendirme

İşaretleme, Delme ve Yönlendirme
İşaretleme, Delme ve Yönlendirme
İşaretleme, Delme ve Yönlendirme
İşaretleme, Delme ve Yönlendirme
İşaretleme, Delme ve Yönlendirme
İşaretleme, Delme ve Yönlendirme

Sondaj

  • Düz bir kenar kullanarak, zıt köşelerden bir çizgi çizerek tahtanın merkezini bulun.
  • Bir parça ip ve kalem kullanarak 3 daire çizin. En dıştaki daire, diğer 2 çizgi son çizgiden 15 mm içeride hareket ederken, tahtanın kenarından yaklaşık 20 mm olmalıdır.
  • Dış 2 satırda dakika ve saniyelerin her birinin konumlarını ve iç satırda saatlerin konumlarını işaretlememe yardımcı olması için basılı bir saat yüzü kullandım.
  • Her saat, dakika ve saniye için yaklaşık 5 mm derinliğinde 10 mm'lik delikler açın.
  • Saat, dakika ve saniye boyunca tahtada delikler açmak için 5 mm'lik matkabı kullanın.

yönlendirme

Bu adım gerekli olmasa da, saatin duvara aynı hizada takılmasına izin verecektir.

  • Panoda bir yönlendirici ve daire kılavuzu rota tel kanalları kullanma
  • RTC ve Mikro Denetleyicinin içinde yaşaması için bir girinti işaretleyin ve yönlendirin.
  • Kablolar için girintiye dış hatlardan bir kanal yönlendirin

Adım 3: Çok Askerlik, Kesme ve Soyma

Çok Askerlik, Kesme ve Sıyırma
Çok Askerlik, Kesme ve Sıyırma
Çok Askerlik, Kesme ve Soyma
Çok Askerlik, Kesme ve Soyma
Çok Askerlik, Kesme ve Soyma
Çok Askerlik, Kesme ve Soyma

Bu sonraki kısım, söylemesi yapmaktan çok daha kolay. Tavsiyem acele etmeniz yönünde olacaktır. deneyin ve bir sistem bulun ve bir ritme girin.

LED'lerin her biri 5 volt giriş, 5 volt çıkış, Veri girişi, Veri çıkışı, Toprak girişi ve Toprak çıkışına ihtiyaç duyar. mikro denetleyici ve RTC için güç dahil, her iki uçta da soyulmuş ve lehimlenmiş 400'den fazla tel.

Bu adım için yapışkan mavi bir madde çok faydalıdır.

  • Birbirine bağlanmak için gereken kablo uzunluğunu hesaplamak için yan yana deliklerine 2 LED yerleştirerek başladım.
  • 1. tel parçasını kılavuz olarak kullanarak her bir renk telinden 60 adet kestim.
  • Her bir telin uçlarından 2 mm'lik manşonu soyun ve lehimle kalaylayın.
  • LED pedlerinin her birine küçük bir lehim bloğu lehimleyin.
  • Dakikalar ve saniyeler için 60'lık iki zincir ve saatler için 12'lik bir zincir oluşturmak için kabloları LED'lere lehimleyin. 5V için kırmızı kablo, veri için sarı ve toprak için mavi kullandım.
  • Her bir Veri Çıkışını (DOUT) bir sonraki LED'in Veri Girişine (DIN) bağlamaya dikkat edin.
  • Her zincir dozundaki son led, bir veri çıkışı kablosuna ihtiyaç duymaz.

Tüm zincirler tamamlandıktan sonra, takmadan önce test etmek iyi bir fikirdir. Her bir LED'in çalıştığını doğrulamak için Arduino UNO'mu ve Adafruit NeoPixel Strand Test'i kullandım.

5V, Topraklama ve Veri girişi için zincirlerin her birine daha uzun teller lehimleyin.

Bu noktada beş adet 5v kablosu, Arduino Pro Mini'ye bağlı üç adet Veri kablosu ve 5 adet Topraklama kablosu olmalıdır.

5v kabloların uçlarından 5 mm sıyırın ve hepsini birlikte lehimleyin ve Topraklama kabloları için tekrarlayın.

Üç zinciri tamamladıktan sonra Arduino Pro Mini'nin RAW pinine ve ayrıca RTC için VCC pinine 5V'luk bir tel lehimleyin. Arduino Pro Mini ve RTC'de GND'ye bir Topraklama kablosu ve ardından 2 kablo daha:

Pro Mini'de RTC'den A5'e SCL

Pro Mini'de RTC'den A4'e SDA

LED'lerden gelen veri hatları şunlara bağlanmalıdır:

  • Saniye - Dijital Pin 3.
  • Dakika - DigitalPin 4
  • Saatler - DigitalPin 5

4. Adım: Yükleme

yükleme
yükleme
yükleme
yükleme
yükleme
yükleme

Lehimlendikten sonra LED'leri deliklerine takmak düz olmalıdır. LED'lerin takılması gerekir, böylece kod ön tarafa bakacak şekilde ayarlandığından veriler arkadan bakıldığında saat yönünün tersine döner.

Gelecekte arızalanırsa tek bir LED'i değiştirebilmek istediğim için onları tutmak için az miktarda sıcak tutkal kullandım.

Ayrıca tüm kabloları temiz ve düzenli tutmak ve namlu konektörünü panoya sabitlemek için sıcak tutkal kullandım.

Bir dizi arduino pro mini programlama kılavuzu mevcuttur. Bu kodu Arduino'ya yüklemek için harici USB'den seri dönüştürücüye yöntemi kullanıyorum:

Bu kod ayrıca RTC'deki zamanı derlendiği zamana ayarlayacaktır. bu nedenle, yükleme düğmesini kapatmanız önemlidir, böylece uygun olur ve mümkün olduğunca hızlı yüklenir.

Bu kodun çoğu, Andy Doro tarafından NeoPixel Ring Clock'tan ödünç alındı. Bazıları Adafruit NeoPixel Strand Testinden ve bazılarını bir araya getirdim.

Birkaç kütüphane kurmuş olmanız gerekecek. Arduino yazılımındaki Kütüphaneler Yöneticisinden temin edilebilirler.

ws2812b LED'leri için Adafruit NeoPixel

I2C üzerinden RTC ile konuşmak için kablo (bu standart olarak yerleşiktir)

ve RTClib, RTC'ye ne sorulacağını bilmek için

/******************************************************** ************************* * * Andy Doro'dan NeoPixel Yüzük Saati ([email protected]) https://andydoro.com/ringclock/ * ******************************************************** *******************************

Revizyon Geçmişi

Neye Göre Tarih

20140320 AFD İlk taslak 20160105 AFD Soluk yaylar 20160916 AFD Biblo uyumlu 20170727 AFD, 3D muhafaza için STARTPIXEL ekledi, değişken başlangıç noktası, otomatik DST desteği eklendi 20180424 DST kitaplığını kullanan AFD https://github.com/andydoro/DST_RTC *

/ kütüphane kodunu ekleyin:

#include #include

#Dahil etmek

// pinleri tanımla

#define SECPIN 3 #define MINPIN 4 #define HOUPIN 5

#define BRIGHTNESS 20 // maksimum parlaklığı ayarla

#define r 10

#define g 10 #define b 10 RTC_DS3231 rtc; // saat nesnesi oluştur

Adafruit_NeoPixel stripS = Adafruit_NeoPixel(60, SECPIN, NEO_GRB + NEO_KHZ800); // nesneyi şeritle

Adafruit_NeoPixel stripM = Adafruit_NeoPixel(60, MINPIN, NEO_GRB + NEO_KHZ800); // nesneyi çıkar Adafruit_NeoPixel stripH = Adafruit_NeoPixel(24, HOUPIN, NEO_GRB + NEO_KHZ800); // nesne baytını soyun pixelColorRed, pixelColorGreen, pixelColorBlue; // renk değerlerini tutar

geçersiz kurulum () {

Wire.begin(); // I2C'yi Başlat rtc.begin(); // saati başlat

Seri.başla(9600);

// pin modlarını ayarla pinMode(SECPIN, OUTPUT); pinMode(MINPIN, ÇIKIŞ); pinMode(HOUPIN, ÇIKIŞ);

if (rtc.lostPower()) {

Serial.println("RTC güç kaybetti, zamanı ayarlayalım!"); // aşağıdaki satır RTC'yi bu çizimin derlendiği tarih ve saate ayarlar rtc.adjust(DateTime(F(_DATE_), F(_TIME_))); // Bu satır, RTC'yi açık bir tarih ve saatle ayarlar, örneğin // 21 Ocak 2014, saat 3'e ayarlamak için: // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); }

stripS.begin();

stripM.begin(); stripH.begin(); //şerit.göster(); // Tüm pikselleri 'kapalı' olarak başlat

// başlatma sırası

gecikme(500);

colorWipeS(şeritS. Color(0, g, 0), 5); // Blue colorWipeM(şeritM. Color(r, 0, 0), 5); // Mavi renkWipeH(şeritH. Color(0, 0, b), 50); // Mavi

gecikme(1000);

DateTime theTime = rtc.now(); // DST baytını hesaba katar secondval = theTime.second(); // saniye al byte minuteval = theTime.dakika(); // dakikayı al int saat değeri = theTime.hour(); saatdeğeri = saatdeğeri %12; // Bu saat 12 saat, 13-23 ise 0-11`e çevir

for (uint16_t i = 0; i < secondval; i++) { stripS.setPixelColor(i, 0, 0, b); stripS.show(); gecikme(5); }

for (uint16_t i = 0; i < dakika değeri; i++) { stripM.setPixelColor(i, 0, g, 0); stripM.show(); gecikme(5); }

for (uint16_t i = 0; i < hourval; i++) { stripH.setPixelColor(i, r, 0, 0); stripH.show(); gecikme(5); }

}

boşluk döngüsü () {

// zaman al

DateTime theTime = rtc.now(); // DST'yi hesaba katar

bayt saniye değeri = theTime.second(); // saniye al

bayt dakika değeri = theTime.dakika(); // dakikayı al int saat değeri = theTime.hour(); // saat saatini al = saat saatini % 12; // Bu saat 12 saat, 13-23 ise 0-11`e çevir

stripS.setPixelColor(ikinci değer, 0, 0, 20); stripS.show(); gecikme(10); if (ikinci değer ==59) { for (uint8_t i = stripS.numPixels(); i > 0; i--) { stripS.setPixelColor(i, 0, g, 0); stripS.show(); gecikme(16);} }

stripM.setPixelColor(dakikaval, 0, g, 0);

stripM.show(); gecikme(10); if (ikinci değer ==59 && dakika değeri == 59) { for (uint8_t i = stripM.numPixels(); i > 0; i--) { stripM.setPixelColor(i, r, 0, 0); stripM.show(); gecikme(16);} }

stripH.setPixelColor(saatval, r, 0, 0);

stripH.show(); gecikme(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(); delay(83);} } // seri hata ayıklama için Serial.print(hourval, DEC); Seri.print(':'); Serial.print(dakikaval, Aralık); Seri.print(':'); Serial.println(ikinci değer, Aralık); }

// Noktaları arka arkaya bir renkle doldurun

void colorWipeS(uint32_t c, uint8_t wait) { for (uint16_t i = 0; i < stripS.numPixels(); i++) { stripS.setPixelColor(i, c); stripS.show(); gecikme(bekle); } }

geçersiz colorWipeM(uint32_t c, uint8_t bekleyin) {

for (uint16_t i = 0; i < stripM.numPixels(); i++) { stripM.setPixelColor(i, c); stripM.show(); gecikme(bekle); } }

void colorWipeH(uint32_t c, uint8_t bekleyin) {

for (uint16_t i = 0; i < stripH.numPixels(); i++) { stripH.setPixelColor(i, c); stripH.show(); gecikme(bekle); } }

Adım 5: Son Dokunuşlar

Image
Image
Son dokunuşlar
Son dokunuşlar

Şimdi yapılması gereken tek şey RTC'yi ve Mikro Denetleyiciyi girintiye sabitlemek.

Gerekirse pili kolayca değiştirebilmek için RTC pilini yukarı bakacak şekilde yerleştirdim.

5v kablolarını konektörün + tarafına ve Topraklamayı - tarafına bağlayın

Güç verin!

Bir USB pil bankasına bağlı benimki var ama bir USB telefon şarj cihazı da aynı şekilde işe yarayabilir.

Not:

LED'lerin parlaklığı kodda ayarlanır. Mevcut çekişi düşük tutmak için düşük olarak ayarlanmıştır. Tüm LED'ler yandığında tam parlaklıkta, yaklaşık 8 amper çekebilir. Mevcut kurulum ile 1'den az.

Saatler Yarışması
Saatler Yarışması
Saatler Yarışması
Saatler Yarışması

Saatler Yarışmasında İkincilik

Önerilen: