Tricolor LED driver for any 3 pin tricolor LED.

Dependents:   xivelyboard

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers tricolor.cpp Source File

tricolor.cpp

00001 /* mbed Microcontroller Library
00002  * Copyright (c) 2006-2012 ARM Limited
00003  */
00004 #include "tricolor.h"
00005 
00006 #define ON 255
00007 #define OFF 0
00008 
00009 void Tricolor::Blue(void) {
00010     SetLEDColor(OFF, OFF, ON);
00011 }
00012 
00013 void Tricolor::Green(void) {
00014     SetLEDColor(OFF, ON, OFF);
00015 }
00016 
00017 void Tricolor::LEDOff(void) {
00018     // Off == 1.0
00019     _Red = 1.0;
00020     _Green = 1.0;
00021     _Blue = 1.0;
00022     _on = false;
00023 }
00024 
00025 void Tricolor::LEDOn(void) {
00026     _Red = _RedPwm;
00027     _Green = _GreenPwm;
00028     _Blue = _BluePwm;
00029     _on = true;
00030 }
00031 
00032 void Tricolor::Red(void) {
00033     SetLEDColor(ON, OFF, OFF);
00034 }
00035 
00036 void Tricolor::SetLEDColor(uint8_t red, uint8_t green, uint8_t blue) {
00037     _RedPwm = 1.0 - ((float)red / 255);
00038     _GreenPwm = 1.0 - ((float)green / 255);
00039     _BluePwm = 1.0 - ((float)blue / 255);
00040     
00041     LEDOn();
00042 }
00043 
00044 void Tricolor::Toggle(void) {
00045     if (_on) {
00046         LEDOff();
00047     } else {
00048         LEDOn();
00049     }
00050 }