22 Eylül 2018, 09:46:15

Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME


CCS C ile neopixel(adreslenebilir ledler) kullanımı (ws2812 protokolü)

Başlatan makine_terbiyecisi, 09 Nisan 2018, 16:28:35

ertuğrul54


makine_terbiyecisi

Elimdeki ledler ws2811 miş.
Bunları 20MHz kristal kullanan pic ile yapamaz mıyım?
# ÖĞRENELİM, ÖĞRETELİM #

ertuğrul54


Mehmet Salim GÜLLÜCE

12 Nisan 2018, 20:13:55 #33 Son düzenlenme: 12 Nisan 2018, 20:15:38 Mehmet Salim GÜLLÜCE
Alıntı yapılan: ertuğrul54 - 12 Nisan 2018, 00:37:4416f1826 ile yapabilirsin az sayıda piksel ledin varsa
Led sayısından bağımsız olsa gerek.
Zira seri transfer yapıyor Kıyma makinası gibi.
Makinanın ağzından çıkınca bir sonraki kıyma çıkar.önceki çıkanlar makinayı ilgilendirmez. çıkan çıkmıştır.
Bununda süresi önemli.

ertuğrul54

Kod Seç
unsigned char dr[nDots]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
unsigned char dg[nDots]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
unsigned char db[nDots]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};



#define      ws2811_zero    0b10000000
#define    ws2811_one      0b11110000


void WS2811send(){
    
unsigned int j;
    
unsigned int Mask;
    
long ii;
    for(
ii=0;ii<nDots;ii++){
        
Mask=0x80;
        for (
j=0;j<8;j++){
            if(
Mask db[ii]) spi_write(ws2811_one);
            else 
spi_write(ws2811_zero);
            
Mask>>=1;
        }
        
Mask=0x80;
        for (
j=0;j<8;j++){
            if(
Mask dr[ii]) spi_write(ws2811_one);
            else 
spi_write(ws2811_zero);
            
Mask>>=1;
        }
        
Mask=0x80;
        for (
j=0;j<8;j++){
            if (
Mask dg[ii]) spi_write(ws2811_one);
            else 
spi_write(ws2811_zero);
            
Mask>>=1;
        }

    }
   
delay_us(50);
}

ws2811 veya 2812 çalıştırabilirsiniz büyük ihtimal 2813 de çalıştıracaktır
pic16f1827 ile 30 adet led çalıştırmıştım