Dependencies:   TextLCD mbed

Fork of Mbed-Mensch-1 by Projekte_werkstatt

Committer:
ladner
Date:
Fri Mar 11 07:47:58 2016 +0000
Revision:
5:f4db4cd245e3
Parent:
WS2812B.cpp@1:0eaa7682f7e1

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ladner 1:0eaa7682f7e1 1 #include "WS2812B.h"
ladner 1:0eaa7682f7e1 2
ladner 1:0eaa7682f7e1 3 RGBOut::RGBOut(PinName rPin,PinName gPin,PinName bPin) : Rout(rPin) , Gout(gPin) , Bout(bPin)
ladner 1:0eaa7682f7e1 4 {
ladner 1:0eaa7682f7e1 5 Rout=1;
ladner 1:0eaa7682f7e1 6 Gout=1;
ladner 1:0eaa7682f7e1 7 Bout=1;
ladner 1:0eaa7682f7e1 8 }
ladner 1:0eaa7682f7e1 9 void RGBOut::set_RGB(uint32_t leddata)
ladner 1:0eaa7682f7e1 10 {
ladner 1:0eaa7682f7e1 11 float r = ((leddata&0x00FF00)>>8);
ladner 1:0eaa7682f7e1 12 float b = ((leddata&0x0000FF));
ladner 1:0eaa7682f7e1 13 float g = ((leddata&0xFF0000)>>16);
ladner 1:0eaa7682f7e1 14 r = r/0xFF;
ladner 1:0eaa7682f7e1 15 g = g/0xFF;
ladner 1:0eaa7682f7e1 16 b = b/0xFF;
ladner 1:0eaa7682f7e1 17 Rout=(1-r);
ladner 1:0eaa7682f7e1 18 Gout=(1-g);
ladner 1:0eaa7682f7e1 19 Bout=(1-b);
ladner 1:0eaa7682f7e1 20 }
ladner 1:0eaa7682f7e1 21
ladner 1:0eaa7682f7e1 22 void RGBOut::set(float r,float g,float b)
ladner 1:0eaa7682f7e1 23 {
ladner 1:0eaa7682f7e1 24 Rout=(1-r);
ladner 1:0eaa7682f7e1 25 Gout=(1-g);
ladner 1:0eaa7682f7e1 26 Bout=(1-b);
ladner 1:0eaa7682f7e1 27 }
ladner 1:0eaa7682f7e1 28 void RGBOut::set_r(float r)
ladner 1:0eaa7682f7e1 29 {
ladner 1:0eaa7682f7e1 30 Rout=(1-r);
ladner 1:0eaa7682f7e1 31 }
ladner 1:0eaa7682f7e1 32 void RGBOut::set_g(float g)
ladner 1:0eaa7682f7e1 33 {
ladner 1:0eaa7682f7e1 34 Gout=(1-g);
ladner 1:0eaa7682f7e1 35 }
ladner 1:0eaa7682f7e1 36 void RGBOut::set_b(float b)
ladner 1:0eaa7682f7e1 37 {
ladner 1:0eaa7682f7e1 38 Bout=(1-b);
ladner 1:0eaa7682f7e1 39 }
ladner 1:0eaa7682f7e1 40
ladner 1:0eaa7682f7e1 41
ladner 1:0eaa7682f7e1 42 uint32_t Brightness(uint32_t leddata,char Brightness)
ladner 1:0eaa7682f7e1 43 {
ladner 1:0eaa7682f7e1 44 float r = ((leddata&0x00FF00)>>8);
ladner 1:0eaa7682f7e1 45 float b = ((leddata&0x0000FF));
ladner 1:0eaa7682f7e1 46 float g = ((leddata&0xFF0000)>>16);
ladner 1:0eaa7682f7e1 47 r = r/0xFF;
ladner 1:0eaa7682f7e1 48 g = g/0xFF;
ladner 1:0eaa7682f7e1 49 b = b/0xFF;
ladner 1:0eaa7682f7e1 50 r = r*Brightness;
ladner 1:0eaa7682f7e1 51 g = g*Brightness;
ladner 1:0eaa7682f7e1 52 b = b*Brightness;
ladner 1:0eaa7682f7e1 53 char rNew = r;
ladner 1:0eaa7682f7e1 54 char gNew = g;
ladner 1:0eaa7682f7e1 55 char bNew = b;
ladner 1:0eaa7682f7e1 56 uint32_t out = ((gNew<<8)|rNew)<<8|bNew;
ladner 1:0eaa7682f7e1 57 return out;
ladner 1:0eaa7682f7e1 58 }
ladner 1:0eaa7682f7e1 59
ladner 1:0eaa7682f7e1 60 LedOut::LedOut(PinName pin):Output(pin)
ladner 1:0eaa7682f7e1 61 {
ladner 1:0eaa7682f7e1 62 }
ladner 1:0eaa7682f7e1 63
ladner 1:0eaa7682f7e1 64 void LedOut::WriteLed(uint32_t leddata)
ladner 1:0eaa7682f7e1 65 {
ladner 1:0eaa7682f7e1 66 int i;
ladner 1:0eaa7682f7e1 67 for(i=0;i<24;i++)
ladner 1:0eaa7682f7e1 68 {
ladner 1:0eaa7682f7e1 69 writeledbit((leddata&(1<<i))>0);
ladner 1:0eaa7682f7e1 70 }
ladner 1:0eaa7682f7e1 71 }
ladner 1:0eaa7682f7e1 72
ladner 1:0eaa7682f7e1 73 void LedOut::writeledbit(char wert) // Funktion schreibe bit
ladner 1:0eaa7682f7e1 74 {
ladner 1:0eaa7682f7e1 75 int j;
ladner 1:0eaa7682f7e1 76 if(wert)
ladner 1:0eaa7682f7e1 77 {
ladner 1:0eaa7682f7e1 78 Output=1; // data 1
ladner 1:0eaa7682f7e1 79 for(j=0;j<5;j++)
ladner 1:0eaa7682f7e1 80 {
ladner 1:0eaa7682f7e1 81 __nop();
ladner 1:0eaa7682f7e1 82 }
ladner 1:0eaa7682f7e1 83 Output=0;
ladner 1:0eaa7682f7e1 84 for(j=0;j<1;j++)
ladner 1:0eaa7682f7e1 85 {
ladner 1:0eaa7682f7e1 86 __nop();
ladner 1:0eaa7682f7e1 87 }
ladner 1:0eaa7682f7e1 88 }
ladner 1:0eaa7682f7e1 89 else
ladner 1:0eaa7682f7e1 90 {
ladner 1:0eaa7682f7e1 91 Output=1; // data 0
ladner 1:0eaa7682f7e1 92 for(j=0;j<1;j++)
ladner 1:0eaa7682f7e1 93 {
ladner 1:0eaa7682f7e1 94 __nop();
ladner 1:0eaa7682f7e1 95 }
ladner 1:0eaa7682f7e1 96 Output=0;
ladner 1:0eaa7682f7e1 97 for(j=0;j<5;j++)
ladner 1:0eaa7682f7e1 98 {
ladner 1:0eaa7682f7e1 99 __nop();
ladner 1:0eaa7682f7e1 100 }
ladner 1:0eaa7682f7e1 101 }
ladner 1:0eaa7682f7e1 102 }
ladner 1:0eaa7682f7e1 103