Reiko Randoja / RgbLedPCA9555

Dependents:   Telliskivi2_2014

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers rgb-led-pca9555.cpp Source File

rgb-led-pca9555.cpp

00001 #include "rgb-led-pca9555.h"
00002 
00003 
00004 RgbLed::RgbLed (PCA9555 *ioExt, unsigned int redPin, unsigned int greenPin, unsigned int bluePin): 
00005     extIO(ioExt), ledR(redPin), ledG(greenPin), ledB(bluePin)
00006     {
00007         setColor(OFF);        
00008 }
00009 
00010 void RgbLed::toggle() {
00011     extIO->togglePin(ledR);
00012     extIO->togglePin(ledG);
00013     extIO->togglePin(ledB);
00014 }
00015 
00016 void RgbLed::setColor(Color color) {
00017     switch (color) {
00018         case RED:
00019             extIO->clearPin(ledR);
00020             extIO->setPin(ledG);
00021             extIO->setPin(ledB);
00022             break;
00023         case GREEN:
00024             extIO->setPin(ledR);
00025             extIO->clearPin(ledG);
00026             extIO->setPin(ledB);
00027             break;
00028         case BLUE:
00029             extIO->setPin(ledR);
00030             extIO->setPin(ledG);
00031             extIO->clearPin(ledB);
00032             break;
00033         case CYAN:
00034             extIO->setPin(ledR);
00035             extIO->clearPin(ledG);
00036             extIO->clearPin(ledB);
00037             break;
00038         case MAGENTA:
00039             extIO->clearPin(ledR);
00040             extIO->setPin(ledG);
00041             extIO->clearPin(ledB);
00042             break;
00043         case YELLOW:
00044             extIO->clearPin(ledR);
00045             extIO->clearPin(ledG);
00046             extIO->setPin(ledB);
00047             break;
00048         case WHITE:
00049             extIO->clearPin(ledR);
00050             extIO->clearPin(ledG);
00051             extIO->clearPin(ledB);
00052             break;
00053         case OFF:
00054             extIO->setPin(ledR);
00055             extIO->setPin(ledG);
00056             extIO->setPin(ledB);
00057             break;
00058     }
00059 }
00060 
00061 void RgbLed::setRed(bool ledState) {
00062     if (ledState) {
00063         extIO->clearPin(ledR);
00064     } else {
00065         extIO->setPin(ledR);
00066     }
00067 }
00068 
00069 void RgbLed::setGreen(bool ledState) {
00070     if (ledState) {
00071         extIO->clearPin(ledG);
00072     } else {
00073         extIO->setPin(ledG);
00074     }
00075 }
00076 
00077 void RgbLed::setBlue(bool ledState) {
00078     if (ledState) {
00079         extIO->clearPin(ledB);
00080     } else {
00081         extIO->setPin(ledB);
00082     }
00083 }
00084 
00085 void RgbLed::toggleRed() {
00086     extIO->togglePin(ledR);
00087 }
00088 
00089 void RgbLed::toggleGreen() {
00090     extIO->togglePin(ledG);
00091 }
00092 
00093 void RgbLed::toggleBlue() {
00094     extIO->togglePin(ledB);
00095 }