Feature: Added blinking when fastclock is halted. Added Magenta and Cyan colors.
This commit is contained in:
		@@ -11,7 +11,9 @@ SevenSegmentClock::colorSelection[] = {
 | 
			
		||||
  { Red, "Red", 255, 0, 0 },
 | 
			
		||||
  { Green, "Green", 0, 255, 0 },
 | 
			
		||||
  { White, "White", 255, 255, 255 },
 | 
			
		||||
  { Yellow, "Yellow", 255, 255, 0 }
 | 
			
		||||
  { Yellow, "Yellow", 255, 255, 0 },
 | 
			
		||||
  { Magenta, "Magenta", 255, 0, 255 },
 | 
			
		||||
  { Magenta, "Cyan", 0, 255, 255 }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
int SevenSegmentClock::numberOfSupportedColors = sizeof(SevenSegmentClock::colorSelection) / sizeof(SevenSegmentClock::colorSelection[0]);
 | 
			
		||||
@@ -173,23 +175,27 @@ void SevenSegmentClock::displayDigit(unsigned int digitNum, char charToDisplay)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SevenSegmentClock::displaySeperator(char seperatorCharacter) {
 | 
			
		||||
  displaySeperator(seperatorCharacter, currentColor);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SevenSegmentClock::displaySeperator(char seperatorCharacter, uint32_t color) {
 | 
			
		||||
  //Serial.print("displaySeperator: seperator="); Serial.println(seperatorCharacter);
 | 
			
		||||
  switch (seperatorCharacter) {
 | 
			
		||||
    case '.':
 | 
			
		||||
    case ',':
 | 
			
		||||
      strip->setPixelColor(decimalPointLed, currentColor);
 | 
			
		||||
      strip->setPixelColor(decimalPointLed, color);
 | 
			
		||||
      strip->setPixelColor(clockSeperatorLed1, black);
 | 
			
		||||
      strip->setPixelColor(clockSeperatorLed2, black);
 | 
			
		||||
      break;
 | 
			
		||||
    case ':':
 | 
			
		||||
      strip->setPixelColor(decimalPointLed, black);
 | 
			
		||||
      strip->setPixelColor(clockSeperatorLed1, currentColor);
 | 
			
		||||
      strip->setPixelColor(clockSeperatorLed2, currentColor);
 | 
			
		||||
      strip->setPixelColor(clockSeperatorLed1, color);
 | 
			
		||||
      strip->setPixelColor(clockSeperatorLed2, color);
 | 
			
		||||
      break;
 | 
			
		||||
      case '|':
 | 
			
		||||
        strip->setPixelColor(decimalPointLed, currentColor);
 | 
			
		||||
        strip->setPixelColor(clockSeperatorLed1, currentColor);
 | 
			
		||||
        strip->setPixelColor(clockSeperatorLed2, currentColor);
 | 
			
		||||
        strip->setPixelColor(decimalPointLed, color);
 | 
			
		||||
        strip->setPixelColor(clockSeperatorLed1, color);
 | 
			
		||||
        strip->setPixelColor(clockSeperatorLed2, color);
 | 
			
		||||
        break;
 | 
			
		||||
    default:
 | 
			
		||||
      Serial.print("SevenSegmentClock::displaySeperator: Unknown character to be displayed: ");
 | 
			
		||||
@@ -203,6 +209,14 @@ void SevenSegmentClock::displaySeperator(char seperatorCharacter) {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SevenSegmentClock::displaySeperator(uint32_t color) {
 | 
			
		||||
  strip->setPixelColor(clockSeperatorLed1, color);
 | 
			
		||||
  strip->setPixelColor(clockSeperatorLed2, color);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SevenSegmentClock::displayDecimalPoint(uint32_t color) {
 | 
			
		||||
  strip->setPixelColor(decimalPointLed, color);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SevenSegmentClock::displayTime(int hour, int minute)  {
 | 
			
		||||
  if (clockHour != hour || clockMinute != minute) {
 | 
			
		||||
@@ -236,7 +250,9 @@ void SevenSegmentClock::displayUpdate(void) {
 | 
			
		||||
        displayDigit(1, displayText[1]);
 | 
			
		||||
        displayDigit(2, displayText[2]);
 | 
			
		||||
        displayDigit(3, displayText[3]);
 | 
			
		||||
        displaySeperator(':');
 | 
			
		||||
        //displaySeperator(':');
 | 
			
		||||
        displaySeperator(currentColor);
 | 
			
		||||
        displayDecimalPoint(black);
 | 
			
		||||
        break;
 | 
			
		||||
      case ClockBlinking:
 | 
			
		||||
        if (currentlyBlinkOn) {
 | 
			
		||||
@@ -244,17 +260,15 @@ void SevenSegmentClock::displayUpdate(void) {
 | 
			
		||||
          displayDigit(1, displayText[1]);
 | 
			
		||||
          displayDigit(2, displayText[2]);
 | 
			
		||||
          displayDigit(3, displayText[3]);
 | 
			
		||||
          displaySeperator(':');
 | 
			
		||||
          //displaySeperator(':');
 | 
			
		||||
          displaySeperator(currentColor);
 | 
			
		||||
        } else {
 | 
			
		||||
          displayDigit(0, ' ');
 | 
			
		||||
          displayDigit(1, ' ');
 | 
			
		||||
          displayDigit(2, ' ');
 | 
			
		||||
          displayDigit(3, ' ');
 | 
			
		||||
          displaySeperator(' ');
 | 
			
		||||
        }
 | 
			
		||||
        if (millis() > nextBlinkSwitch_ms) {
 | 
			
		||||
          currentlyBlinkOn = !currentlyBlinkOn;
 | 
			
		||||
          nextBlinkSwitch_ms = millis() + (currentlyBlinkOn ? BLINK_ON_TIME_ms : BLINK_OFF_TIME_ms);
 | 
			
		||||
          //displaySeperator(' ');
 | 
			
		||||
          displaySeperator(black);
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
      case SeperatorBlinking:
 | 
			
		||||
@@ -263,13 +277,13 @@ void SevenSegmentClock::displayUpdate(void) {
 | 
			
		||||
        displayDigit(2, displayText[2]);
 | 
			
		||||
        displayDigit(3, displayText[3]);
 | 
			
		||||
        if (currentlyBlinkOn) {
 | 
			
		||||
          displaySeperator('|');
 | 
			
		||||
          //displaySeperator('|');
 | 
			
		||||
          displaySeperator(currentColor);
 | 
			
		||||
          displayDecimalPoint(currentColor);
 | 
			
		||||
        } else {
 | 
			
		||||
          displaySeperator(' ');
 | 
			
		||||
        }
 | 
			
		||||
        if (millis() > nextBlinkSwitch_ms) {
 | 
			
		||||
          currentlyBlinkOn = !currentlyBlinkOn;
 | 
			
		||||
          nextBlinkSwitch_ms = millis() + (currentlyBlinkOn ? BLINK_ON_TIME_ms : BLINK_OFF_TIME_ms);
 | 
			
		||||
          //displaySeperator(' ');
 | 
			
		||||
          displaySeperator(black);
 | 
			
		||||
          displayDecimalPoint(black);
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
      case DecimalPointBlinking:
 | 
			
		||||
@@ -278,15 +292,30 @@ void SevenSegmentClock::displayUpdate(void) {
 | 
			
		||||
        displayDigit(2, displayText[2]);
 | 
			
		||||
        displayDigit(3, displayText[3]);
 | 
			
		||||
        if (currentlyBlinkOn) {
 | 
			
		||||
          displaySeperator('.');
 | 
			
		||||
          //displaySeperator('.');
 | 
			
		||||
          displayDecimalPoint(currentColor);
 | 
			
		||||
        } else {
 | 
			
		||||
          displaySeperator(' ');
 | 
			
		||||
        }
 | 
			
		||||
        if (millis() > nextBlinkSwitch_ms) {
 | 
			
		||||
          currentlyBlinkOn = !currentlyBlinkOn;
 | 
			
		||||
          nextBlinkSwitch_ms = millis() + (currentlyBlinkOn ? BLINK_ON_TIME_ms : BLINK_OFF_TIME_ms);
 | 
			
		||||
          //displaySeperator(' ');
 | 
			
		||||
          displayDecimalPoint(black);
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
      case DecimalPointColoredBlinking:
 | 
			
		||||
        displayDigit(0, displayText[0]);
 | 
			
		||||
        displayDigit(1, displayText[1]);
 | 
			
		||||
        displayDigit(2, displayText[2]);
 | 
			
		||||
        displayDigit(3, displayText[3]);
 | 
			
		||||
        if (currentlyBlinkOn) {
 | 
			
		||||
          //displaySeperator('.', currentColor);
 | 
			
		||||
          displayDecimalPoint(currentColor);
 | 
			
		||||
        } else {
 | 
			
		||||
          //displaySeperator('.', blinkColor);
 | 
			
		||||
          displayDecimalPoint(blinkColor);
 | 
			
		||||
        }
 | 
			
		||||
        break;
 | 
			
		||||
    }
 | 
			
		||||
    if (millis() > nextBlinkSwitch_ms) {
 | 
			
		||||
      currentlyBlinkOn = !currentlyBlinkOn;
 | 
			
		||||
      nextBlinkSwitch_ms = millis() + (currentlyBlinkOn ? BLINK_ON_TIME_ms : BLINK_OFF_TIME_ms);
 | 
			
		||||
    }
 | 
			
		||||
    strip->show();
 | 
			
		||||
    //Serial.print("Shown: "); Serial.print(displayText[0]); Serial.print(displayText[1]);
 | 
			
		||||
@@ -295,35 +324,68 @@ void SevenSegmentClock::displayUpdate(void) {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint32_t SevenSegmentClock::red, SevenSegmentClock::green, SevenSegmentClock::blue, SevenSegmentClock::white, SevenSegmentClock::black, SevenSegmentClock::yellow;
 | 
			
		||||
uint8_t SevenSegmentClock::LedDataPin;
 | 
			
		||||
Adafruit_NeoPixel *SevenSegmentClock::strip;
 | 
			
		||||
 | 
			
		||||
void SevenSegmentClock::initColors(uint8_t _brightness) {
 | 
			
		||||
  #if 0
 | 
			
		||||
  SevenSegmentClock::red = strip->Color(_brightness, 0, 0);
 | 
			
		||||
  SevenSegmentClock::green = strip->Color(0, _brightness, 0);
 | 
			
		||||
  SevenSegmentClock::blue = strip->Color(0, 0, _brightness);
 | 
			
		||||
  SevenSegmentClock::white = strip->Color(_brightness, _brightness, _brightness);
 | 
			
		||||
  SevenSegmentClock::black = strip->Color(0, 0, 0);
 | 
			
		||||
  SevenSegmentClock::yellow = strip->Color(_brightness, _brightness, 0);
 | 
			
		||||
  SevenSegmentClock::setColor(SevenSegmentClock::getColor()); // reset color to enforce reclaculation
 | 
			
		||||
  #endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SevenSegmentClock::setColor(Color color) {
 | 
			
		||||
  currentColorHandle = color;
 | 
			
		||||
  currentColor = getColorByHandle(color);
 | 
			
		||||
  #if 0
 | 
			
		||||
  switch (currentColorHandle) {
 | 
			
		||||
    case Black: currentColor = SevenSegmentClock::black; break;
 | 
			
		||||
    case Blue: currentColor = SevenSegmentClock::blue; break;
 | 
			
		||||
    case Red: currentColor = SevenSegmentClock::red; break;
 | 
			
		||||
    case Green: currentColor = SevenSegmentClock::green; break;
 | 
			
		||||
    case White: currentColor = SevenSegmentClock::white; break;
 | 
			
		||||
    case Yellow: currentColor = SevenSegmentClock::yellow; break;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SevenSegmentClock::setBlinkColor(Color color) {
 | 
			
		||||
  blinkColorHandle=color;
 | 
			
		||||
  blinkColor=getColorByHandle(color);
 | 
			
		||||
  debug.out(F("setBlinkColor to ")); debug.outln(getColorName(color));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
String SevenSegmentClock::getColorName(Color handle) {
 | 
			
		||||
  for (int i=0; i<numberOfSupportedColors; ++i) {
 | 
			
		||||
    if (colorSelection[i].handle == handle)
 | 
			
		||||
      return colorSelection[i].colorName;
 | 
			
		||||
  }
 | 
			
		||||
  #endif
 | 
			
		||||
  debug.outln(F("ERROR: Unknown color / handle not known"), DEBUG_ERROR);
 | 
			
		||||
  return String(F("ERROR: Unknown color handle"));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SevenSegmentClock::Color SevenSegmentClock::getColorHandle(int index) {
 | 
			
		||||
  return colorSelection[index].handle;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint32_t SevenSegmentClock::getAdjustedStripColor(uint8_t red, uint8_t green, uint8_t blue) {
 | 
			
		||||
  return strip->Color((red * brightness) / 255, (green * brightness) / 255, (blue * brightness) / 255);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint32 SevenSegmentClock::getColorByName(String name) {
 | 
			
		||||
  for (int i=0; i<numberOfSupportedColors; ++i) {
 | 
			
		||||
    if (colorSelection[i].colorName.equals(name)) {
 | 
			
		||||
      return getAdjustedStripColor(colorSelection[i].red, colorSelection[i].green, colorSelection[i].blue);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  debug.out(F("ERROR: Unknown color name "), DEBUG_ERROR);
 | 
			
		||||
  debug.outln(name, DEBUG_ERROR);
 | 
			
		||||
  return 0xffffffff;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint32 SevenSegmentClock::getColorByHandle(Color handle) {
 | 
			
		||||
  for (int i=0; i<numberOfSupportedColors; ++i) {
 | 
			
		||||
    if (colorSelection[i].handle == handle) {
 | 
			
		||||
      return getAdjustedStripColor(colorSelection[i].red, colorSelection[i].green, colorSelection[i].blue);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  debug.outln(F("ERROR: Unknown color handle"), DEBUG_ERROR);
 | 
			
		||||
  debug.out(F("Currently I know about ")); debug.out(numberOfSupportedColors); debug.outln(F(" colors."));
 | 
			
		||||
  return 0xffffffff;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
SevenSegmentClock::Color SevenSegmentClock::getColorHandleByName(String name) {
 | 
			
		||||
  for (int i=0; i<numberOfSupportedColors; ++i) {
 | 
			
		||||
    if (colorSelection[i].colorName.equals(name)) {
 | 
			
		||||
      return colorSelection[i].handle;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  debug.out(F("ERROR: Unknown color name "), DEBUG_ERROR);
 | 
			
		||||
  debug.outln(name, DEBUG_ERROR);
 | 
			
		||||
  return Green; // default
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void SevenSegmentClock::begin(void) {
 | 
			
		||||
@@ -332,9 +394,11 @@ void SevenSegmentClock::begin(void) {
 | 
			
		||||
  Serial.print("Pixels="); Serial.println(PixelCount);
 | 
			
		||||
  SevenSegmentClock::strip = new Adafruit_NeoPixel(PixelCount, LedDataPin, NEO_GRB + NEO_KHZ800);
 | 
			
		||||
  strip->begin();
 | 
			
		||||
  setClockHalted(true);
 | 
			
		||||
  setBrightness(20);
 | 
			
		||||
  setColor(Green);
 | 
			
		||||
  setBlinkColor(Red);
 | 
			
		||||
  black = strip->Color(0, 0, 0);
 | 
			
		||||
  strip->clear();
 | 
			
		||||
  strip->show();
 | 
			
		||||
  initColors(colorSaturation);
 | 
			
		||||
  SevenSegmentClock::currentColor = SevenSegmentClock::blue;
 | 
			
		||||
  SevenSegmentClock::currentColorHandle = SevenSegmentClock::Blue;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -7,88 +7,55 @@
 | 
			
		||||
 | 
			
		||||
// avoid flickering of the display:
 | 
			
		||||
#define TIME_BETWEEN_DISPLAY_UPDATES_ms 100
 | 
			
		||||
#define BLINK_OFF_TIME_ms 200
 | 
			
		||||
#define BLINK_ON_TIME_ms 200
 | 
			
		||||
#define BLINK_OFF_TIME_ms 400
 | 
			
		||||
#define BLINK_ON_TIME_ms 400
 | 
			
		||||
#define defaultLedDataPin 2
 | 
			
		||||
class SevenSegmentClock {
 | 
			
		||||
public:
 | 
			
		||||
  SevenSegmentClock(Debug& _debug, Config& _config):debug(_debug), config(_config) { LedDataPin=defaultLedDataPin; init(); };
 | 
			
		||||
  SevenSegmentClock(Debug& _debug, Config& _config, uint8_t dataPin):debug(_debug), config(_config) { LedDataPin=dataPin; init(); };
 | 
			
		||||
  SevenSegmentClock(Debug& _debug, Config& _config):debug(_debug), config(_config) { LedDataPin=defaultLedDataPin; };
 | 
			
		||||
  SevenSegmentClock(Debug& _debug, Config& _config, uint8_t dataPin):debug(_debug), config(_config) { LedDataPin=dataPin; };
 | 
			
		||||
  void begin(void);
 | 
			
		||||
  void displayTime(int hour, int minute);
 | 
			
		||||
  void displayUpdate(void);
 | 
			
		||||
  //void setClockSpeed(int _msPerModelSecond) { msPerModelSecond = _msPerModelSecond; setClockSpeed("x"); };
 | 
			
		||||
  enum BlinkMode { NoBlinking, ClockBlinking, SeperatorBlinking, DecimalPointBlinking };
 | 
			
		||||
  enum BlinkMode { NoBlinking, ClockBlinking, SeperatorBlinking, DecimalPointBlinking, DecimalPointColoredBlinking };
 | 
			
		||||
  void setBlinkMode(BlinkMode _blinkMode) { blinkMode = _blinkMode; };
 | 
			
		||||
  void setClockHalted(bool halted) { clockHalted = halted; };
 | 
			
		||||
  enum Color { Black, Red, Green, Blue, White, Yellow };
 | 
			
		||||
  enum Color { Black, Red, Green, Blue, White, Yellow, Magenta, Cyan };
 | 
			
		||||
  void setColor(Color color);
 | 
			
		||||
  void setBlinkColor(Color color);
 | 
			
		||||
  Color getColor(void) { return currentColorHandle; };
 | 
			
		||||
  enum ClockDisplayStatus { Off, Booting, Halted, StandardClock, FastClock };
 | 
			
		||||
  void displayDigit(unsigned int digitNum, char c);
 | 
			
		||||
  void displaySeperator(char seperatorCharacter);
 | 
			
		||||
  void setBrightness(uint8_t b) { brightness=b; initColors(b); };
 | 
			
		||||
  void displaySeperator(char seperatorCharacter, uint32_t color);
 | 
			
		||||
  void displaySeperator(uint32_t color);
 | 
			
		||||
  void displayDecimalPoint(uint32_t color);
 | 
			
		||||
  void setBrightness(uint8_t b) { brightness=b; };
 | 
			
		||||
  uint8_t getBrightness(void) { return brightness; };
 | 
			
		||||
  int getNumberSupportedColors(void) { return numberOfSupportedColors; };
 | 
			
		||||
  String getColorName(int index) { return String(colorSelection[index].colorName); };
 | 
			
		||||
  String getColorName(Color handle) {
 | 
			
		||||
    for (int i=0; i<numberOfSupportedColors; ++i) {
 | 
			
		||||
      if (colorSelection[i].handle == handle)
 | 
			
		||||
        return colorSelection[i].colorName;
 | 
			
		||||
    }
 | 
			
		||||
    debug.outln(F("ERROR: Unknown color / handle not known"), DEBUG_ERROR);
 | 
			
		||||
    return String(F("ERROR: Unknown color handle"));
 | 
			
		||||
  };
 | 
			
		||||
  Color getColorHandle(int index) { return colorSelection[index].handle; };
 | 
			
		||||
  uint32_t getAdjustedStripColor(uint8_t red, uint8_t green, uint8_t blue) {
 | 
			
		||||
    return strip->Color((red * brightness) / 255, (green * brightness) / 255, (blue * brightness) / 255);
 | 
			
		||||
  }
 | 
			
		||||
  uint32 getColorByName(String name) {
 | 
			
		||||
    for (int i=0; i<numberOfSupportedColors; ++i) {
 | 
			
		||||
      if (colorSelection[i].colorName.equals(name)) {
 | 
			
		||||
        return getAdjustedStripColor(colorSelection[i].red, colorSelection[i].green, colorSelection[i].blue);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    debug.out(F("ERROR: Unknown color name "), DEBUG_ERROR);
 | 
			
		||||
    debug.outln(name, DEBUG_ERROR);
 | 
			
		||||
    return 0xffffffff;
 | 
			
		||||
  };
 | 
			
		||||
  uint32 getColorByHandle(Color handle) {
 | 
			
		||||
    for (int i=0; i<numberOfSupportedColors; ++i) {
 | 
			
		||||
      if (colorSelection[i].handle == handle) {
 | 
			
		||||
        return getAdjustedStripColor(colorSelection[i].red, colorSelection[i].green, colorSelection[i].blue);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    debug.outln(F("ERROR: Unknown color handle"), DEBUG_ERROR);
 | 
			
		||||
    return 0xffffffff;
 | 
			
		||||
  };
 | 
			
		||||
  Color getColorHandleByName(String name) {
 | 
			
		||||
    for (int i=0; i<numberOfSupportedColors; ++i) {
 | 
			
		||||
      if (colorSelection[i].colorName.equals(name)) {
 | 
			
		||||
        return colorSelection[i].handle;
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    debug.out(F("ERROR: Unknown color name "), DEBUG_ERROR);
 | 
			
		||||
    debug.outln(name, DEBUG_ERROR);
 | 
			
		||||
    return Green; // default
 | 
			
		||||
  };
 | 
			
		||||
  String getColorName(Color handle);
 | 
			
		||||
  Color getColorHandle(int index);
 | 
			
		||||
  uint32_t getAdjustedStripColor(uint8_t red, uint8_t green, uint8_t blue);
 | 
			
		||||
  uint32 getColorByName(String name);
 | 
			
		||||
  uint32 getColorByHandle(Color handle);
 | 
			
		||||
  Color getColorHandleByName(String name);
 | 
			
		||||
private:
 | 
			
		||||
  Debug& debug;
 | 
			
		||||
  Config& config;
 | 
			
		||||
  void init(void) { displayStatus = Off; clockHour=12; clockMinute=34; setClockHalted(true); currentColorHandle = Green; currentColor = green; };
 | 
			
		||||
  static uint8_t LedDataPin;
 | 
			
		||||
  static Adafruit_NeoPixel *strip;
 | 
			
		||||
  static BlinkMode blinkMode;
 | 
			
		||||
  static uint8_t brightness;
 | 
			
		||||
  static uint32_t red, green, blue, white, black, yellow;
 | 
			
		||||
  ClockDisplayStatus displayStatus;
 | 
			
		||||
  int clockHour;
 | 
			
		||||
  int clockMinute;
 | 
			
		||||
  bool clockHalted;
 | 
			
		||||
  Color currentColorHandle;
 | 
			
		||||
  Color blinkColorHandle;
 | 
			
		||||
  uint32_t currentColor;
 | 
			
		||||
  uint32_t blinkColor;
 | 
			
		||||
  uint32_t black;
 | 
			
		||||
  void displaySegment(unsigned int ledAddress, uint32_t color);
 | 
			
		||||
  void initColors(uint8_t _brightness);
 | 
			
		||||
  static struct ColorSelection {
 | 
			
		||||
    Color handle;
 | 
			
		||||
    String colorName;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								src/main.cpp
									
									
									
									
									
								
							@@ -151,10 +151,18 @@ void loop() {
 | 
			
		||||
      if (hours % 4 == 0) sevenSegmentClock.setBlinkMode(SevenSegmentClock::SeperatorBlinking); else sevenSegmentClock.setBlinkMode(SevenSegmentClock::NoBlinking);
 | 
			
		||||
    }
 | 
			
		||||
  } else if (config.getString("appMode").equals(MODE_REALCLOCK)) {
 | 
			
		||||
    sevenSegmentClock.setClockHalted(!fastclock.isActive());
 | 
			
		||||
    sevenSegmentClock.setBlinkMode(SevenSegmentClock::NoBlinking);
 | 
			
		||||
    sevenSegmentClock.displayTime(timeClient.getHours(), timeClient.getMinutes());
 | 
			
		||||
  } else if (config.getString("appMode").equals(MODE_FASTCLOCK)) {
 | 
			
		||||
    sevenSegmentClock.setClockHalted(!fastclock.isActive());
 | 
			
		||||
    if (fastclock.isActive()) {
 | 
			
		||||
      sevenSegmentClock.setBlinkMode(SevenSegmentClock::NoBlinking);
 | 
			
		||||
    } else {
 | 
			
		||||
      sevenSegmentClock.setBlinkMode(SevenSegmentClock::DecimalPointColoredBlinking);
 | 
			
		||||
    }
 | 
			
		||||
    sevenSegmentClock.displayTime(fastclock.getClockHours(), fastclock.getClockMinutes());
 | 
			
		||||
  } else { debug.outln("ERROR: Unknown appMode found.", DEBUG_ERROR); }
 | 
			
		||||
  } else { debug.outln(F("ERROR: Unknown appMode found."), DEBUG_ERROR); }
 | 
			
		||||
 | 
			
		||||
  sevenSegmentClock.displayUpdate();
 | 
			
		||||
  webUI->loop();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user