Dependents:   Mbed-Mensch-1 jakob_menschergeredichnicht4 Mbed-Mensch-8 jakob_15041 ... more

Committer:
ladner
Date:
Fri Apr 15 12:57:23 2016 +0000
Revision:
1:a2549b9f2785
Parent:
0:2981411e4f69

        

Who changed what in which revision?

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