Completed Cronixie Basic Time Display
set nixie time with &NX=HHMMSS set nixie numbers with &NX=123456 Replaced warls negative offset checkbox with ability to enter negative numbers getPixelColor now works with cronixie driver Added Cronixie binary
This commit is contained in:
parent
7590e77153
commit
cc9046be52
Binary file not shown.
@ -1946,23 +1946,24 @@ void WS2812FX::setPixelColor(uint16_t i, uint8_t r, uint8_t g, uint8_t b, uint8_
|
|||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
if(i>6)return;
|
if(i>6)return;
|
||||||
uint8_t o = 20*i;
|
uint8_t o = 10*i;
|
||||||
for (int j=o; j< o+19; j++)
|
for (int j=o; j< o+19; j++)
|
||||||
{
|
{
|
||||||
setPixelColorRaw(j,0,0,0,0);
|
setPixelColorRaw(j,0,0,0,0);
|
||||||
}
|
}
|
||||||
switch(_cronixieDigits[i])
|
switch(_cronixieDigits[i])
|
||||||
{
|
{
|
||||||
case 0: setPixelColorRaw(o+5,r,g,b,w); setPixelColorRaw(o+15,r,g,b,w); break;
|
case 0: setPixelColorRaw(o+5,r,g,b,w); break;
|
||||||
case 1: setPixelColorRaw(o+0,r,g,b,w); setPixelColorRaw(o+10,r,g,b,w); break;
|
case 1: setPixelColorRaw(o+0,r,g,b,w); break;
|
||||||
case 2: setPixelColorRaw(o+6,r,g,b,w); setPixelColorRaw(o+16,r,g,b,w); break;
|
case 2: setPixelColorRaw(o+6,r,g,b,w); break;
|
||||||
case 3: setPixelColorRaw(o+1,r,g,b,w); setPixelColorRaw(o+11,r,g,b,w); break;
|
case 3: setPixelColorRaw(o+1,r,g,b,w); break;
|
||||||
case 4: setPixelColorRaw(o+7,r,g,b,w); setPixelColorRaw(o+17,r,g,b,w); break;
|
case 4: setPixelColorRaw(o+7,r,g,b,w); break;
|
||||||
case 5: setPixelColorRaw(o+2,r,g,b,w); setPixelColorRaw(o+12,r,g,b,w); break;
|
case 5: setPixelColorRaw(o+2,r,g,b,w); break;
|
||||||
case 6: setPixelColorRaw(o+8,r,g,b,w); setPixelColorRaw(o+18,r,g,b,w); break;
|
case 6: setPixelColorRaw(o+8,r,g,b,w); break;
|
||||||
case 7: setPixelColorRaw(o+3,r,g,b,w); setPixelColorRaw(o+13,r,g,b,w); break;
|
case 7: setPixelColorRaw(o+3,r,g,b,w); break;
|
||||||
case 8: setPixelColorRaw(o+9,r,g,b,w); setPixelColorRaw(o+19,r,g,b,w); break;
|
case 8: setPixelColorRaw(o+9,r,g,b,w); break;
|
||||||
case 9: setPixelColorRaw(o+4,r,g,b,w); setPixelColorRaw(o+14,r,g,b,w); break;
|
case 9: setPixelColorRaw(o+4,r,g,b,w); break;
|
||||||
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1979,6 +1980,25 @@ void WS2812FX::setPixelColor(uint16_t i, uint32_t c)
|
|||||||
|
|
||||||
uint32_t WS2812FX::getPixelColor(uint16_t i)
|
uint32_t WS2812FX::getPixelColor(uint16_t i)
|
||||||
{
|
{
|
||||||
|
if (_cronixieMode)
|
||||||
|
{
|
||||||
|
if(i>6)return 0;
|
||||||
|
uint8_t o = 10*i;
|
||||||
|
switch(_cronixieDigits[i])
|
||||||
|
{
|
||||||
|
case 0: i=o+5; break;
|
||||||
|
case 1: i=o+0; break;
|
||||||
|
case 2: i=o+6; break;
|
||||||
|
case 3: i=o+1; break;
|
||||||
|
case 4: i=o+7; break;
|
||||||
|
case 5: i=o+2; break;
|
||||||
|
case 6: i=o+8; break;
|
||||||
|
case 7: i=o+3; break;
|
||||||
|
case 8: i=o+9; break;
|
||||||
|
case 9: i=o+4; break;
|
||||||
|
default: return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
#ifdef RGBW
|
#ifdef RGBW
|
||||||
RgbwColor lColor = NeoPixelBrightnessBus::GetPixelColor(i);
|
RgbwColor lColor = NeoPixelBrightnessBus::GetPixelColor(i);
|
||||||
return lColor.W*16777216 + lColor.R*65536 + lColor.G*256 + lColor.B;
|
return lColor.W*16777216 + lColor.R*65536 + lColor.G*256 + lColor.B;
|
||||||
|
@ -102,7 +102,7 @@
|
|||||||
Current local time is <span class="times">unknown</span> <br>
|
Current local time is <span class="times">unknown</span> <br>
|
||||||
<h3>Advanced</h3>
|
<h3>Advanced</h3>
|
||||||
Default overlay ID: <input name="OLDEF" type="number" min="0" max="255" required> <br>
|
Default overlay ID: <input name="OLDEF" type="number" min="0" max="255" required> <br>
|
||||||
WARLS offset: <input name="WOFFS" type="number" min="0" max="255" required> negative <input type="checkbox" name="WOFFN"><br>
|
WARLS offset: <input name="WOFFS" type="number" min="-255" max="255" required><br>
|
||||||
<h3>Security</h3>
|
<h3>Security</h3>
|
||||||
OTA locked: <input type="checkbox" name="NOOTA"> <br>
|
OTA locked: <input type="checkbox" name="NOOTA"> <br>
|
||||||
Passphrase: <input type="password" name="OPASS" maxlength="32"> <br>
|
Passphrase: <input type="password" name="OPASS" maxlength="32"> <br>
|
||||||
|
@ -101,7 +101,7 @@ Get time from NTP server: <input type="checkbox" name="NTPON"> <br>
|
|||||||
Current local time is <span class="times">unknown</span> <br>
|
Current local time is <span class="times">unknown</span> <br>
|
||||||
<h3>Advanced</h3>
|
<h3>Advanced</h3>
|
||||||
Default overlay ID: <input name="OLDEF" type="number" min="0" max="255" required> <br>
|
Default overlay ID: <input name="OLDEF" type="number" min="0" max="255" required> <br>
|
||||||
WARLS offset: <input name="WOFFS" type="number" min="0" max="255" required> negative <input type="checkbox" name="WOFFN"><br>
|
WARLS offset: <input name="WOFFS" type="number" min="-255" max="255" required><br>
|
||||||
<h3>Security</h3>
|
<h3>Security</h3>
|
||||||
OTA locked: <input type="checkbox" name="NOOTA"> <br>
|
OTA locked: <input type="checkbox" name="NOOTA"> <br>
|
||||||
Passphrase: <input type="password" name="OPASS" maxlength="32"> <br>
|
Passphrase: <input type="password" name="OPASS" maxlength="32"> <br>
|
||||||
|
@ -25,42 +25,25 @@
|
|||||||
#include "WS2812FX.h"
|
#include "WS2812FX.h"
|
||||||
|
|
||||||
//version in format yymmddb (b = daily build)
|
//version in format yymmddb (b = daily build)
|
||||||
#define VERSION 1712141
|
#define VERSION 1712152
|
||||||
|
|
||||||
|
//AP and OTA default passwords (change them!)
|
||||||
|
String appass = "wled1234";
|
||||||
|
String otapass = "wledota";
|
||||||
|
|
||||||
//If you have an RGBW strip, uncomment first line in WS2812FX.h!
|
//If you have an RGBW strip, uncomment first line in WS2812FX.h!
|
||||||
|
|
||||||
//to toggle usb serial debug (un)comment following line
|
//overlays, needed for clocks etc.
|
||||||
//#define DEBUG
|
//#define USEOVERLAYS
|
||||||
|
|
||||||
|
//support for the CRONIXIE clock by Diamex
|
||||||
|
#define CRONIXIE
|
||||||
|
|
||||||
//spiffs FS only useful for debug
|
//spiffs FS only useful for debug
|
||||||
//#define USEFS
|
//#define USEFS
|
||||||
|
|
||||||
//overlays, needed for clocks etc.
|
//to toggle usb serial debug (un)comment following line
|
||||||
#define USEOVERLAYS
|
//#define DEBUG
|
||||||
|
|
||||||
//support for the CRONIXIE clock by Diamex
|
|
||||||
//#define CRONIXIE
|
|
||||||
|
|
||||||
#ifdef USEFS
|
|
||||||
#include <FS.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
#define DEBUG_PRINT(x) Serial.print (x)
|
|
||||||
#define DEBUG_PRINTLN(x) Serial.println (x)
|
|
||||||
#define DEBUG_PRINTF(x) Serial.printf (x)
|
|
||||||
#else
|
|
||||||
#define DEBUG_PRINT(x)
|
|
||||||
#define DEBUG_PRINTLN(x)
|
|
||||||
#define DEBUG_PRINTF(x)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//eeprom Version code, enables default settings instead of 0 init on update
|
|
||||||
#define EEPVER 3
|
|
||||||
//0 -> old version, default
|
|
||||||
//1 -> 0.4p 1711272 and up
|
|
||||||
//2 -> 0.4p 1711302 and up
|
|
||||||
//3 -> 0.4 1712121 and up
|
|
||||||
|
|
||||||
//Hardware-settings (only changeble via code)
|
//Hardware-settings (only changeble via code)
|
||||||
#define LEDCOUNT 255 //maximum, exact count set-able via settings
|
#define LEDCOUNT 255 //maximum, exact count set-able via settings
|
||||||
@ -70,10 +53,6 @@ uint8_t auxPin = 15; //use e.g. for external relay
|
|||||||
uint8_t auxDefaultState = 0; //0: input 1: high 2: low
|
uint8_t auxDefaultState = 0; //0: input 1: high 2: low
|
||||||
uint8_t auxTriggeredState = 0; //0: input 1: high 2: low
|
uint8_t auxTriggeredState = 0; //0: input 1: high 2: low
|
||||||
|
|
||||||
//AP and OTA default passwords (change them!)
|
|
||||||
String appass = "wled1234";
|
|
||||||
String otapass = "wledota";
|
|
||||||
|
|
||||||
TimeChangeRule CEST = {"CEST", Last, Sun, Mar, 2, 120}; //Central European Summer Time
|
TimeChangeRule CEST = {"CEST", Last, Sun, Mar, 2, 120}; //Central European Summer Time
|
||||||
TimeChangeRule CET = {"CET ", Last, Sun, Oct, 3, 60}; //Central European Standard Time
|
TimeChangeRule CET = {"CET ", Last, Sun, Oct, 3, 60}; //Central European Standard Time
|
||||||
Timezone TZ(CEST, CET);
|
Timezone TZ(CEST, CET);
|
||||||
@ -83,14 +62,18 @@ time_t local;
|
|||||||
//cronixie defaults
|
//cronixie defaults
|
||||||
#ifdef CRONIXIE
|
#ifdef CRONIXIE
|
||||||
#undef LEDCOUNT
|
#undef LEDCOUNT
|
||||||
#define LEDCOUNT 120
|
#define LEDCOUNT 60
|
||||||
#undef MAXDIRECT
|
#undef MAXDIRECT
|
||||||
#define MAXDIRECT 48
|
#define MAXDIRECT 48
|
||||||
uint8_t ledcount = 6;
|
uint8_t ledcount = 6;
|
||||||
String apssid = "CRONIXIE-AP";
|
String apssid = "CRONIXIE-AP";
|
||||||
String alexaInvocationName = "Clock";
|
String alexaInvocationName = "Clock";
|
||||||
long cronixieRefreshMs = 99;
|
char cronixieDefault[] = "HHMMSS";
|
||||||
|
long cronixieRefreshMs = 497;
|
||||||
unsigned long cronixieRefreshedTime;
|
unsigned long cronixieRefreshedTime;
|
||||||
|
byte dP[]{0,0,0,0,0,0};
|
||||||
|
bool cronixieUseAMPM = false;
|
||||||
|
boolean ntpEnabled = true;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//Default CONFIG
|
//Default CONFIG
|
||||||
@ -134,7 +117,9 @@ uint16_t udpPort = 21324;
|
|||||||
uint8_t effectDefault = 0;
|
uint8_t effectDefault = 0;
|
||||||
uint8_t effectSpeedDefault = 75;
|
uint8_t effectSpeedDefault = 75;
|
||||||
//NTP stuff
|
//NTP stuff
|
||||||
|
#ifndef CRONIXIE
|
||||||
boolean ntpEnabled = false;
|
boolean ntpEnabled = false;
|
||||||
|
#endif
|
||||||
IPAddress ntpServerIP;
|
IPAddress ntpServerIP;
|
||||||
const char* ntpServerName = "pool.ntp.org";
|
const char* ntpServerName = "pool.ntp.org";
|
||||||
//custom chase
|
//custom chase
|
||||||
@ -236,7 +221,25 @@ WiFiUDP ntpUdp;
|
|||||||
|
|
||||||
WS2812FX strip = WS2812FX(LEDCOUNT);
|
WS2812FX strip = WS2812FX(LEDCOUNT);
|
||||||
|
|
||||||
|
//eeprom Version code, enables default settings instead of 0 init on update
|
||||||
|
#define EEPVER 3
|
||||||
|
//0 -> old version, default
|
||||||
|
//1 -> 0.4p 1711272 and up
|
||||||
|
//2 -> 0.4p 1711302 and up
|
||||||
|
//3 -> 0.4 1712121 and up
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
#define DEBUG_PRINT(x) Serial.print (x)
|
||||||
|
#define DEBUG_PRINTLN(x) Serial.println (x)
|
||||||
|
#define DEBUG_PRINTF(x) Serial.printf (x)
|
||||||
|
#else
|
||||||
|
#define DEBUG_PRINT(x)
|
||||||
|
#define DEBUG_PRINTLN(x)
|
||||||
|
#define DEBUG_PRINTF(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef USEFS
|
#ifdef USEFS
|
||||||
|
#include <FS.h>;
|
||||||
File fsUploadFile;
|
File fsUploadFile;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -128,8 +128,7 @@ String getSettings()
|
|||||||
resp += ds + "NSALX" + c + alexaNotify +";";
|
resp += ds + "NSALX" + c + alexaNotify +";";
|
||||||
resp += dg + "(\"times\")[0]" + ih + "\"" + getTimeString() + "\";";
|
resp += dg + "(\"times\")[0]" + ih + "\"" + getTimeString() + "\";";
|
||||||
resp += ds + "OLDEF" + v + overlayDefault +";";
|
resp += ds + "OLDEF" + v + overlayDefault +";";
|
||||||
resp += ds + "WOFFS" + v + abs(arlsOffset) +";";
|
resp += ds + "WOFFS" + v + arlsOffset +";";
|
||||||
resp += ds + "WOFFN" + c + !arlsSign +";";
|
|
||||||
resp += ds + "NOOTA" + c + otaLock +";";
|
resp += ds + "NOOTA" + c + otaLock +";";
|
||||||
resp += ds + "NORAP" + c + recoveryAPDisabled +";";
|
resp += ds + "NORAP" + c + recoveryAPDisabled +";";
|
||||||
resp += dg + "(\"sip\")[0]" + ih + "\"";
|
resp += dg + "(\"sip\")[0]" + ih + "\"";
|
||||||
|
@ -229,13 +229,8 @@ void handleSettingsSet()
|
|||||||
if (server.hasArg("WOFFS"))
|
if (server.hasArg("WOFFS"))
|
||||||
{
|
{
|
||||||
int i = server.arg("WOFFS").toInt();
|
int i = server.arg("WOFFS").toInt();
|
||||||
if (i >= 0 && i <= 255) arlsOffset = i;
|
if (i >= -255 && i <= 255) arlsOffset = i;
|
||||||
arlsSign = true;
|
arlsSign = (i>=0)?true:false;
|
||||||
if (server.hasArg("WOFFN"))
|
|
||||||
{
|
|
||||||
arlsSign = false;
|
|
||||||
arlsOffset = -arlsOffset;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (server.hasArg("OPASS"))
|
if (server.hasArg("OPASS"))
|
||||||
{
|
{
|
||||||
@ -524,7 +519,12 @@ boolean handleSet(String req)
|
|||||||
applyPreset(req.substring(pos + 3).toInt(), false, false, true);
|
applyPreset(req.substring(pos + 3).toInt(), false, false, true);
|
||||||
effectUpdated = true;
|
effectUpdated = true;
|
||||||
}
|
}
|
||||||
|
#ifdef CRONIXIE
|
||||||
|
pos = req.indexOf("NX="); //sets digits to code
|
||||||
|
if (pos > 0) {
|
||||||
|
setCronixie(req.substring(pos + 3, pos + 9).c_str());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
//internal call, does not send XML response
|
//internal call, does not send XML response
|
||||||
pos = req.indexOf("IN");
|
pos = req.indexOf("IN");
|
||||||
if (pos < 1)
|
if (pos < 1)
|
||||||
|
@ -168,6 +168,7 @@ void wledInit()
|
|||||||
strip.start();
|
strip.start();
|
||||||
#ifdef CRONIXIE
|
#ifdef CRONIXIE
|
||||||
strip.driverModeCronixie(true);
|
strip.driverModeCronixie(true);
|
||||||
|
setCronixie(cronixieDefault);
|
||||||
#endif
|
#endif
|
||||||
if (bootPreset>0) applyPreset(bootPreset, turnOnAtBoot, true, true);
|
if (bootPreset>0) applyPreset(bootPreset, turnOnAtBoot, true, true);
|
||||||
colorUpdated(0);
|
colorUpdated(0);
|
||||||
|
@ -1,3 +1,6 @@
|
|||||||
|
/*
|
||||||
|
* The Overlay function is over a year old, largely untested and not configurable during runtime. Consider it as deprecated for now, it might get either removed/simplified/reworked.
|
||||||
|
*/
|
||||||
#ifdef USEOVERLAYS
|
#ifdef USEOVERLAYS
|
||||||
void _nixieDisplay(int num[], int dur[], int pausedur[], int cnt)
|
void _nixieDisplay(int num[], int dur[], int pausedur[], int cnt)
|
||||||
{
|
{
|
||||||
|
@ -1,11 +1,23 @@
|
|||||||
#ifdef CRONIXIE
|
#ifdef CRONIXIE
|
||||||
void setCronixieMode(char digits[], uint8_t l)
|
uint8_t getSameCodeLength(char code, int index, char const digits[])
|
||||||
{
|
{
|
||||||
hourDigitCount = 0;
|
uint8_t counter = 0;
|
||||||
|
|
||||||
|
for (int i = index+1; i < 6; i++)
|
||||||
|
{
|
||||||
|
if (digits[i] == code)
|
||||||
|
{
|
||||||
|
counter++;
|
||||||
|
} else {
|
||||||
|
return counter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setCronixie(char const digits[])
|
||||||
|
{
|
||||||
/*
|
/*
|
||||||
* bool trailingzero[]
|
|
||||||
*
|
|
||||||
* digit purpose index
|
* digit purpose index
|
||||||
* 0-9 | 0-9 (incl. random)
|
* 0-9 | 0-9 (incl. random)
|
||||||
* 10 | blank
|
* 10 | blank
|
||||||
@ -13,7 +25,7 @@ void setCronixieMode(char digits[], uint8_t l)
|
|||||||
* 12 | test upw.
|
* 12 | test upw.
|
||||||
* 13 | test dnw.
|
* 13 | test dnw.
|
||||||
* 14 | binary AM/PM
|
* 14 | binary AM/PM
|
||||||
* 15 | BB upper
|
* 15 | BB upper +50 for no trailing 0
|
||||||
* 16 | BBB
|
* 16 | BBB
|
||||||
* 17 | BBBB
|
* 17 | BBBB
|
||||||
* 18 | BBBBB
|
* 18 | BBBBB
|
||||||
@ -56,7 +68,6 @@ void setCronixieMode(char digits[], uint8_t l)
|
|||||||
* 55 | vvvv
|
* 55 | vvvv
|
||||||
* 56 | vvvvv
|
* 56 | vvvvv
|
||||||
* 57 | vvvvvv
|
* 57 | vvvvvv
|
||||||
* 255 | set by previous
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//H HourLower | HH - Hour 24. | AH - Hour 12. | HHH Hour of Month | HHHH Hour of Year
|
//H HourLower | HH - Hour 24. | AH - Hour 12. | HHH Hour of Month | HHHH Hour of Year
|
||||||
@ -68,25 +79,29 @@ void setCronixieMode(char digits[], uint8_t l)
|
|||||||
//I MonthLower | II - Month of Year
|
//I MonthLower | II - Month of Year
|
||||||
//W Week of Month | WW Week of Year
|
//W Week of Month | WW Week of Year
|
||||||
//D Day of Week | DD Day Of Month | DDD Day Of Year
|
//D Day of Week | DD Day Of Month | DDD Day Of Year
|
||||||
|
|
||||||
|
DEBUG_PRINT("cset ");
|
||||||
|
DEBUG_PRINTLN(digits);
|
||||||
|
|
||||||
for (int i = min(5,l); i >= 0; i--)
|
for (int i = 0; i < 6; i++)
|
||||||
{
|
{
|
||||||
|
dP[i] = 10;
|
||||||
switch (digits[i])
|
switch (digits[i])
|
||||||
{
|
{
|
||||||
case '-': break; //blank
|
case 'r': dP[i] = random(1,7); break; //random btw. 1-6
|
||||||
case '_': break; //blank, bg off
|
case 'R': dP[i] = random(0,10); break; //random btw. 0-9
|
||||||
case 'r': break; //random btw. 1-6
|
|
||||||
case 'R': break; //random btw. 0-9
|
|
||||||
case 't': break; //Test upw.
|
case 't': break; //Test upw.
|
||||||
case 'T': break; //Test dnw.
|
case 'T': break; //Test dnw.
|
||||||
case 'b': break;
|
case 'b': break;
|
||||||
case 'B': break;
|
case 'B': break;
|
||||||
case 'h': break;
|
case 'h': dP[i] = 70 + getSameCodeLength('h',i,digits); i = i+dP[i]-70; break;
|
||||||
case 'H': break;
|
case 'H': dP[i] = 20 + getSameCodeLength('H',i,digits); i = i+dP[i]-20; break;
|
||||||
case 'm': break;
|
case 'A': dP[i] = 108; i++; break;
|
||||||
case 'M': break;
|
case 'a': dP[i] = 58; i++; break;
|
||||||
case 's': break;
|
case 'm': dP[i] = 74 + getSameCodeLength('m',i,digits); i = i+dP[i]-74; break;
|
||||||
case 'S': break;
|
case 'M': dP[i] = 24 + getSameCodeLength('M',i,digits); i = i+dP[i]-24; break;
|
||||||
|
case 's': dP[i] = 80 + getSameCodeLength('s',i,digits); i = i+dP[i]-80; break;break;
|
||||||
|
case 'S': dP[i] = 30 + getSameCodeLength('S',i,digits); i = i+dP[i]-30; break;
|
||||||
case 'Y': break;
|
case 'Y': break;
|
||||||
case 'y': break;
|
case 'y': break;
|
||||||
case 'I': break; //Month. Don't ask me why month and minute both start with M.
|
case 'I': break; //Month. Don't ask me why month and minute both start with M.
|
||||||
@ -95,20 +110,27 @@ void setCronixieMode(char digits[], uint8_t l)
|
|||||||
case 'w': break;
|
case 'w': break;
|
||||||
case 'D': break;
|
case 'D': break;
|
||||||
case 'd': break;
|
case 'd': break;
|
||||||
case '0': break;
|
case '0': dP[i] = 0; break;
|
||||||
case '1': break;
|
case '1': dP[i] = 1; break;
|
||||||
case '2': break;
|
case '2': dP[i] = 2; break;
|
||||||
case '3': break;
|
case '3': dP[i] = 3; break;
|
||||||
case '4': break;
|
case '4': dP[i] = 4; break;
|
||||||
case '5': break;
|
case '5': dP[i] = 5; break;
|
||||||
case '6': break;
|
case '6': dP[i] = 6; break;
|
||||||
case '7': break;
|
case '7': dP[i] = 7; break;
|
||||||
case '8': break;
|
case '8': dP[i] = 8; break;
|
||||||
case '9': break;
|
case '9': dP[i] = 9; break;
|
||||||
case 'V': break; //user var0
|
case 'V': break; //user var0
|
||||||
case 'v': break; //user var1
|
case 'v': break; //user var1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
DEBUG_PRINT("result ");
|
||||||
|
for (int i = 0; i < 5; i++)
|
||||||
|
{
|
||||||
|
DEBUG_PRINT((int)dP[i]);
|
||||||
|
DEBUG_PRINT(" ");
|
||||||
|
}
|
||||||
|
DEBUG_PRINTLN((int)dP[5]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleCronixie()
|
void handleCronixie()
|
||||||
@ -117,8 +139,47 @@ void handleCronixie()
|
|||||||
{
|
{
|
||||||
cronixieRefreshedTime = millis();
|
cronixieRefreshedTime = millis();
|
||||||
local = TZ.toLocal(now(), &tcr);
|
local = TZ.toLocal(now(), &tcr);
|
||||||
|
uint8_t h = hour(local);
|
||||||
strip.setCronixieDigits();
|
uint8_t m = minute(local);
|
||||||
//cronixieRefreshMs = 99;
|
uint8_t s = second(local);
|
||||||
|
if (cronixieUseAMPM)
|
||||||
|
{
|
||||||
|
if (h>12) h-=12;
|
||||||
|
else if (h==0) h+=12;
|
||||||
|
}
|
||||||
|
byte _digitOut[]{10,10,10,10,10,10};
|
||||||
|
for (int i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
if (dP[i] < 12) _digitOut[i] = dP[i];
|
||||||
|
else {
|
||||||
|
if (dP[i] < 65)
|
||||||
|
{
|
||||||
|
switch(dP[i])
|
||||||
|
{
|
||||||
|
case 21: _digitOut[i] = h/10; _digitOut[i+1] = h- _digitOut[i]*10; i++; break; //HH
|
||||||
|
case 25: _digitOut[i] = m/10; _digitOut[i+1] = m- _digitOut[i]*10; i++; break; //MM
|
||||||
|
case 31: _digitOut[i] = s/10; _digitOut[i+1] = s- _digitOut[i]*10; i++; break; //SS
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
switch(dP[i])
|
||||||
|
{
|
||||||
|
case 71: _digitOut[i] = h/10; _digitOut[i+1] = h- _digitOut[i]*10; if(_digitOut[i] == 0) _digitOut[i]=10; i++; break; //hh
|
||||||
|
case 75: _digitOut[i] = m/10; _digitOut[i+1] = m- _digitOut[i]*10; if(_digitOut[i] == 0) _digitOut[i]=10; i++; break; //mm
|
||||||
|
case 81: _digitOut[i] = s/10; _digitOut[i+1] = s- _digitOut[i]*10; if(_digitOut[i] == 0) _digitOut[i]=10; i++; break; //ss
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DEBUG_PRINT("out ");
|
||||||
|
for (int i = 0; i < 5; i++)
|
||||||
|
{
|
||||||
|
DEBUG_PRINT((int)_digitOut[i]);
|
||||||
|
DEBUG_PRINT(" ");
|
||||||
|
}
|
||||||
|
DEBUG_PRINTLN((int)_digitOut[5]);
|
||||||
|
strip.setCronixieDigits(_digitOut);
|
||||||
|
//strip.trigger(); //this has a drawback, no effects slower than RefreshMs. advantage: Quick update, not dependant on effect time
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user