John Lowe / Mbed 2 deprecated WebSockets2

Dependencies:   mbed MD5

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers RGBLed.c Source File

RGBLed.c

00001 #include "RGBLed.h"
00002 
00003 RGBLed::RGBLed() : red(p23), green(p22), blue(p21) {
00004     red.period(0.001);
00005     green.period(0.001);
00006     blue.period(0.001);
00007 
00008     setRgb(0.1, 0.1, 0.1);
00009 }
00010 
00011 void RGBLed::setRgb(char *rgb) {
00012     float r, g, b;
00013     int value;
00014 
00015     value= parseHex(0, *rgb++);
00016     value= parseHex(value, *rgb++);
00017     r= value / 255.0f;
00018 
00019     value= parseHex(0, *rgb++);
00020     value= parseHex(value, *rgb++);
00021     g= value / 255.0f;
00022 
00023     value= parseHex(0, *rgb++);
00024     value= parseHex(value, *rgb++);
00025     b= value / 255.0f;
00026 
00027     setRgb(r, g, b);
00028 }
00029 
00030 void RGBLed::setRgb(float r, float g, float b) {
00031     red= 1.0 - r;
00032     green= 1.0 - g;
00033     blue= 1.0 - b;
00034 
00035     //printf("red:%0.3f green:%0.3f blue%0.3f\n", r, g, b);
00036 }
00037 
00038 int RGBLed::parseHex(int value, char hex) {
00039     switch (hex) {
00040         case '0':
00041             return value<<4;
00042         case '1':
00043             return value<<4 | 1;
00044         case '2':
00045             return value<<4 | 2;
00046         case '3':
00047             return value<<4 | 3;
00048         case '4':
00049             return value<<4 | 4;
00050         case '5':
00051             return value<<4 | 5;
00052         case '6':
00053             return value<<4 | 6;
00054         case '7':
00055             return value<<4 | 7;
00056         case '8':
00057             return value<<4 | 8;
00058         case '9':
00059             return value<<4 | 9;
00060         case 'A':
00061         case 'a':
00062             return value<<4 | 10;
00063         case 'B':
00064         case 'b':
00065             return value<<4 | 11;
00066         case 'C':
00067         case 'c':
00068             return value<<4 | 12;
00069         case 'D':
00070         case 'd':
00071             return value<<4 | 13;
00072         case 'E':
00073         case 'e':
00074             return value<<4 | 14;
00075         case 'F':
00076         case 'f':
00077             return value<<4 | 15;
00078         default:
00079             return value;
00080     }
00081 }