//1
#define WS_ONE(pinPtr) {\
output_high(pinPtr); delay_cycles(1); delay_cycles(1); \
delay_cycles(1); delay_cycles(1); delay_cycles(1); delay_cycles(1); \
delay_cycles(1); delay_cycles(1); output_low(pinPtr);\
}
#define WS_ZERO(pinPtr) {\
output_high(pinPtr); delay_cycles(1); delay_cycles(1); \
output_low(pinPtr); delay_cycles(1); delay_cycles(1); \
delay_cycles(1); delay_cycles(1); delay_cycles(1);\
}
/*Latches the data in to the devices after passing. Call this
at the end of each update cycle.*/
#define WS_RESET(pinPtr) output_low(pinPtr); delay_us(1);
/*Low Level interface for sending data*/
void data_stream(unsigned int8 temp) {
//1
if(temp & 0x80) {WS_ONE(DATA_PIN);} else {WS_ZERO(DATA_PIN);}
if(temp & 0x40) {WS_ONE(DATA_PIN);} else {WS_ZERO(DATA_PIN);}
if(temp & 0x20) {WS_ONE(DATA_PIN);} else {WS_ZERO(DATA_PIN);}
if(temp & 0x10) {WS_ONE(DATA_PIN);} else {WS_ZERO(DATA_PIN);}
if(temp & 0x08) {WS_ONE(DATA_PIN);} else {WS_ZERO(DATA_PIN);}
if(temp & 0x04) {WS_ONE(DATA_PIN);} else {WS_ZERO(DATA_PIN);}
if(temp & 0x02) {WS_ONE(DATA_PIN);} else {WS_ZERO(DATA_PIN);}
if(temp & 0x01) {WS_ONE(DATA_PIN);} else {WS_ZERO(DATA_PIN);}
}
void RGB_color(char red, char green, char blue,) {
data_stream(red);
data_stream(green);
data_stream(blue);
WS_RESET(DATA_PIN);
}
Merhaba arkadaşlar yukarıdaki fonksiyonları kullanıp rgb pixel led sürüyorum. Örneğin 7. ledi kontrol etmek için RGB_color fonksiyonunu 7 kere döndürüyorum bu da 7. ledi kontrol etmem için ilk 6 lede tekrar veri yollamamı gerektiriyor. Acaba ilk 6 lede dokunmadan direk 7. ledi kontrol edebilmemin bir yolu var mı ? Ya da bunu sağlayan bir pixel led kütüphanesi. Sayıca fazla ledi karışık sıralamayla sürmeye kalktığımda beceremiyorum. Şimdiden teşekkürler.