RGB LED connected to PCA9555

Dependents:   Telliskivi2_2014

Committer:
Reiko
Date:
Fri Nov 21 18:25:01 2014 +0000
Revision:
0:95a10b4db9ef
RGB LED connected to PCA9555

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Reiko 0:95a10b4db9ef 1 #include "rgb-led-pca9555.h"
Reiko 0:95a10b4db9ef 2
Reiko 0:95a10b4db9ef 3
Reiko 0:95a10b4db9ef 4 RgbLed::RgbLed (PCA9555 *ioExt, unsigned int redPin, unsigned int greenPin, unsigned int bluePin):
Reiko 0:95a10b4db9ef 5 extIO(ioExt), ledR(redPin), ledG(greenPin), ledB(bluePin)
Reiko 0:95a10b4db9ef 6 {
Reiko 0:95a10b4db9ef 7 setColor(OFF);
Reiko 0:95a10b4db9ef 8 }
Reiko 0:95a10b4db9ef 9
Reiko 0:95a10b4db9ef 10 void RgbLed::toggle() {
Reiko 0:95a10b4db9ef 11 extIO->togglePin(ledR);
Reiko 0:95a10b4db9ef 12 extIO->togglePin(ledG);
Reiko 0:95a10b4db9ef 13 extIO->togglePin(ledB);
Reiko 0:95a10b4db9ef 14 }
Reiko 0:95a10b4db9ef 15
Reiko 0:95a10b4db9ef 16 void RgbLed::setColor(Color color) {
Reiko 0:95a10b4db9ef 17 switch (color) {
Reiko 0:95a10b4db9ef 18 case RED:
Reiko 0:95a10b4db9ef 19 extIO->clearPin(ledR);
Reiko 0:95a10b4db9ef 20 extIO->setPin(ledG);
Reiko 0:95a10b4db9ef 21 extIO->setPin(ledB);
Reiko 0:95a10b4db9ef 22 break;
Reiko 0:95a10b4db9ef 23 case GREEN:
Reiko 0:95a10b4db9ef 24 extIO->setPin(ledR);
Reiko 0:95a10b4db9ef 25 extIO->clearPin(ledG);
Reiko 0:95a10b4db9ef 26 extIO->setPin(ledB);
Reiko 0:95a10b4db9ef 27 break;
Reiko 0:95a10b4db9ef 28 case BLUE:
Reiko 0:95a10b4db9ef 29 extIO->setPin(ledR);
Reiko 0:95a10b4db9ef 30 extIO->setPin(ledG);
Reiko 0:95a10b4db9ef 31 extIO->clearPin(ledB);
Reiko 0:95a10b4db9ef 32 break;
Reiko 0:95a10b4db9ef 33 case CYAN:
Reiko 0:95a10b4db9ef 34 extIO->setPin(ledR);
Reiko 0:95a10b4db9ef 35 extIO->clearPin(ledG);
Reiko 0:95a10b4db9ef 36 extIO->clearPin(ledB);
Reiko 0:95a10b4db9ef 37 break;
Reiko 0:95a10b4db9ef 38 case MAGENTA:
Reiko 0:95a10b4db9ef 39 extIO->clearPin(ledR);
Reiko 0:95a10b4db9ef 40 extIO->setPin(ledG);
Reiko 0:95a10b4db9ef 41 extIO->clearPin(ledB);
Reiko 0:95a10b4db9ef 42 break;
Reiko 0:95a10b4db9ef 43 case YELLOW:
Reiko 0:95a10b4db9ef 44 extIO->clearPin(ledR);
Reiko 0:95a10b4db9ef 45 extIO->clearPin(ledG);
Reiko 0:95a10b4db9ef 46 extIO->setPin(ledB);
Reiko 0:95a10b4db9ef 47 break;
Reiko 0:95a10b4db9ef 48 case WHITE:
Reiko 0:95a10b4db9ef 49 extIO->clearPin(ledR);
Reiko 0:95a10b4db9ef 50 extIO->clearPin(ledG);
Reiko 0:95a10b4db9ef 51 extIO->clearPin(ledB);
Reiko 0:95a10b4db9ef 52 break;
Reiko 0:95a10b4db9ef 53 case OFF:
Reiko 0:95a10b4db9ef 54 extIO->setPin(ledR);
Reiko 0:95a10b4db9ef 55 extIO->setPin(ledG);
Reiko 0:95a10b4db9ef 56 extIO->setPin(ledB);
Reiko 0:95a10b4db9ef 57 break;
Reiko 0:95a10b4db9ef 58 }
Reiko 0:95a10b4db9ef 59 }
Reiko 0:95a10b4db9ef 60
Reiko 0:95a10b4db9ef 61 void RgbLed::setRed(bool ledState) {
Reiko 0:95a10b4db9ef 62 if (ledState) {
Reiko 0:95a10b4db9ef 63 extIO->clearPin(ledR);
Reiko 0:95a10b4db9ef 64 } else {
Reiko 0:95a10b4db9ef 65 extIO->setPin(ledR);
Reiko 0:95a10b4db9ef 66 }
Reiko 0:95a10b4db9ef 67 }
Reiko 0:95a10b4db9ef 68
Reiko 0:95a10b4db9ef 69 void RgbLed::setGreen(bool ledState) {
Reiko 0:95a10b4db9ef 70 if (ledState) {
Reiko 0:95a10b4db9ef 71 extIO->clearPin(ledG);
Reiko 0:95a10b4db9ef 72 } else {
Reiko 0:95a10b4db9ef 73 extIO->setPin(ledG);
Reiko 0:95a10b4db9ef 74 }
Reiko 0:95a10b4db9ef 75 }
Reiko 0:95a10b4db9ef 76
Reiko 0:95a10b4db9ef 77 void RgbLed::setBlue(bool ledState) {
Reiko 0:95a10b4db9ef 78 if (ledState) {
Reiko 0:95a10b4db9ef 79 extIO->clearPin(ledB);
Reiko 0:95a10b4db9ef 80 } else {
Reiko 0:95a10b4db9ef 81 extIO->setPin(ledB);
Reiko 0:95a10b4db9ef 82 }
Reiko 0:95a10b4db9ef 83 }
Reiko 0:95a10b4db9ef 84
Reiko 0:95a10b4db9ef 85 void RgbLed::toggleRed() {
Reiko 0:95a10b4db9ef 86 extIO->togglePin(ledR);
Reiko 0:95a10b4db9ef 87 }
Reiko 0:95a10b4db9ef 88
Reiko 0:95a10b4db9ef 89 void RgbLed::toggleGreen() {
Reiko 0:95a10b4db9ef 90 extIO->togglePin(ledG);
Reiko 0:95a10b4db9ef 91 }
Reiko 0:95a10b4db9ef 92
Reiko 0:95a10b4db9ef 93 void RgbLed::toggleBlue() {
Reiko 0:95a10b4db9ef 94 extIO->togglePin(ledB);
Reiko 0:95a10b4db9ef 95 }