İçindekiler:

Şifreli Duvar Saati: 27 Adım (Resimli)
Şifreli Duvar Saati: 27 Adım (Resimli)

Video: Şifreli Duvar Saati: 27 Adım (Resimli)

Video: Şifreli Duvar Saati: 27 Adım (Resimli)
Video: Bu Nasıl Kumbara😳😅 #kalbinesaklabeni #duygusalvideolar #askvideolari #kumbara #ask #huzun #mutluluk 2024, Temmuz
Anonim
Şifreli Duvar Saati
Şifreli Duvar Saati

Zamanın geçişi kontrol edemeyeceğimiz bir şeydir. Uyuyorsak, uyanıksak, sıkılmışsak veya meşgulsek aynı oranda olur. Güncel olaylarla, zamanın geçeceğini hatırlamak önemlidir. Zamanın geçmesini beklerken, neden zamanın geçişini izlemeyi daha çekici hale getiren bir şey yapmıyoruz?

Bu saat, Almanya'nın Berlin kentinde bulunan Mengenlehreuhr'dan esinlenmiştir ve aynı şekilde okunabilmektedir. Tıpkı orijinalinde olduğu gibi, ışıklı, renkli alanlar aracılığıyla zamanı söyler.

52 'rakamlı' bölgeyi aydınlatan 96 LED'e sahiptir. Orijinalinden farklı olarak, yatay çubuk düzeni yerine saniye halkası içeren dairesel bir tasarıma sahiptir. Dış bant, orta nokta ile bağlantılı olarak saniyeleri, sonraki iki bant dakikaları, son iç bantlar ise saatleri gösterir.

Elinizde biraz hurda malzeme ve fazladan zaman varsa, neden bu zamanı gösterecek bir şey yapmak için kullanmıyorsunuz?

Tekrar yapacak olsam bu projede yapacağım birkaç değişiklik var. İlk önce çerçeveyi ve LED kartını siyah yerine beyaza boyardım. Bu, öndeki büyük mercekten daha fazla ışık yansıtacaktır. Ayrıca LED'leri takmak için sonuna kadar beklerdim. Kodu yazmama yardımcı olabilmesi için tahtanın daha erken bitmesine ihtiyacım vardı. Bu arada, önce onu nasıl okuyacağımızı öğrenelim!

resim
resim

Adım 1: Saat Nasıl Okunur

Saat, iç halkalardan dışa doğru okunur. Dört alanın iç halkası, her biri beş tam saati, ikinci halkanın yanı sıra, her biri bir tam saati gösteren ve saat değerini 24 saatlik biçimde gösteren dört alandan oluşur. Üçüncü halka, her biri beş tam dakikayı gösteren on bir alandan oluşur, sonraki halkada, her biri bir tam dakikayı işaretleyen dört alan daha vardır. Son olarak, 29 alandan oluşan dış halka, merkezdeki ışık tek (yandığında) veya çift sayılı (yanık olmadığında) saniyeleri belirtmek için yanıp sönerken çift saniyeleri belirtir.

resim
resim

Örneğin, yukarıdaki resimde beş saat rakamından 1'i, bir saat rakamından 3'ü, beş dakika rakamından 8'i, bir dakika rakamından 4'ü ve iki saniye rakamından 23'ü ve ortadaki ikinci rakam yanıyor.

1x5 + 3x1: 8x5 + 4x1: 23x2 + 1x1 = 08:44:47 = 08:44:47

resim
resim

Yukarıda gösterilen saat: 3x5 + 0x1: 3x5 + 2x1: 5x2 + 1x1 = 15:17:11 = 3:17:11 PM

resim
resim

Yukarıda gösterilen saat: 3x5 + 2x1: 3x5 + 3x1: 16x2 + 1x1 = 17:18:33 = 17:18:33 PM

Adım 2: Araçlar ve Malzemeler

