Tricolor LED driver for any 3 pin tricolor LED.
tricolor.cpp@0:80ebb233e295, 2013-05-24 (annotated)
- Committer:
- fossum_13
- Date:
- Fri May 24 19:09:49 2013 +0000
- Revision:
- 0:80ebb233e295
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
fossum_13 | 0:80ebb233e295 | 1 | /* mbed Microcontroller Library |
fossum_13 | 0:80ebb233e295 | 2 | * Copyright (c) 2006-2012 ARM Limited |
fossum_13 | 0:80ebb233e295 | 3 | */ |
fossum_13 | 0:80ebb233e295 | 4 | #include "tricolor.h" |
fossum_13 | 0:80ebb233e295 | 5 | |
fossum_13 | 0:80ebb233e295 | 6 | #define ON 255 |
fossum_13 | 0:80ebb233e295 | 7 | #define OFF 0 |
fossum_13 | 0:80ebb233e295 | 8 | |
fossum_13 | 0:80ebb233e295 | 9 | void Tricolor::Blue(void) { |
fossum_13 | 0:80ebb233e295 | 10 | SetLEDColor(OFF, OFF, ON); |
fossum_13 | 0:80ebb233e295 | 11 | } |
fossum_13 | 0:80ebb233e295 | 12 | |
fossum_13 | 0:80ebb233e295 | 13 | void Tricolor::Green(void) { |
fossum_13 | 0:80ebb233e295 | 14 | SetLEDColor(OFF, ON, OFF); |
fossum_13 | 0:80ebb233e295 | 15 | } |
fossum_13 | 0:80ebb233e295 | 16 | |
fossum_13 | 0:80ebb233e295 | 17 | void Tricolor::LEDOff(void) { |
fossum_13 | 0:80ebb233e295 | 18 | // Off == 1.0 |
fossum_13 | 0:80ebb233e295 | 19 | _Red = 1.0; |
fossum_13 | 0:80ebb233e295 | 20 | _Green = 1.0; |
fossum_13 | 0:80ebb233e295 | 21 | _Blue = 1.0; |
fossum_13 | 0:80ebb233e295 | 22 | _on = false; |
fossum_13 | 0:80ebb233e295 | 23 | } |
fossum_13 | 0:80ebb233e295 | 24 | |
fossum_13 | 0:80ebb233e295 | 25 | void Tricolor::LEDOn(void) { |
fossum_13 | 0:80ebb233e295 | 26 | _Red = _RedPwm; |
fossum_13 | 0:80ebb233e295 | 27 | _Green = _GreenPwm; |
fossum_13 | 0:80ebb233e295 | 28 | _Blue = _BluePwm; |
fossum_13 | 0:80ebb233e295 | 29 | _on = true; |
fossum_13 | 0:80ebb233e295 | 30 | } |
fossum_13 | 0:80ebb233e295 | 31 | |
fossum_13 | 0:80ebb233e295 | 32 | void Tricolor::Red(void) { |
fossum_13 | 0:80ebb233e295 | 33 | SetLEDColor(ON, OFF, OFF); |
fossum_13 | 0:80ebb233e295 | 34 | } |
fossum_13 | 0:80ebb233e295 | 35 | |
fossum_13 | 0:80ebb233e295 | 36 | void Tricolor::SetLEDColor(uint8_t red, uint8_t green, uint8_t blue) { |
fossum_13 | 0:80ebb233e295 | 37 | _RedPwm = 1.0 - ((float)red / 255); |
fossum_13 | 0:80ebb233e295 | 38 | _GreenPwm = 1.0 - ((float)green / 255); |
fossum_13 | 0:80ebb233e295 | 39 | _BluePwm = 1.0 - ((float)blue / 255); |
fossum_13 | 0:80ebb233e295 | 40 | |
fossum_13 | 0:80ebb233e295 | 41 | LEDOn(); |
fossum_13 | 0:80ebb233e295 | 42 | } |
fossum_13 | 0:80ebb233e295 | 43 | |
fossum_13 | 0:80ebb233e295 | 44 | void Tricolor::Toggle(void) { |
fossum_13 | 0:80ebb233e295 | 45 | if (_on) { |
fossum_13 | 0:80ebb233e295 | 46 | LEDOff(); |
fossum_13 | 0:80ebb233e295 | 47 | } else { |
fossum_13 | 0:80ebb233e295 | 48 | LEDOn(); |
fossum_13 | 0:80ebb233e295 | 49 | } |
fossum_13 | 0:80ebb233e295 | 50 | } |