Library for multi-pin RGB leds that encapsulates three PwmOut objects.

Dependents:   MAX32630FTHR_RGB

Committer:
j3
Date:
Tue Mar 28 20:22:56 2017 +0000
Revision:
0:434f7d7a11d8
Child:
2:ecd3840bb6a7
init commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
j3 0:434f7d7a11d8 1 /******************************************************************************
j3 0:434f7d7a11d8 2 * MIT License
j3 0:434f7d7a11d8 3 *
j3 0:434f7d7a11d8 4 * Copyright (c) 2017 Justin J. Jordan
j3 0:434f7d7a11d8 5 *
j3 0:434f7d7a11d8 6 * Permission is hereby granted, free of charge, to any person obtaining a copy
j3 0:434f7d7a11d8 7 * of this software and associated documentation files (the "Software"), to deal
j3 0:434f7d7a11d8 8 * in the Software without restriction, including without limitation the rights
j3 0:434f7d7a11d8 9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
j3 0:434f7d7a11d8 10 * copies of the Software, and to permit persons to whom the Software is
j3 0:434f7d7a11d8 11 * furnished to do so, subject to the following conditions:
j3 0:434f7d7a11d8 12
j3 0:434f7d7a11d8 13 * The above copyright notice and this permission notice shall be included in all
j3 0:434f7d7a11d8 14 * copies or substantial portions of the Software.
j3 0:434f7d7a11d8 15
j3 0:434f7d7a11d8 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
j3 0:434f7d7a11d8 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
j3 0:434f7d7a11d8 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
j3 0:434f7d7a11d8 19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
j3 0:434f7d7a11d8 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
j3 0:434f7d7a11d8 21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
j3 0:434f7d7a11d8 22 * SOFTWARE.
j3 0:434f7d7a11d8 23 ******************************************************************************/
j3 0:434f7d7a11d8 24
j3 0:434f7d7a11d8 25
j3 0:434f7d7a11d8 26 #include "MultipinRGB.h"
j3 0:434f7d7a11d8 27
j3 0:434f7d7a11d8 28
j3 0:434f7d7a11d8 29 /*****************************************************************************/
j3 0:434f7d7a11d8 30 MultipinRGB::MultipinRGB(PinName red, PinName green, PinName blue, LedLogic_e activeState):
j3 0:434f7d7a11d8 31 m_red(red), m_green(green), m_blue(blue), m_ledActiveState(activeState)
j3 0:434f7d7a11d8 32 {
j3 0:434f7d7a11d8 33 //turn off all leds, use default period
j3 0:434f7d7a11d8 34 if(m_ledActiveState == MultipinRGB::ActiveLow)
j3 0:434f7d7a11d8 35 {
j3 0:434f7d7a11d8 36 m_red.write(1.0F);
j3 0:434f7d7a11d8 37 m_green.write(1.0F);
j3 0:434f7d7a11d8 38 m_blue.write(1.0F);
j3 0:434f7d7a11d8 39 }
j3 0:434f7d7a11d8 40 else
j3 0:434f7d7a11d8 41 {
j3 0:434f7d7a11d8 42 m_red.write(0.0F);
j3 0:434f7d7a11d8 43 m_green.write(0.0F);
j3 0:434f7d7a11d8 44 m_blue.write(0.0F);
j3 0:434f7d7a11d8 45 }
j3 0:434f7d7a11d8 46 }
j3 0:434f7d7a11d8 47
j3 0:434f7d7a11d8 48
j3 0:434f7d7a11d8 49 /*****************************************************************************/
j3 0:434f7d7a11d8 50 MultipinRGB::~MultipinRGB()
j3 0:434f7d7a11d8 51 {
j3 0:434f7d7a11d8 52 //empty block
j3 0:434f7d7a11d8 53 }
j3 0:434f7d7a11d8 54
j3 0:434f7d7a11d8 55
j3 0:434f7d7a11d8 56 /*****************************************************************************/
j3 0:434f7d7a11d8 57 void MultipinRGB::writeRed(const float r)
j3 0:434f7d7a11d8 58 {
j3 0:434f7d7a11d8 59 if(m_ledActiveState == MultipinRGB::ActiveLow)
j3 0:434f7d7a11d8 60 {
j3 0:434f7d7a11d8 61 m_red.write(1.0F - r);
j3 0:434f7d7a11d8 62 }
j3 0:434f7d7a11d8 63 else
j3 0:434f7d7a11d8 64 {
j3 0:434f7d7a11d8 65 m_red.write(r);
j3 0:434f7d7a11d8 66 }
j3 0:434f7d7a11d8 67 }
j3 0:434f7d7a11d8 68
j3 0:434f7d7a11d8 69
j3 0:434f7d7a11d8 70 /*****************************************************************************/
j3 0:434f7d7a11d8 71 void MultipinRGB::writeGreen(const float g)
j3 0:434f7d7a11d8 72 {
j3 0:434f7d7a11d8 73 if(m_ledActiveState == MultipinRGB::ActiveLow)
j3 0:434f7d7a11d8 74 {
j3 0:434f7d7a11d8 75 m_green.write(1.0F - g);
j3 0:434f7d7a11d8 76 }
j3 0:434f7d7a11d8 77 else
j3 0:434f7d7a11d8 78 {
j3 0:434f7d7a11d8 79 m_green.write(g);
j3 0:434f7d7a11d8 80 }
j3 0:434f7d7a11d8 81 }
j3 0:434f7d7a11d8 82
j3 0:434f7d7a11d8 83
j3 0:434f7d7a11d8 84 /*****************************************************************************/
j3 0:434f7d7a11d8 85 void MultipinRGB::writeBlue(const float b)
j3 0:434f7d7a11d8 86 {
j3 0:434f7d7a11d8 87 if(m_ledActiveState == MultipinRGB::ActiveLow)
j3 0:434f7d7a11d8 88 {
j3 0:434f7d7a11d8 89 m_blue.write(1.0F - b);
j3 0:434f7d7a11d8 90 }
j3 0:434f7d7a11d8 91 else
j3 0:434f7d7a11d8 92 {
j3 0:434f7d7a11d8 93 m_blue.write(b);
j3 0:434f7d7a11d8 94 }
j3 0:434f7d7a11d8 95 }
j3 0:434f7d7a11d8 96
j3 0:434f7d7a11d8 97
j3 0:434f7d7a11d8 98 /*****************************************************************************/
j3 0:434f7d7a11d8 99 void MultipinRGB::writeRGB(const float r, const float g, const float b)
j3 0:434f7d7a11d8 100 {
j3 0:434f7d7a11d8 101 if(m_ledActiveState == MultipinRGB::ActiveLow)
j3 0:434f7d7a11d8 102 {
j3 0:434f7d7a11d8 103 m_red.write(1.0F - r);
j3 0:434f7d7a11d8 104 m_green.write(1.0F - g);
j3 0:434f7d7a11d8 105 m_blue.write(1.0F - b);
j3 0:434f7d7a11d8 106 }
j3 0:434f7d7a11d8 107 else
j3 0:434f7d7a11d8 108 {
j3 0:434f7d7a11d8 109 m_red.write(r);
j3 0:434f7d7a11d8 110 m_green.write(g);
j3 0:434f7d7a11d8 111 m_blue.write(b);
j3 0:434f7d7a11d8 112 }
j3 0:434f7d7a11d8 113 }
j3 0:434f7d7a11d8 114
j3 0:434f7d7a11d8 115
j3 0:434f7d7a11d8 116 /*****************************************************************************/
j3 0:434f7d7a11d8 117 void MultipinRGB::setPeriod(const float p)
j3 0:434f7d7a11d8 118 {
j3 0:434f7d7a11d8 119 m_red.period(p);
j3 0:434f7d7a11d8 120 m_green.period(p);
j3 0:434f7d7a11d8 121 m_blue.period(p);
j3 0:434f7d7a11d8 122 }
j3 0:434f7d7a11d8 123
j3 0:434f7d7a11d8 124
j3 0:434f7d7a11d8 125 /*****************************************************************************/
j3 0:434f7d7a11d8 126 float MultipinRGB::readRed()
j3 0:434f7d7a11d8 127 {
j3 0:434f7d7a11d8 128 if(m_ledActiveState == MultipinRGB::ActiveLow)
j3 0:434f7d7a11d8 129 {
j3 0:434f7d7a11d8 130 return (1.0F - m_red.read());
j3 0:434f7d7a11d8 131 }
j3 0:434f7d7a11d8 132 else
j3 0:434f7d7a11d8 133 {
j3 0:434f7d7a11d8 134 return m_red.read();
j3 0:434f7d7a11d8 135 }
j3 0:434f7d7a11d8 136 }
j3 0:434f7d7a11d8 137
j3 0:434f7d7a11d8 138
j3 0:434f7d7a11d8 139 /*****************************************************************************/
j3 0:434f7d7a11d8 140 float MultipinRGB::readGreen()
j3 0:434f7d7a11d8 141 {
j3 0:434f7d7a11d8 142 if(m_ledActiveState == MultipinRGB::ActiveLow)
j3 0:434f7d7a11d8 143 {
j3 0:434f7d7a11d8 144 return (1.0F - m_green.read());
j3 0:434f7d7a11d8 145 }
j3 0:434f7d7a11d8 146 else
j3 0:434f7d7a11d8 147 {
j3 0:434f7d7a11d8 148 return m_green.read();
j3 0:434f7d7a11d8 149 }
j3 0:434f7d7a11d8 150 }
j3 0:434f7d7a11d8 151
j3 0:434f7d7a11d8 152
j3 0:434f7d7a11d8 153 /*****************************************************************************/
j3 0:434f7d7a11d8 154 float MultipinRGB::readBlue()
j3 0:434f7d7a11d8 155 {
j3 0:434f7d7a11d8 156 if(m_ledActiveState == MultipinRGB::ActiveLow)
j3 0:434f7d7a11d8 157 {
j3 0:434f7d7a11d8 158 return (1.0F - m_blue.read());
j3 0:434f7d7a11d8 159 }
j3 0:434f7d7a11d8 160 else
j3 0:434f7d7a11d8 161 {
j3 0:434f7d7a11d8 162 return m_blue.read();
j3 0:434f7d7a11d8 163 }
j3 0:434f7d7a11d8 164 }
j3 0:434f7d7a11d8 165
j3 0:434f7d7a11d8 166
j3 0:434f7d7a11d8 167 /*****************************************************************************/
j3 0:434f7d7a11d8 168 void MultipinRGB::readRGB(float& r, float& g, float& b)
j3 0:434f7d7a11d8 169 {
j3 0:434f7d7a11d8 170 if(m_ledActiveState == MultipinRGB::ActiveLow)
j3 0:434f7d7a11d8 171 {
j3 0:434f7d7a11d8 172 r = (1.0F - m_red.read());
j3 0:434f7d7a11d8 173 g = (1.0F - m_green.read());
j3 0:434f7d7a11d8 174 b = (1.0F - m_blue.read());
j3 0:434f7d7a11d8 175 }
j3 0:434f7d7a11d8 176 else
j3 0:434f7d7a11d8 177 {
j3 0:434f7d7a11d8 178 r = m_red.read();
j3 0:434f7d7a11d8 179 g = m_green.read();
j3 0:434f7d7a11d8 180 b = m_blue.read();
j3 0:434f7d7a11d8 181 }
j3 0:434f7d7a11d8 182 }