Ynt: WS2812B RGB LED KONTOL ARKAŞLAR YARDIM!

Başlatan BİLİRSHOP, 16 Şubat 2015, 11:45:26

BİLİRSHOP

WS2812B kodulu RGB şerit ledlerin her biri ayrı ayrı kontrol edilebiliyor.Örneğin bazı dükkanların camındaki şerit ledler ilk önce ortadan bi led sonra sondan yanından gibi karışık şekilde ledlerin yanıp söndüğünü görmüşsünüzdür.Zaten aşağıdaki paylaşacağım videodada bunu çok net göreceksiniz.
Benim asıl merak ettiğim o ledler nasıl kontorl ediliyor.Örneğin içerisinde pic var diye biliyorum.Bu piclerin rx ucuna sinyal falan mı gönderiyoruz.
Konu hakkındaki bilgisi olan arkadaşaların yardımlarını bekliyorum.
Özellikle depo seviye göstergesi gibi projelerde RGB gibi güzel bir özelliğiyle çok kullanışlı olacağını düşünüyorum.

https://www.youtube.com/watch?v=YErWfe0aTiQ

mesaj birleştirme:: 16 Şubat 2015, 11:45:53

Örnek Led Urlsi :

http://www.ebay.com/itm/2m-120-LEDs-m-RGB-LED-WS2812B-5050-SMD-LEDs-WS2811-TIRA-AUTOADHESIVA-/261774734268?pt=Iluminación&hash=item3cf2fd73bc

gokhangokcen

hocam kontrolü çok basit aynı 74HC595 sürer gibi kaskat bağlılar birbirlerine dmx kontrol mantığında.Ben daha önce HL1606 kodlu olanlarından kullanmıştım çok basit bir örneği aşağıda;

#include "16f628a.h"
#fuses nolvp,nowdt,intrc_io,put,NOBROWNOUT,protect,nomclr
#use delay(clock=4m)


int i,m,j,l,l1,l2,col2,gecikme,color,tcolor,col1;
int leds=72;


#define data pin_b7
#define clock pin_b6
#define latch pin_b5


#define blue  0b10000001
#define purple  0b10000101
#define red  0b10000100
#define yellow  0b10010100
#define green  0b10010000
#define white  0b10010101
#define aqua  0b10010001
#define black  0b10000000


//' constants for D input .. half-bright colors
#define dred  0b10000010
#define dyellow  0b10001010
#define dgreen  0b10001000
#define daqua  0b10101000
#define dblue  0b10100000
#define dwhite  0b10101010
#define dpurple  0b10100010



void goster(void);
void rainbow(void);
void rchase(void);
void chase(void);





void main(void)
{
set_tris_b(0x00);
output_b(0x00);
disable_interrupts(global);
gecikme=20;

for(;;)
{

gecikme=10;
color=white;
goster();
color=blue;
goster();
color=red;
goster();
color=purple;
goster();
color=yellow;
goster();
color=green;
goster();
color=aqua;
goster();


l1 = 10;      
l2 = 3;    
col2 = purple;
rchase();


l1=10;
l2=3;
col2 = green;
rchase();


l1=10;
l2=3;
col2 = blue;
rchase();


l1=10;
l2=3;
col2 = yellow;
rchase();


l1=10;
l2=3;
col2 = aqua;
rchase();


leds=72;

color=black;
goster();
delay_ms(100);

rainbow();
leds=72;


}
}


void rchase()     
{   
   For (l=1;l<5;l++)
   {
      For (j=81;j<88;j++)
      {
    
       switch(j)
       {
          Case 81:
             col1=red;
             break;
          Case 82:
             col1=yellow;
             break;
          Case 83:
             col1=green;
             break;
          Case 84:
             col1=aqua;
             break;
          Case 85:
             col1=blue;
             break;
          Case 86:
             col1=purple;
             break;
          Case 87:
             col1=white;
             break;
         }  
        chase();     
      }
   }
}

void chase()  
{        
   color = col1;   
   leds =l1;
   goster();
   leds  = l2;
   color = col2;
   goster();
   }




void rainbow()           
{   
   For (l=1;l<5;l++)
   {
       leds = 6; // 
          For (j=81;j<88;j++) 
            {
               switch (j)
                  {
                   Case 81:
                     color=red;
                      break;
                   Case 82:
                     color=yellow;
                      break;
                   Case 83:
                      color=green;
                      break;
                   Case 84:
                      color=aqua;
                      break;
                   Case 85:
                      color=blue;
                   Case 86:
                      color=purple;
                      break;
                   Case 87:
                      color=white;
                      break;
                     }     
                  goster();
               }
         }
   

   }

void goster()
{
   For (i=0;i<leds;i++)
     {
      tcolor=color;
         for(m=0;m<8;m++)
            {
            if (tcolor>=128)
               {
                  output_high(data);
                  output_high(clock);
                  output_low(clock);
                  output_low(data);
                  tcolor=tcolor<<1;
               }
      else
      {
         output_high(clock);
         output_low(clock);
         tcolor=tcolor<<1;
       }
}
   output_high(latch);
   output_low(latch);

      Delay_ms(gecikme);
   }
}
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

gokhangokcen

üstad dediğim gibi bu vermiş olduğum kodlar HL1606 kodlu chipler içindir. Direkt kodları çalıştırabilirsin pin bağlantıları doğru olduktan sonra çalışacaktır. denedim çünkü :) vermiş olduğun örnektekini incelemedim. Ama %99 anı sürme mantığına sahiptir.
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

gokhangokcen

hocam kodlar gayet açık diye düşünüyorum döngü içerisinde sıra ile renkleri yakıyor.Beyazdan başlayarak, 2. animasyonda zemine sabit renk yükleyip üzerinden değişken renk akıyor.daha sonra rainbow belli renkleri parça parça akıtıyor işte :)
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

gokhangokcen

Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.