/*Neopixel Enkoder ile Kullanımı: Arduino’ ya bağlanan 8’ li neopixel ve bir enkoder
bulunmaktadır. Enkoder çevrilerek diğer piksele geçilebilmeli ve enkoder’ in butonu
kullanılarak seçilen LED’ in parlaklığı değiştirilebilmelidir.*/
#include <Adafruit_NeoPixel.h>
int ledPin=3;
int dt=6;
int clk=7;
int sw=4;
int ledSayisi=16;
Adafruit_NeoPixel halka(ledSayisi , ledPin , NEO_GRB + NEO_KHZ800);
int currentLed=0;
int ledParlaklik=3;
int lastClockState=0;
unsigned long lastDebounce=0;
int debounce=50;
int lastButtonState=HIGH;
void setup(){
Serial.begin(9600);
halka.begin(); //neopixeli başlattık
halka.show(); // yapılan değişiklikleri uygular
pinMode(clk, INPUT_PULLUP);
pinMode(dt, INPUT_PULLUP);
pinMode(sw, INPUT_PULLUP);
lastClockState=digitalRead(clk);
updateLeds();
}
void loop(){
int currentClk=digitalRead(clk);
if(currentClk!=lastClockState){
if(digitalRead(dt)!=currentClk){
currentLed++;
if(currentLed>=ledSayisi){
currentLed=0;
}
}
else{
currentLed--;
if(currentLed<0){
currentLed=ledSayisi-1;
}
}
updateLeds();
}
lastClockState=currentClk;
int buttonState=digitalRead(sw);
if(buttonState==LOW && lastButtonState==HIGH && (millis() - lastDebounce)>debounce){
ledParlaklik++;
if(ledParlaklik>4){
ledParlaklik=0;
}
updateLeds();
lastDebounce=millis();
}
lastButtonState=buttonState;
}
void updateLeds(){
halka.clear();
int b=50;
if(ledParlaklik==0){
b=50;
}
else if(ledParlaklik==1){
b=100;
}
else if(ledParlaklik==2){
b=150;
}
else if(ledParlaklik==3){
b=200;
}
else if(ledParlaklik==4){
b=255;
}
halka.setPixelColor(currentLed,halka.Color(b,b,b));// seçilen ledi ve parlaklık
halka.show(); // ayarlarını uyguluyor
}