Projekte_werkstatt
/
Mbed-Mensch-3-Menu
Fork of Mbed-Mensch-1 by
Led/WS2812B.cpp@7:903a6653a43b, 2016-03-18 (annotated)
- Committer:
- ladner
- Date:
- Fri Mar 18 13:18:27 2016 +0000
- Revision:
- 7:903a6653a43b
- Parent:
- 5:f4db4cd245e3
Who changed what in which revision?
User | Revision | Line number | New 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 |