Tricolor LED driver for any 3 pin tricolor LED.

Dependents:   xivelyboard

Committer:
fossum_13
Date:
Fri May 24 19:09:49 2013 +0000
Revision:
0:80ebb233e295
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew 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 }