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

Başlatan makine_terbiyecisi, 09 Nisan 2018, 13: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


M.Salim GÜLLÜCE

#33
Alıntı yapılan: ertuğrul54 - 11 Nisan 2018, 21: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

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