Araçlar ve Malzemeler
Araçlar ve Malzemeler
Araçlar ve Malzemeler
Araçlar ve Malzemeler
Araçlar ve Malzemeler
Araçlar ve Malzemeler

Elektronik Malzemeler:

  • Arduino Nano
  • Gerçek Zamanlı Saat
  • Adreslenebilir LED'ler
  • Elektrik fişi
  • Güç kablosu
  • USB Güç Fişi
  • Işık Bağımlı Direnç ve dengeli direnç (gece karartmasını istiyorsanız)
  • Tel

Ağaç İşleme Malzemeleri:

  • 3/4 inç Kontrplak
  • İnce Kontrplak
  • Hurda Ahşap (2x4 kullandım ama parke de işe yarar)
  • Boya
  • Akrilik 30 x 36 inç Levha (yerel ev geliştirme mağazasında bulunur)
  • Pencere Tonu (yerel kaynak yapmayı deneyin. Hiçbiri yoksa, burada yeterince büyük bir sayfa bulabilirsiniz)
  • Window Tint Uygulama Sıvısı (Püskürtme şişesinde bebek şampuanı ile karıştırılmış su kullandım)
  • rüzgar gülü
  • Kasap kağıdı
  • Vidalar
  • Sprey yapıştırıcı
  • Zamk
  • Yapıştırıcı

Aletler:

  • Hükümdar
  • Xacto Bıçağı
  • Kaset
  • Çift taraflı bant
  • Pusula
  • Daire Kesme Jig
  • yapboz
  • Bant testere
  • Mil Zımpara
  • avuç içi zımparası
  • Disk Zımpara
  • Yönlendirici Tablosu
  • bız
  • Matkap ve Matkap Uçları/Sürücüler
  • Kelepçeler
  • Havya
  • Lehim
  • Tel Sıyırıcılar

3. Adım: Şablonları Birleştirin

Şablonları Birleştirin
Şablonları Birleştirin
Şablonları Birleştirin
Şablonları Birleştirin

Büyük şablon için, Adobe Reader'daki poster ayarını kullanarak yazdırın. Her kağıdın kenar boşluklarını kesin ve birbirine bantlayın. Dikey, yatay ve çapraz çizgiler şablonun sıralanmasına yardımcı olacaktır. Sayfaların hepsinde, sırasız olduklarında düzenli kalmalarına yardımcı olmak için küçük sayılar bulunur.

Gerekli tüm şablonlar ve dosyalar Adım 26'da bulunur.

Adım 4: Kaba Kesim Daireleri

Kaba Kesim Daireler
Kaba Kesim Daireler
Kaba Kesim Daireler
Kaba Kesim Daireler

İki şablonu 3/4 inçlik bir kontrplak yaprağına yerleştirerek, bir pusula ile gerekenden biraz daha büyük daireler çizin. Bir yapboz kullanarak kaba şekli kesin.

Adım 5: Boyuta Göre Kes

Boyutlandırmak için kesin
Boyutlandırmak için kesin
Boyutlandırmak için kesin
Boyutlandırmak için kesin

Şerit testere üzerinde bir daire kesme aparatı kullanarak daireleri son boyuta kesin.

Adım 6: Şablonu Uygulayın

Şablonu Uygula
Şablonu Uygula
Şablonu Uygula
Şablonu Uygula
Şablonu Uygula
Şablonu Uygula

Sprey yapıştırıcı kullanarak her şablonu bir daireye uygulayın. Daire üzerinde ortalamak için şablonun ortasına bir çivi yerleştirin.

Adım 7: Şablonu Kes

Şablonu Kes
Şablonu Kes
Şablonu Kes
Şablonu Kes
Şablonu Kes
Şablonu Kes

Bir yapboz kullanarak, şablonun her bir penceresini kesin. Bir CNC'ye erişiminiz varsa, bu adım çok daha kolay olurdu! Bu işleme yardımcı olmak için her pencerede bir delik açtım. Kesmeye başladığınızda şablon çıkmaya başlayabilir. Bu olursa, küçük bant parçalarıyla yerine sabitleyebilirsiniz.

