Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

Bu projenin temel amacı LED şeridi kontrol etmektir.
LED şerit (LED tape veya LED ribbon olarak da bilinir), üzerine ışık yayan yüzey montajlı LED’lerin (SMD) yerleştirildiği esnek bir devre kartıdır. Bu şeritler çok yönlüdür ve çeşitli uygulamalarda yaygın olarak dekoratif aydınlatma amacıyla kullanılırlar. LED şeritler birçok farklı renk seçeneğiyle sunulur; genellikle ortam aydınlatması, vurgu aydınlatması veya dekoratif ışık efektleri sağlamak için tercih edilirler.
LED şeritler temelde iki ana türe ayrılır:

Adreslenemeyen tek renkli led şeritler genel olarak doğrudan 12 Volt bağlanarak sürülür. Bu durum maliyet açısından önemlidir. Aşağıdaki resimde ESP32, röle ve Led sürücü kullanılarak bir bağlantı yapılmıştır. Bu aşamada kod yazımı oldukça kolay olup sadece herhangi bir çıkış pinin ON/OFF yapılması ile LED şeritin ışık üretmesi sağlanabilir.

Adreslenebilir led şerit aşağıdaki şekilde gösterilmiştir. Bu ürünün kodu WS2812B olarak geçmektedir. Her led için bir adres bulunmaktadır. Bu adres ESP32 ile ayarlandığı takdirde her ledin rengini ayarlamak mümkündür.

Aşağıdaki bağlantıda WS2812B led şeritinin bağlantısı gösterilmiştir. Kodların düzgün çalışabilmesi için ilgili kütüphanenin yüklenmiş olması gerekir.

Aşağıdaki kod, hareket algılandığında LED’i yakar ve hareket bittikten sonra belirlediğiniz süre boyunca açık tutar.
/*
* Bu ESP32 kodu esp32io.com tarafından oluşturulmuştur.
*
* Bu ESP32 kodu kamu malı (public domain) olarak yayınlanmıştır.
*
* Daha fazla detay (talimatlar ve bağlantı şeması) için şu adresi ziyaret edin:
* https://esp32io.com/tutorials/esp32-ws2812b-led-strip
*/
#include <Adafruit_NeoPixel.h>
#define PIN_WS2812B 16 // WS2812B'ye bağlı olan ESP32 GPIO16 pini
#define NUM_PIXELS 30 // WS2812B LED şeridindeki LED (piksel) sayısı
Adafruit_NeoPixel ws2812b(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800);
void setup() {
ws2812b.begin(); // WS2812B şerit nesnesini başlat (ZORUNLU)
}
void loop() {
ws2812b.clear(); // Tüm piksel renklerini 'kapalı' olarak ayarlar. Sadece pixels.show() çağrıldığında etkili olur.
// Pikselleri her piksel arasında gecikme olacak şekilde tek tek yeşile çevirir
for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // Her bir piksel için
ws2812b.setPixelColor(pixel, ws2812b.Color(0, 255, 0)); // Sadece pixels.show() çağrıldığında etkili olur
ws2812b.show(); // WS2812B LED Şeridini güncelle
delay(500); // Her piksel arasında 500ms duraklama
}
// Tüm pikselleri iki saniye boyunca kapat
ws2812b.clear();
ws2812b.show(); // WS2812B LED Şeridini güncelle
delay(2000); // 2 saniye kapalı kalma süresi
// Tüm pikselleri aynı anda kırmızıya çevir ve iki saniye açık tut
for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // Her bir piksel için
ws2812b.setPixelColor(pixel, ws2812b.Color(255, 0, 0)); // Sadece pixels.show() çağrıldığında etkili olur
}
ws2812b.show(); // WS2812B LED Şeridini güncelle
delay(1000); // 1 saniye açık kalma süresi
// Tüm pikselleri bir saniye boyunca kapat
ws2812b.clear();
ws2812b.show(); // WS2812B LED Şeridini güncelle
delay(1000); // 1 saniye kapalı kalma süresi
}
