2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Arka bahçem için bir çeşit etkileşimli bahçe lambası yapmak istedim. Fikir, birisi bir yöne yürüdüğünde, yürüdüğünüz yönde bir animasyon başlatacaktı. Dollar General 1.00$ güneş ışığıyla başladım
Adım 1: Solor Işıklarını Çıkarın
İlk adım, daha eğlenceli şeylere yer açmak için ışıkları söndürmekti. Orijinal led ve pili keserek başladım. Bu parçaları başka bir projede faydalı olacağından emin olun güneş ışığının altında bulunan krom kubbeyi söküp üste yapıştırdım fotoğraflarda görüldüğü gibi
2. Adım: Daha İyi Işıkların Kurulması
led için burada bulunabilecek su geçirmez ws2811b kullandım
www.ebay.com/itm/50-X-12mm-LED-Module-RGB-…
Başlangıçta PIR sensörlerini güneş ışıklarının içine yerleştirmeyi planlamıştım. ancak sensör temelde plastiğin ötesini göremediği için bu biraz sorunlu oldu. bir çeşit UV filtreleme özelliğine sahip olmalıdır. bu yüzden daha çok böyle bir şey seçtim
www.thingiverse.com/thing:2590216
Adım 3: Kodlama
Işıkların sensör kullanmamasını veya sürekli çalışmasını istiyorsanız, sadece "değişen bayrak durumu" olarak yorumlanan yeri arayın ve eter 1 veya 0 olarak ayarlayın, bunu kendim için tamamladığımda daha fazla resim ekleyeceğim, bu yüzden hala devam eden bir çalışma ama bence hemen paylaşılmayacak kadar temiz. baktığın için teşekkürler
geçersiz kurulum() {
// bir kez çalıştırmak için kurulum kodunuzu buraya koyun: FastLED.addLeds(leds, NUM_LEDS); Seri.başla(9600); pinMode(buttonPin1, INPUT); pinMode(buttonPin2, INPUT); }
boşluk döngüsü () {
Serial.println(FlagState);
if(FlagState == 0){ ForwardLeds(); } if(FlagState == 1){ RevLeds(); } if(FlagState == 2){ Bekliyor(); } }
void ForwardLeds(){
İlkLed = -1; SonLed = 16; for(int i=0; i < 8; i++){ LastLed--; FirstLed++; led'ler[LastLed] = CRGB::Beyaz; led'ler[FirstLed] = CRGB::Beyaz; gecikme(750); FastLED.show(); Serial.print ("beyaz Geçiş"); Seri.baskı (i); Serial.println ("/8"); } İlkLed = -1; SonLed = 16; for(int i=0; i < 8; i++){ LastLed--; FirstLed++; led'ler[LastLed] = CRGB::Mavi; led'ler[FirstLed] = CRGB::Mavi; gecikme(250); FastLED.show(); Serial.print ("Mavi Geçiş"); Seri.baskı (i); Seri.println ("/8"); } İlkLed = -1; SonLed = 16; for(int i=0; i < 8; i++){ LastLed--; FirstLed++; led'ler[SonLed] = CRGB::Mor; ledler[FirstLed] = CRGB::Mor; gecikme(250); FastLED.show(); Serial.print ("Kırmızı Geçiş"); Seri.baskı (i); Serial.println ("/8"); } İlkLed = -1; SonLed = 16; for(int i=0; i < 8; i++){ LastLed--; FirstLed++; led'ler[LastLed] = CRGB::Siyah; led'ler[FirstLed] = CRGB::Siyah; gecikme(250); FastLED.show(); Serial.print ("Led'i kapatma"); Seri.baskı (i); Serial.println ("/8"); } Bayrak Durumu = 2; // bayrak durumunu değiştirme } void RevLeds(){ Serial.println("ters"); İlkLed = 8; SonLed = 7; for(int i=0; i < 8; i++){ LastLed++; İlkLed--; led'ler[LastLed] = CRGB::Beyaz; led'ler[FirstLed] = CRGB::Beyaz; gecikme(750); FastLED.show(); Serial.print (" Beyaz geçiş "); Seri.baskı (i); Serial.println ("/8"); } İlkLed = 8; SonLed = 7; for(int i=0; i < 8; i++){ LastLed++; İlkLed--; led'ler[LastLed] = CRGB::Mavi; led'ler[FirstLed] = CRGB::Mavi; gecikme(250); FastLED.show(); Serial.print (" Mavi geçiş "); Seri.baskı (i); Seri.println ("/8"); } İlkLed = 8; SonLed = 7; for(int i=0; i < 8; i++){ LastLed++; İlkLed--; led'ler[SonLed] = CRGB::Mor; ledler[FirstLed] = CRGB::Mor; gecikme(250); FastLED.show(); Serial.print (" Kırmızı geçiş "); Seri.baskı (i); Serial.println ("/8"); }
İlkLed = 8;
SonLed = 7; for(int i=0; i < 8; i++){ LastLed++; İlkLed--; led'ler[LastLed] = CRGB::Siyah; led'ler[FirstLed] = CRGB::Siyah; gecikme(250); FastLED.show(); Serial.print ("Led'i Kapatma"); Seri.baskı (i); Serial.println ("/8"); } Bayrak Durumu = 2; //işaret durumunu değiştirme } void Waiting(){ buttonState1 = digitalRead(buttonPin1); buttonState2 = digitalRead(buttonPin2); if(buttonState1 == HIGH){ Serial.println("ileri tetiklemeli"); Bayrak Durumu = 0; } else if(buttonState2 == YÜKSEK){ Serial.println("Geri tetiklendi"); Bayrak Durumu = 1; } Serial.println("döngü tamamlandı bekleniyor"); }