Adım 8: Zımparalama

zımpara
zımpara
zımpara
zımpara
zımpara
zımpara

Bir çubuğa, mil zımparasına ve avuç içi zımparasına uygulanan zımpara kağıdını kullanarak dekupaj testeresinin bıraktığı kaba kesimi zımparalayın ve düzeltin.

Adım 9: LED'ler için Matkap Tutma Yerleri

LED'ler için Matkap Tutacakları
LED'ler için Matkap Tutacakları
LED'ler için Matkap Tutacakları
LED'ler için Matkap Tutacakları
LED'ler için Matkap Tutacakları
LED'ler için Matkap Tutacakları
LED'ler için Matkap Tutacakları
LED'ler için Matkap Tutacakları

Her deliğin ortasını bir bız ile işaretleyin ve LED'ler için boşluk delikleri açın. Matkabı iş parçama dik tutmak için bir kılavuz ve arkadaki ahşabı dışarı üflememek için bir destek tahtası kullandım.

Adım 10: Panoları Birleştirin

Panoları Birleştir
Panoları Birleştir
Panoları Birleştir
Panoları Birleştir
Panoları Birleştir
Panoları Birleştir

Ön ve arka panoları değiştirin ve çerçevenin parçalarını LED panosunun arkasına yerleştirin. Çerçeveyi LED panosunun önüne geri getirin ve delikler açın ve parçaları birbirine vidalayın.

Daha fazla bilgi için resim notlarına bakın.

Adım 11: LED'leri takın

LED'leri takın
LED'leri takın
LED'leri takın
LED'leri takın

LED'leri LED kartının arkasından itin. Delikler, bir daireden diğerine geçmek dışında herhangi bir kabloyu kesmenize gerek kalmayacak kadar aralıklı olmalıdır.

Arkadan, LED'ler merkezden başlar ve ardından saat yönünün tersine ve ardından bir sonraki halkaya kadar çalışır.

Adım 12: Segment 1'i ekleyin

Segment 1'i Ekle
Segment 1'i Ekle
Segment 1'i Ekle
Segment 1'i Ekle
Segment 1'i Ekle
Segment 1'i Ekle

