RGB LED connected to PCA9555
rgb-led-pca9555.cpp@0:95a10b4db9ef, 2014-11-21 (annotated)
- 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?
User | Revision | Line number | New 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 | } |