Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: LEDRGBStatus.h
- Revision:
- 6:02df5c1108f1
- Parent:
- 5:4136e9141bde
--- a/LEDRGBStatus.h Wed Apr 08 12:36:17 2020 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,222 +0,0 @@
-/* mbedbug @version 0.x
-@link https://github.com/KabukiStarship/mbedbug.git
-@file /led_rgb_status.h
-@author Cale McCollough <https://cale-mccollough.github.io>
-@license Copyright 2016-20 (C) Kabuki Starship <kabukistarship.com>; all rights
-reserved (R). This Source Code Form is subject to the terms of the Mozilla
-Public License, v. 2.0. If a copy of the MPL was not distributed with this file,
-You can obtain one at <https://mozilla.org/MPL/2.0/>. */
-#ifndef _mbedBug_RGBStatusLED_header
-#define _mbedBug_RGBStatusLED_header
-#include "mbed.h"
-#include <stdint.h>
-#define CREATE_RGB_STATUS_LED \
-static RGBStatusLED<0,1> Status (RED_LED, GREEN_LED, BLUE_LED);\
-
-#define Assert(statement, message) {\
- if (!(statement)) {\
- printf("Assert: %s\r\n%s, line %d\r\n", #message, __FILE__, __LINE__)\
- Status.HandleAssert ()\
- while (true)\
- }\
-}
-
-namespace Primary {
-
-typedef enum {
- ColorPresetBlack = 0,
- ColorPresetRed = 1,
- ColorPresetYellow = 2,
- ColorPresetGreen = 3,
- cColorPresetCyan = 4,
- ColorPresetBlue = 5,
- ColorPresetMagenta = 6,
- cColorPresetWhite = 7
-} Color;
-} //< namespace Primary
-
-namespace mbedbug {
-
-/* The onboard mbed RGB LED.
-Some boards have PWM on the RGB LED, some don't. This class uses DigitalOut(s).
-There are 8 potential combinations of Color without PWM (@see Wiki
-"Color Space").
-
-@code
-RGBStatusLED<0, 1> stausLED (RED_LED, GREEN_LED, BLUE_LED); //< Use <0, 1> if you're LED is active low.
-RGBStatusLED<1, 0> stausLED (p0, p1, p2); //< Use <0, 1> if you're LED is active high.
-
-statusLED.SetColorA (Color::);
-
-@endcode
-*/
-template <int On, int Off>
-class RGBStatusLED {
- public:
-
- enum {
- BrightnessDefault = 128
- };
-
- float Frequency; //< The Frequency of the blinking.
-
- DigitalOut Red, //< ColorPresetRed LED on the mbed board.
- Green, //< ColorPresetGreen LED on the mbed board.
- Blue; //< ColorPresetBlue LED on the mbed board.
-
- Ticker Blinker; //< Ticker for blinking the LEDs.
-
- uint8_t Color, //< The current Color.
- ColorA, //< Blink Color A.
- ColorB; //< Blink Color B.
-
- /* Simple constructor. */
- RGBStatusLED (PinName RedLED, PinName GreenLED, PinName BlueLED, float BinkDelay = 0.2f)
- : Frequency (Frequency),
- Red (RedLED),
- Green (GreenLED),
- Blue (BlueLED),
- Blinker (),
- Color (Color::ColorPresetBlack),
- ColorA (Color::ColorPresetBlack),
- ColorB (Color::ColorPresetBlack) {
- Red = Green = Blue = 1;
- }
-
- /* Updates the RGB status LED "frame": Color. */
- void Update () {
- switch (Color) {
- case Color::ColorPresetBlack : Red = 1; Green = 1; Blue = 1; return;
- case Color::ColorPresetRed : Red = 0; Green = 1; Blue = 1; return;
- case Color::ColorPresetYellow : Red = 0; Green = 0; Blue = 1; return;
- case Color::ColorPresetGreen : Red = 1; Green = 0; Blue = 1; return;
- case Color::cColorPresetCyan : Red = 1; Green = 0; Blue = 0; return;
- case Color::ColorPresetBlue : Red = 1; Green = 1; Blue = 0; return;
- case Color::ColorPresetMagenta: Red = 0; Green = 1; Blue = 0; return;
- case Color::cColorPresetWhite : Red = 0; Green = 0; Blue = 0; return;
- }
- }
-
- /* Sets ColorA. */
- void SetColorA (Primary::Color Value) {
- ColorA = Value;
- }
-
- /* Sets ColorB. */
- void SetColorB (Primary::Color Value) {
- ColorB = Value;
- }
-
- /* Turns off the Blinker. */
- void TurnOff () {
- Red = Green = Blue = 1;
- }
-
- /* Turns on the Blinker. */
- void TurnOn () {
- Color = ColorA;
- Update ();
- }
-
- /* Sets the Color of the Blinker. */
- void ColorsSet (Primary::Color ColorA, Primary::Color ColorB = Primary::ColorPresetBlack)
- {
- ColorA = ColorA;
- ColorB = ColorB;
- }
-
- void FlashRedBlue ()
- /* Starts flashing Red and Blue lights. */
- {
- ColorA = Primary::ColorPresetRed;
- ColorB = Primary::ColorPresetBlue;
- StartBlinking ();
- }
-
- void StartBlinking ()
- /* Starts blinking. */
- {
- Blinker.attach (this, &RGBStatusLED::Blink, Frequency);
- Color = ColorA;
- Update ();
- }
-
- /* Stops blinking and turns off the LED. */
- void StopBlinking () {
- TurnOff ();
- Blinker.detach ();
- Color = Primary::ColorPresetBlack;
- Update ();
- }
-
- /* Starts blinking and turns on Color A. */
- void StopBlinkingA () {
- Color = ColorA;
- Blinker.detach ();
- }
-
- /* Starts blinking and turns on Color B. */
- void StopBlinkingB () {
- Color = ColorB;
- Blinker.detach ();
- }
-
-
- /* Sets the Blink Frequency. */
- void FrequencySet (float Value) {
- Frequency = Value;
- Blinker.attach (this, &RGBStatusLED::Blink, Value);
- }
-
- /* Handler for the Assert macro. */
- void HandleAssert () {
- FlashRedBlue ()
- }
-
- private:
-
- /* Blinks the status RGB LED on the mbed board between ColorA and ColorB. */
- void Blink () {
- Color = (Color == ColorA) ? ColorB : ColorA;
- Update ();
- }
-};
-}
-
-// _D_e_m_o_____________________________________________________________________
-
-#if 0 //< Set to non-zero to run this demo.
-
-using namespace mbedbug;
-
-RGBStatusLED Status (LED_RED, LED_GREEN, LED_BLUE);
-InterruptIn Switch3 (SW3);
-
-/* Interrupt handler for SW2. */
-void SW3Handler () {
- static int counter = 16;
-
- if (++counter > 15) {
- Status.FlashRedBlue (); counter = 0;
- }
- else if (counter & 1) {
- Status.StopBlinking ();
- } else {
- Status.SetColorA ((Primary::Color)(counter >> 1));
- Status.SetColorB (Primary::ColorPresetBlack);
- Status.StartBlinking ();
- }
-}
-
-int main() {
- printf ("\r\nTesting mbed Utils.\r\n");
- PrintLine ('-');
-
- Switch3.rise (&SW3Handler);
- //Status.StartBlinking ();
-
- while (true);
-}
-#endif //< #if _Demo
-
-#endif