3/4 inç kontrplak üzerine iliştirilmiş "Bölüm 1" şablonundan 9 parça kesin (adım 26'da bulunur). Tutkal ve kelepçelerle LED kartına takın. Sabırsızsanız, yerine sabitlemek için çivi de kullanabilirsiniz.

Kuruduktan sonra kenarı bir disk zımpara ile zımparalayın.

Adım 13: Boya

Boya
Boya
Boya
Boya
Boya
Boya
Boya
Boya

Hem LED kartını hem de çerçeveyi püskürterek boyayın. Bunu tekrar yapıyor olsaydım, lensten daha fazla yansıtıcı olacağı için siyah yerine beyaz boya kullanmayı seçerdim.

Adım 14: Bölüm 2

2. Bölüm
2. Bölüm
2. Bölüm
2. Bölüm
2. Bölüm
2. Bölüm

2 3/8 inç kalınlığında (26. adımda bulunur) ahşaptan iliştirilmiş "Segment 2" şablonundan 9 parça kesin. Dükkanın çevresinden biraz hurda 2x4 kullandım. Segmentleri kuru olarak takın ve bir bant kelepçesiyle iyice oturduğundan emin olun. Her şey yolunda giderse, yapıştırıcının yapışmasını önlemek için dışını boya bandıyla kapatın ve bir sonraki adıma geçmeden önce en az bir saat kurumasını bekleyin.

Adım 15: Bölüm 3

3. Bölüm
3. Bölüm
3. Bölüm
3. Bölüm
3. Bölüm
3. Bölüm

3/8 inç kalınlığındaki hurda odundan iliştirilmiş "Segment 3" şablonundan 9 parça kesin (adım 26'da bulunur). 2. Segmentteki dikişler her Segment 3'ün ortasında olacak şekilde yapıştırın. Bu, halkayı güçlendirecektir.

Adım 16: Pürüzsüz Halka ve Boya

Pürüzsüz Halka ve Boya
Pürüzsüz Halka ve Boya
Pürüzsüz Halka ve Boya
Pürüzsüz Halka ve Boya

Büyük halkanın kesilmiş parçasından özel bir zımpara bloğu yaptım. Halkanın içini ve dışını zımparalayın ve yapıştırma işlemi sırasında oluşabilecek çatlakları doldurun.

Pürüzsüz hale geldikten sonra birkaç kat siyah boya ve vernik uygulayın.

Adım 17: Akrilik Kes

Akrilik Kesim
Akrilik Kesim
Akrilik Kesim
Akrilik Kesim
Akrilik Kesim
Akrilik Kesim
Akrilik Kesim
Akrilik Kesim

Akriliği 30 x 30 inç ölçülerinde bir kareye kesin ve merkezi işaretleyin. Akrilikleri çift taraflı bantla yapıştırın. Bir gömme trim freze ucu kullanarak fazla akriliği çıkarın

Adım 18: Pencere Tonu Uygulayın

Pencere Tonu Uygula
Pencere Tonu Uygula
Pencere Tonu Uygula
Pencere Tonu Uygula
Pencere Tonu Uygula
Pencere Tonu Uygula

Tozsuz bir ortamda, koruyucu filmi akrilikten çıkarın. Sprey uygulayın ve pencere tonundaki desteği çıkarın. Pencere tonunu yapışkan tarafı aşağı doğru uygulayın. Bir silecek veya kredi kartı kullanarak cam renginin altındaki tüm sıvıyı sıkın. Tüm kabarcıklar ve kırışıklıklar giderildikten sonra, keskin bir bıçak kullanarak fazla pencere tonunu düzeltin.

Adım 19: Defuser'ı Takın

Durdurucu Ekle
Durdurucu Ekle
Durdurucu Ekle
Durdurucu Ekle

Defansör görevi görmesi için büyük bir kasap kağıdı kullandım. Kağıdı düz bir yüzeye yayın. Çerçevenin yüzünü bir tutkal çubuğundan tutkalla örtün. Tutkal kurumadan saatin ön tarafını kağıda yatırın ve fazla kısmı kabaca kesin. Kuruduktan sonra, sifonu kesmek için keskin bir bıçak kullanın.

Adım 20: Yalıtımı Uygulayın

Yalıtım Uygula
Yalıtım Uygula

Güç ve veri hatlarını ayrı tutmak için elektrik bandı kullandım.

Adım 21: Birleştirin

Birleştirmek
Birleştirmek
Birleştirmek
Birleştirmek
Birleştirmek
Birleştirmek

Diğer koruyucu tabakayı akrilikten çıkarın. Akriliği, pencere tonlu tarafı yukarı bakacak şekilde halkanın içine yerleştirin. Saatin geri kalanını halkaya kaydırın. Halkadan LED kartına bir delik açılırken hafif basınç uygulamak için bir kelepçe kullanın. Bu, arkadan kabaca 1 1/8 inç olmalıdır. Bir LED'i delmemeye dikkat edin. Bir kafes başlı vidayı deliğe vidalayın. Saatin çevresinde toplam sekiz vida için tekrarlayın.

Adım 22: Bağlantı Noktalarını Ekleyin

Bağlantı Noktaları Ekle
Bağlantı Noktaları Ekle

Arka kapağın takılması için saatin arkasına tutkal noktaları. Bunlar 3/4 inç kalınlığında ve yaklaşık 2 inç uzunluğundadır.

Adım 23: Delme Gücü ve LDR Sensör Delikleri

Delme Gücü ve LDR Sensör Delikleri
Delme Gücü ve LDR Sensör Delikleri

Güç fişi için saatin altından bir güç deliği ve ışığa bağlı direnç (LDR) sensörü için üstte bir delik açın.

Adım 24: Elektronik Tutucuyu Kurun

Elektronik Tutucuyu Takın
Elektronik Tutucuyu Takın
Elektronik Tutucuyu Takın
Elektronik Tutucuyu Takın

RTC ve Arduino Nano için 3D baskılı tutucuyu takın. Tüm elektronik aksamları şemada gösterildiği gibi bağlayın.

Adım 25: Arka Kapak

Arka kapak
Arka kapak
Arka kapak
Arka kapak
Arka kapak
Arka kapak
Arka kapak
Arka kapak

Saatin dışından biraz daha küçük olan ince kontrplaktan bir arka kapak kesin. Ankraj noktalarına delikler açın. Sırtın ortasını bulun ve anahtar deliklerini kesmek için her iki yönde 8 inç ölçün (ABD'de saplamalar için merkezlerde standart 16). Ana deliği, kullanacağım vidaların başından biraz daha büyük açtım ve deliği bir yönde daha büyük eğeledim. Siyaha boyayın ve kapağı yerine takın.

Adım 26: Kod ve Dosyalar

Yine, burada kullanılan Arduino kitaplıklarının çoğunu kullanma konusunda oldukça yeniyim, bu yüzden onları kullanmanın daha iyi yolları olduğundan eminim.

Proje büyütülürse veya küçültüldüğünde kaç adet led kullandığınıza göre kolayca güncellenebilecek bir kod yazdım. Tek yapmanız gereken, LED başlangıç ve bitiş konumlarını ve ayrıca her bir basamağın kaç LED'in parçası olduğunu güncellemektir.

Başlangıçta ve saatte oynayan birkaç animasyon ekledim. Gemide bulunan rasgele sayı üretecine göre sudo rasgeledirler.

Saati, renkler arasında geçiş yapacak veya birinde sabit kalacak şekilde ayarlayabilirsiniz. Girişte gösterildiği gibi, okuma süresinin okunmasına yardımcı olması için gösterge basamağını bile vurgulayabilirsiniz.

Kodu istediğiniz gibi düzenlemekten ve değiştirmekten çekinmeyin.

#include "RTClib.h"

#include #define NUM_LEDS 96 #define DATA_PIN 3 #define LDR A0 RTC_DS1307 rtc; boolean timeChange = yanlış; boolean printTime = yanlış; // Çıktıyı konsolda görmek istiyorsanız true olarak ayarlayın. Hata ayıklama için yararlıdır. boolean redDown = true; boolean greenDown = yanlış; boolean blueDown = yanlış; boole döngüsü = yanlış; // Saat renklerinin boolean vurgulama = true; // 'Son rakamı' vurgulamak için true değerini ayarlayın. // Her bir zaman grubunun başlangıç ve bitiş konumları const int SECOND_1_LOCATION = 0; const int HOUR_2_START_LOCATION = 1; const int HOUR_2_END_LOCATION = 8; const int HOUR_1_START_LOCATION = 9; const int HOUR_1_END_LOCATION = 20; const int MINUTE_2_START_LOCATION = 21; const int MINUTE_2_END_LOCATION = 42; const int MINUTE_1_START_LOCATION = 43; const int MINUTE_1_END_LOCATION = 66; const int SECOND_2_START_LOCATION = 67; const int SECOND_2_END_LOCATION = 95; const int LEDS_PER_HOUR_1 = 3; const int LEDS_PER_HOUR_2 = 2; const int LEDS_PER_MINUTE_1 = 6; const int LEDS_PER_MINUTE_2 = 2; // Zamanı bölmek için kullanılan çarpanlar const int MULTIPLIER_FIVE = 5; const int MULTIPLIER_TWO = 2; const int START_UP_DELAY = 1; // Başlangıç animasyonunu hızlandırmak veya yavaşlatmak için bunu değiştirin const int CYCLE_SPEED = 1; // Renk değiştirme döngüsü için oranı buradan değiştirin (1'den büyük olmalıdır) // Değişkenleri bildirin int lastSecond = 0; int akımSaat = 0; int akımDakika = 0; int akımSaniye = 0; int saat1 = 0; int saat2 = 0; int dakika1 = 0; int dakika2 = 0; int saniye1 = 0; int saniye2 = 0; int cycleCount = 1; kayan nokta fadeValue = 255; şamandıra fadeCheck = 255; uint8_t parlak = 255; intAnimasyonların sayısı = 5; int rastgelelik = 0; // Renkleri Ayarla uint8_t red = 0; uint8_t yeşil = 0; uint8_t mavi = 255; uint8_t Highlight_red = 60; uint8_t vurgu_yeşil = 60; uint8_t Highlight_blue = 255; // Led dizisini tanımlayın CRGB ledleri[NUM_LEDS]; geçersiz kurulum() { Serial.begin(19200); FastLED.addLed'ler(led'ler, NUM_LEDS); LEDS.setParlaklık(parlak); FastLED.clear(); rtc.begin(); // Zamanı ayarlamak için aşağıdaki satırı kaldırın. // rtc.adjust(DateTime(2020, 2, 19, 23, 59, 50)); // rtc.adjust(DateTime(F(_DATE_), F(_TIME_))); // Başlangıç animasyonu canlandırması(rastgelelik); } void loop() { // DateTime saatini şimdi al = rtc.now(); currentHour = şimdi.saat(); akımDakika = şimdi.dakika(); currentSecond = şimdi.saniye(); timeChange = yanlış; // RTC olmadan zamanı manuel olarak ayarlamak için bunları kullanın. Hata ayıklamak için kullanışlıdır // currentHour = 5; // akımDakika = 30; // akımSaniye = 30; // (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i++) için tüm bitleri sıfırlayın { led'ler = CRGB::Black; } // Saati Ayarla // Saati 1 saat ayarla1 = (currentHour % MULTIPLIER_FIVE) * LEDS_PER_HOUR_1; // Bu, (int i = HOUR_1_START_LOCATION; i 0)// && hour1 <12) { for (int i = (HOUR_1_START_LOCATION + saat1 - 1); i>= (HOUR_1_START_LOCATION + saat1 - LEDS_PER_HOUR_1); i--) { ledler = CRGB(vurgu_kırmızı, vurgu_yeşil, vurgu_mavi); } } // Saati 2 saat ayarla2 = (currentHour / MULTIPLIER_FIVE) * LEDS_PER_HOUR_2; // Bu, (int i = HOUR_2_START_LOCATION; i 0)// && saat2 <8) { for (int i = (HOUR_2_START_LOCATION + saat2 - 1); i>= (HOUR_2_START_LOCATION + saat2 - LEDS_PER_HOUR_2);i--) { led'ler = CRGB(vurgu_kırmızı, vurgu_yeşil, vurgu_mavi); } } // Dakika Ayarla // Dakika 1 dakika ayarla1 = (currentMinute % MULTIPLIER_FIVE) * LEDS_PER_MINUTE_1; // Bu, (int i = MINUTE_1_START_LOCATION; i 0)// && dakika1 <24) { for (int i = (MINUTE_1_START_LOCATION + dakika1 - 1); i>= (MINUTE_1_START_LOCATION + dakika1 - LEDS_PER_MINUTE_1);i--) { ledler = CRGB(vurgu_kırmızı, vurgu_yeşil, vurgu_mavi); } } // Dakika 2 dakikayı ayarla2 = (geçerliDakika / ÇARPAN_BEŞ) * LEDS_PER_MINUTE_2; // Bu, (int i = DAKİKA_2_START_LOCATION; i 0)// && dakika2 <22) { for (int i = (DAKİKA_2_START_LOCATION + dakika2 - 1); i>= (MINUTE_2_START_LOCATION + dakika2 - LEDS_PER_MINUTE_2);i--) { ledler = CRGB(vurgu_kırmızı, vurgu_yeşil, vurgu_mavi); } } // SecondSecond if (currentSecond != lastSecond) { timeChange = true; } // Saniyeyi ayarla 1 saniye1 = currentSecond % MULTIPLIER_TWO; if (ikinci1 == 1) { ledler[SECOND_1_LOCATION] = CRGB(kırmızı, yeşil, mavi); } // saniye 2 saniye ayarla2 = geçerliSaniye / MULTIPLIER_TWO; for (int i = SECOND_2_START_LOCATION; i 0)// && saniye2 <29) { for (int i = (SECOND_2_START_LOCATION + saniye2 - 1); i>= (SECOND_2_START_LOCATION + saniye2 - 1); i--) { ledler = CRGB(vurgu_kırmızı, vurgu_yeşil, vurgu_mavi); } } lastSecond = currentSecond; // Programın döngülerini sayın ve LED'lerin rengini CYCLE_SPEED döngüsü boyunca değiştirmek için setColor işlevini çağırın. if (cycleCount parlak) // { // fadeValue = parlak; // } // else if (fadeValue < 150) // { // fadeValue = 150; // } // LEDS.setBrightness(fadeValue); FastLED.show(); // Geçerli saati konsola yazdır if (timeChange == true && printTime == true) { printToConsole(); } } // Animasyon işlevi istediğiniz gibi buraya daha fazla animasyon ekleyin void animate(int select) { if (select == 0) { for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i++) { leds = CRGB(kırmızı yeşil mavi); FastLED.show(); gecikme(START_UP_DELAY); } for (int i = SECOND_2_END_LOCATION; i>= SECOND_1_LOCATION; i--) { led'ler = CRGB::Siyah; FastLED.show(); gecikme(START_UP_DELAY); } } else if (seç == 1) { for (int i = 0; i < 250; i++) { int light = random(95); ledler[ışık] = CRGB(kırmızı, yeşil, mavi); FastLED.show(); } } else if (seç == 2) { led'ler[0] = CRGB(kırmızı, yeşil, mavi); for (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i++) { ledler[SECOND_2_START_LOCATION + i] = CRGB(kırmızı, yeşil, mavi); if (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) { ledler[MINUTE_1_START_LOCATION + i] = CRGB(kırmızı, yeşil, mavi); } if (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) { ledler[MINUTE_2_START_LOCATION + i] = CRGB(kırmızı, yeşil, mavi); } if (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) { ledler[HOUR_1_START_LOCATION + i] = CRGB(kırmızı, yeşil, mavi); } if (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) { ledler[HOUR_2_START_LOCATION + i] = CRGB(kırmızı, yeşil, mavi); } gecikme(34); FastLED.show(); } } else if (seç == 3) { led'ler[0] = CRGB(kırmızı, yeşil, mavi); for (int i = 0; i <= SECOND_2_END_LOCATION - SECOND_2_START_LOCATION; i++) { led'ler[SECOND_2_END_LOCATION - i] = CRGB(kırmızı, yeşil, mavi); if (i <= (MINUTE_1_END_LOCATION - MINUTE_1_START_LOCATION)) { ledler[MINUTE_1_END_LOCATION - i] = CRGB(kırmızı, yeşil, mavi); } if (i <= (MINUTE_2_END_LOCATION - MINUTE_2_START_LOCATION)) { ledler[MINUTE_2_END_LOCATION - i] = CRGB(kırmızı, yeşil, mavi); } if (i <= (HOUR_1_END_LOCATION - HOUR_1_START_LOCATION)) { ledler[HOUR_1_END_LOCATION - i] = CRGB(kırmızı, yeşil, mavi); } if (i <= (HOUR_2_END_LOCATION - HOUR_2_START_LOCATION)) { ledler[HOUR_2_END_LOCATION - i] = CRGB(kırmızı, yeşil,Mavi); } gecikme(34); FastLED.show(); } } else if (seç == 4) { for (int i = SECOND_2_END_LOCATION; i>= SECOND_1_LOCATION; i--) { led'ler = CRGB::Siyah; } FastLED.show(); gecikme(200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i++) { led'ler = CRGB(kırmızı, yeşil, mavi); } FastLED.show(); gecikme(200); for (int i = SECOND_2_END_LOCATION; i>= SECOND_1_LOCATION; i--) { led'ler = CRGB::Siyah; } FastLED.show(); gecikme(200); for (int i = SECOND_1_LOCATION; i <= SECOND_2_END_LOCATION; i++) { led'ler = CRGB(kırmızı, yeşil, mavi); } FastLED.show(); gecikme(200); for (int i = SECOND_2_END_LOCATION; i>= SECOND_1_LOCATION; i--) { led'ler = CRGB::Siyah; } FastLED.show(); gecikme(200); } } // Renk döngüsü işlevi void setColor(boolean cycleColors) { if (cycleColors == true) { if (redDown == true && greenDown == false) { red++; Yeşil--; if (yeşil <= 0) { kırmızı = 255; redDown = yanlış; greenDown = doğru; } } else if (greenDown == true && blueDown == false) { green++; Mavi--; if (mavi <= 0) { yeşil = 255; greenDown = yanlış; blueDown = doğru; } } else if (blueDown == true && redDown == false) { blue++; kırmızı--; if (kırmızı <= 0) { mavi = 255; blueDown = yanlış; redDown = doğru; } } } başka { kırmızı = 0; yeşil = 0; mavi = 255; } } // Seri Monitöre Yazdır işlevi void printToConsole() { Serial.print("Güncel Saat: "); Serial.print(currentHour); Seri.print(":"); Serial.print(geçerliDakika); Seri.print(":"); Serial.println(currentSecond); Seri.println(" "); for (int i = HOUR_2_START_LOCATION; i <= HOUR_2_END_LOCATION; i++) { Serial.print(led'ler); if (i % 2 == 0) { Serial.print(" "); } } Serial.println(" "); for (int i = HOUR_1_START_LOCATION; i <= HOUR_1_END_LOCATION; i++) { Serial.print(leds); if (((i - HOUR_1_START_LOCATION + 1) % 3) == 0) { Serial.print(" "); } } Serial.println(" "); for (int i = DAKİKA_2_START_LOCATION; i <= DAKİKA_2_END_LOCATION; i++) { Serial.print(leds); if (((i - MINUTE_2_START_LOCATION) + 1) % 2 == 0) { Serial.print(" "); } } Serial.println(" "); for (int i = MINUTE_1_START_LOCATION; i <= MINUTE_1_END_LOCATION; i++) { Serial.print(leds); if (((i - MINUTE_1_START_LOCATION) + 1) % 6 == 0) { Serial.print(" "); } } Serial.println(" "); for (int i = SECOND_2_START_LOCATION; i <= SECOND_2_END_LOCATION; i++) { Serial.print(leds); Seri.print(" "); } Serial.println(" "); Serial.println(led'ler[SECOND_1_LOCATION]); Seri.println(); for (int i = 0; i < NUM_LEDS; i++) { Serial.print(led'ler); } Seri.println(); Seri.println(); }

Adım 27: Keyfini çıkarın

resim
resim

Sonuç olarak, bu saati izlemesi harika ve bir kez alıştığınızda, okuması nispeten kolay. Kendi saat projeni yaparsan, bana haber ver!

Önerilen: