Improvements and Bugfixes.
This commit is contained in:
@@ -19,40 +19,40 @@
|
|||||||
<builder buildPath="${workspace_loc:/MyNotificationLight}/Release" id="io.sloeber.sketch.builder.1906713543" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Arduino sketch builder" superClass="io.sloeber.sketch.builder"/>
|
<builder buildPath="${workspace_loc:/MyNotificationLight}/Release" id="io.sloeber.sketch.builder.1906713543" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Arduino sketch builder" superClass="io.sloeber.sketch.builder"/>
|
||||||
<tool id="io.sloeber.tool.sketch.compiler.cpp.1045458791" name="Arduino C++ Compiler" superClass="io.sloeber.tool.sketch.compiler.cpp">
|
<tool id="io.sloeber.tool.sketch.compiler.cpp.1045458791" name="Arduino C++ Compiler" superClass="io.sloeber.tool.sketch.compiler.cpp">
|
||||||
<option id="io.sloeber.compiler.cpp.sketch.option.incpath.259978641" name="Include Paths (-I)" superClass="io.sloeber.compiler.cpp.sketch.option.incpath" valueType="includePath">
|
<option id="io.sloeber.compiler.cpp.sketch.option.incpath.259978641" name="Include Paths (-I)" superClass="io.sloeber.compiler.cpp.sketch.option.incpath" valueType="includePath">
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/libraries/Adafruit_NeoPixel}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/libraries/MyNodeManager}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/libraries/MySensors}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/core/core}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/core/core}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/core/variant}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/core/variant}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/libraries/SPI}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/libraries/Adafruit_NeoPixel}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/libraries/SPI/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/libraries/MySensors}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/libraries/SPI}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/libraries/NodeManager}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/libraries/SPI/src}""/>
|
||||||
</option>
|
</option>
|
||||||
<inputType id="io.sloeber.compiler.cpp.sketch.input.1657978941" name="CPP source files" superClass="io.sloeber.compiler.cpp.sketch.input"/>
|
<inputType id="io.sloeber.compiler.cpp.sketch.input.1657978941" name="CPP source files" superClass="io.sloeber.compiler.cpp.sketch.input"/>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="io.sloeber.tool.compiler.c.375258991" name="Arduino C Compiler" superClass="io.sloeber.tool.compiler.c">
|
<tool id="io.sloeber.tool.compiler.c.375258991" name="Arduino C Compiler" superClass="io.sloeber.tool.compiler.c">
|
||||||
<option id="io.sloeber.compiler.c.sketch.option.incpath.284715339" name="Include Paths (-I)" superClass="io.sloeber.compiler.c.sketch.option.incpath" valueType="includePath">
|
<option id="io.sloeber.compiler.c.sketch.option.incpath.284715339" name="Include Paths (-I)" superClass="io.sloeber.compiler.c.sketch.option.incpath" valueType="includePath">
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/libraries/Adafruit_NeoPixel}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/libraries/MyNodeManager}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/libraries/MySensors}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/core/core}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/core/core}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/core/variant}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/core/variant}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/libraries/SPI}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/libraries/Adafruit_NeoPixel}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/libraries/SPI/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/libraries/MySensors}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/libraries/SPI}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/libraries/NodeManager}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/libraries/SPI/src}""/>
|
||||||
</option>
|
</option>
|
||||||
<inputType id="io.sloeber.compiler.c.sketch.input.2017913156" name="C Source Files" superClass="io.sloeber.compiler.c.sketch.input"/>
|
<inputType id="io.sloeber.compiler.c.sketch.input.2017913156" name="C Source Files" superClass="io.sloeber.compiler.c.sketch.input"/>
|
||||||
</tool>
|
</tool>
|
||||||
<tool id="io.sloeber.tool.sketch.compiler.s.1694325362" name="Arduino Assembler" superClass="io.sloeber.tool.sketch.compiler.s">
|
<tool id="io.sloeber.tool.sketch.compiler.s.1694325362" name="Arduino Assembler" superClass="io.sloeber.tool.sketch.compiler.s">
|
||||||
<option id="io.sloeber.compiler.asm.sketch.option.incpath.1470678493" name="Include Paths (-I)" superClass="io.sloeber.compiler.asm.sketch.option.incpath" valueType="includePath">
|
<option id="io.sloeber.compiler.asm.sketch.option.incpath.1470678493" name="Include Paths (-I)" superClass="io.sloeber.compiler.asm.sketch.option.incpath" valueType="includePath">
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/libraries/Adafruit_NeoPixel}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/libraries/MyNodeManager}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/libraries/MySensors}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/core/core}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/core/core}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/core/variant}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/core/variant}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/libraries/SPI}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/libraries/Adafruit_NeoPixel}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/libraries/SPI/src}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/libraries/MySensors}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/libraries/SPI}""/>
|
||||||
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationClock/libraries/NodeManager}""/>
|
<listOptionValue builtIn="false" value=""${workspace_loc:/MyNotificationLight/libraries/SPI/src}""/>
|
||||||
</option>
|
</option>
|
||||||
<inputType id="io.sloeber.compiler.S.sketch.input.1051869875" name="Assembly source files" superClass="io.sloeber.compiler.S.sketch.input"/>
|
<inputType id="io.sloeber.compiler.S.sketch.input.1051869875" name="Assembly source files" superClass="io.sloeber.compiler.S.sketch.input"/>
|
||||||
</tool>
|
</tool>
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
</toolChain>
|
</toolChain>
|
||||||
</folderInfo>
|
</folderInfo>
|
||||||
<sourceEntries>
|
<sourceEntries>
|
||||||
<entry excluding="libraries/MySensors/.git|libraries/Adafruit_GFX_Library/fontconvert|libraries/Adafruit_GFX_Library/Fonts|libraries/MySensors/projects|libraries/MySensors/initscripts|libraries/MySensors/hal|libraries/MySensors/examples_linux|libraries/MySensors/drivers|libraries/MySensors/Documentation|libraries/MySensors/core|libraries/MySensors/.mystools|libraries/MySensors/.ci|libraries/?*/**/?xamples/**|libraries/?*/**/?xtras/**|libraries/?*/**/test*/**|libraries/?*/**/third-party/**|libraries/**/._*|libraries/?*/utility/*/*" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name=""/>
|
<entry excluding="libraries/MyNodeManager/.git|libraries/MySensors/.git|libraries/Adafruit_GFX_Library/fontconvert|libraries/Adafruit_GFX_Library/Fonts|libraries/MySensors/projects|libraries/MySensors/initscripts|libraries/MySensors/hal|libraries/MySensors/examples_linux|libraries/MySensors/drivers|libraries/MySensors/Documentation|libraries/MySensors/core|libraries/MySensors/.mystools|libraries/MySensors/.ci|libraries/?*/**/?xamples/**|libraries/?*/**/?xtras/**|libraries/?*/**/test*/**|libraries/?*/**/third-party/**|libraries/**/._*|libraries/?*/utility/*/*" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name=""/>
|
||||||
</sourceEntries>
|
</sourceEntries>
|
||||||
</configuration>
|
</configuration>
|
||||||
</storageModule>
|
</storageModule>
|
||||||
|
|||||||
@@ -34,17 +34,22 @@
|
|||||||
<link>
|
<link>
|
||||||
<name>core/core</name>
|
<name>core/core</name>
|
||||||
<type>2</type>
|
<type>2</type>
|
||||||
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/arduino/hardware/avr/1.6.21/cores/arduino</locationURI>
|
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/arduino/hardware/avr/1.6.18/cores/arduino</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>core/variant</name>
|
<name>core/variant</name>
|
||||||
<type>2</type>
|
<type>2</type>
|
||||||
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/arduino/hardware/avr/1.6.21/variants/eightanaloginputs</locationURI>
|
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/arduino/hardware/avr/1.6.18/variants/eightanaloginputs</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>libraries/Adafruit_NeoPixel</name>
|
<name>libraries/Adafruit_NeoPixel</name>
|
||||||
<type>2</type>
|
<type>2</type>
|
||||||
<locationURI>ECLIPSE_HOME/arduinoPlugin/libraries/Adafruit_NeoPixel/1.1.6</locationURI>
|
<locationURI>ECLIPSE_HOME/arduinoPlugin/libraries/Adafruit_NeoPixel/1.0.6</locationURI>
|
||||||
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>libraries/MyNodeManager</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>ECLIPSE_HOME/arduinoPlugin/libraries/MyNodeManager/1.0.0</locationURI>
|
||||||
</link>
|
</link>
|
||||||
<link>
|
<link>
|
||||||
<name>libraries/MySensors</name>
|
<name>libraries/MySensors</name>
|
||||||
@@ -59,7 +64,7 @@
|
|||||||
<link>
|
<link>
|
||||||
<name>libraries/SPI</name>
|
<name>libraries/SPI</name>
|
||||||
<type>2</type>
|
<type>2</type>
|
||||||
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/arduino/hardware/avr/1.6.21/libraries/SPI</locationURI>
|
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/arduino/hardware/avr/1.6.18/libraries/SPI</locationURI>
|
||||||
</link>
|
</link>
|
||||||
</linkedResources>
|
</linkedResources>
|
||||||
</projectDescription>
|
</projectDescription>
|
||||||
|
|||||||
+26
-13
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
union _eeprom_NotificationLEDs_StatusTable {
|
union _eeprom_NotificationLEDs_StatusTable {
|
||||||
struct {
|
struct {
|
||||||
int hourOffset : 1;
|
unsigned hourOffset : 1;
|
||||||
} status;
|
} status;
|
||||||
uint8_t data;
|
uint8_t data;
|
||||||
};
|
};
|
||||||
@@ -329,8 +329,12 @@ template<
|
|||||||
retval = true;
|
retval = true;
|
||||||
} else if (msg.type == V_RGBW) {
|
} else if (msg.type == V_RGBW) {
|
||||||
uint32_t color = strtoul(msg.data, NULL, 16);
|
uint32_t color = strtoul(msg.data, NULL, 16);
|
||||||
// MySensors uses "RGBW" format, but the NeoPixel library uses "WRGB" format
|
if (color == 0) {
|
||||||
setStaticColor((color & 0xFFFFFF00) >> 8 | ((color & 0xFF) << 24));
|
enableDefaultScene();
|
||||||
|
} else {
|
||||||
|
// MySensors uses "RGBW" format, but the NeoPixel library uses "WRGB" format
|
||||||
|
setStaticColor((color & 0xFFFFFF00) >> 8 | ((color & 0xFF) << 24));
|
||||||
|
}
|
||||||
retval = true;
|
retval = true;
|
||||||
}
|
}
|
||||||
if (retval) {
|
if (retval) {
|
||||||
@@ -352,21 +356,30 @@ template<
|
|||||||
if (msg.type == V_PERCENTAGE) {
|
if (msg.type == V_PERCENTAGE) {
|
||||||
auto b = msg.getByte();
|
auto b = msg.getByte();
|
||||||
if (sceneMode == 0) {
|
if (sceneMode == 0) {
|
||||||
brightness = b;
|
if (b == 0) {
|
||||||
sceneData.analogClock.lastUnixTime = 0;
|
powerOff();
|
||||||
|
} else {
|
||||||
|
brightness = b;
|
||||||
|
sceneData.analogClock.lastUnixTime = 0;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
uint16_t cb = max(staticColor.wrgb[0], max(staticColor.wrgb[1], max(staticColor.wrgb[2], staticColor.wrgb[3]))) * 100 / 255;
|
if (b == 0) {
|
||||||
uint16_t nb = msg.getByte();
|
enableDefaultScene();
|
||||||
for (auto i = 0; i < 4; i++) {
|
} else {
|
||||||
uint16_t newcolor = ((uint16_t)staticColor.wrgb[i] * nb) / cb;
|
uint16_t cb = max(staticColor.wrgb[0], max(staticColor.wrgb[1], max(staticColor.wrgb[2], staticColor.wrgb[3]))) * 100 / 255;
|
||||||
if (newcolor > 255) {
|
for (auto i = 0; i < 4; i++) {
|
||||||
newcolor = 255;
|
uint16_t newcolor = ((uint16_t)staticColor.wrgb[i] * b) / cb;
|
||||||
|
if (newcolor > 255) {
|
||||||
|
newcolor = 255;
|
||||||
|
}
|
||||||
|
staticColor.wrgb[i] = newcolor;
|
||||||
}
|
}
|
||||||
staticColor.wrgb[i] = newcolor;
|
setStaticColor(staticColor.color);
|
||||||
}
|
}
|
||||||
setStaticColor(staticColor.color);
|
|
||||||
}
|
}
|
||||||
retval = true;
|
retval = true;
|
||||||
|
sendPowerSwitchStatus();
|
||||||
|
sendRGBWStatus();
|
||||||
sendDimmerStatus();
|
sendDimmerStatus();
|
||||||
}
|
}
|
||||||
// Request Message
|
// Request Message
|
||||||
|
|||||||
+1
-1
@@ -20,7 +20,7 @@ template<
|
|||||||
::analogClock_setup() noexcept {
|
::analogClock_setup() noexcept {
|
||||||
_eeprom_NotificationLEDs_StatusTable statusTable;
|
_eeprom_NotificationLEDs_StatusTable statusTable;
|
||||||
statusTable.data = loadState(EEPROM_POS_STATUSTABLE);
|
statusTable.data = loadState(EEPROM_POS_STATUSTABLE);
|
||||||
if (statusTable.status.hourOffset == 1) {
|
if (statusTable.status.hourOffset) {
|
||||||
sceneData.analogClock.hourOffset = (int8_t)loadState(EEPROM_POS_HOUROFFSET);
|
sceneData.analogClock.hourOffset = (int8_t)loadState(EEPROM_POS_HOUROFFSET);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-1
@@ -87,13 +87,23 @@ template<
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
pixels.setPixelColor(sceneData.follow1.followPos, sceneData.follow1.color.color);
|
pixels.setPixelColor(sceneData.follow1.followPos, sceneData.follow1.color.color);
|
||||||
|
for (auto i = 1; i < 4; i++) {
|
||||||
|
auto pos = MOD(sceneData.follow1.followPos-sceneData.follow1.followDir*i, 12);
|
||||||
|
auto color = sceneData.follow1.color;
|
||||||
|
color.wrgb[0] = (uint16_t)color.wrgb[0]*(4-i)/4;
|
||||||
|
color.wrgb[1] = (uint16_t)color.wrgb[1]*(4-i)/4;
|
||||||
|
color.wrgb[2] = (uint16_t)color.wrgb[2]*(4-i)/4;
|
||||||
|
color.wrgb[3] = (uint16_t)color.wrgb[3]*(4-i)/4;
|
||||||
|
pixels.setPixelColor(pos, color.color);
|
||||||
|
}
|
||||||
auto delPos = MOD(sceneData.follow1.followPos-sceneData.follow1.followDir*4, 12);
|
auto delPos = MOD(sceneData.follow1.followPos-sceneData.follow1.followDir*4, 12);
|
||||||
pixels.setPixelColor(delPos, 0);
|
pixels.setPixelColor(delPos, 0);
|
||||||
pixels.show();
|
pixels.show();
|
||||||
sceneData.follow1.followPos += sceneData.follow1.followDir;
|
sceneData.follow1.followPos += sceneData.follow1.followDir;
|
||||||
if (sceneData.follow1.followPos < 0 || sceneData.follow1.followPos > 11) {
|
if (sceneData.follow1.followPos < 0 || sceneData.follow1.followPos > 11) {
|
||||||
sceneData.follow1.followPos = MOD(sceneData.follow1.followPos, 12);
|
sceneData.follow1.followPos = MOD(sceneData.follow1.followPos, 12);
|
||||||
if (sceneData.follow1.maxCycles > 0 && sceneData.follow1.currentCycles > sceneData.follow1.maxCycles) {
|
sceneData.follow1.currentCycles++;
|
||||||
|
if (sceneData.follow1.maxCycles > 0 && sceneData.follow1.currentCycles >= sceneData.follow1.maxCycles) {
|
||||||
sceneData.follow1.finishing = true;
|
sceneData.follow1.finishing = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -74,7 +74,7 @@ template<
|
|||||||
if (currentMillis - sceneData.pulse1.lastMillis >= 50) {
|
if (currentMillis - sceneData.pulse1.lastMillis >= 50) {
|
||||||
auto color = sceneData.pulse1.color;
|
auto color = sceneData.pulse1.color;
|
||||||
int16_t pulseValue = sceneData.pulse1.pulseValue;
|
int16_t pulseValue = sceneData.pulse1.pulseValue;
|
||||||
uint16_t br = 127.5 * (-cos(tmap<float>(pulseValue, 0, 255, 0, 2.0*M_PI))+1.0);
|
uint16_t br = 127.5 * (-cos(tmap<float>(pulseValue, 0, 255, 0, M_PI))+1.0);
|
||||||
color.wrgb[0] = (uint16_t)color.wrgb[0]*br/255;
|
color.wrgb[0] = (uint16_t)color.wrgb[0]*br/255;
|
||||||
color.wrgb[1] = (uint16_t)color.wrgb[1]*br/255;
|
color.wrgb[1] = (uint16_t)color.wrgb[1]*br/255;
|
||||||
color.wrgb[2] = (uint16_t)color.wrgb[2]*br/255;
|
color.wrgb[2] = (uint16_t)color.wrgb[2]*br/255;
|
||||||
@@ -88,7 +88,7 @@ template<
|
|||||||
sceneData.pulse1.pulseDir = -sceneData.pulse1.pulseDir;
|
sceneData.pulse1.pulseDir = -sceneData.pulse1.pulseDir;
|
||||||
pulseValue = sceneData.pulse1.pulseDir;
|
pulseValue = sceneData.pulse1.pulseDir;
|
||||||
sceneData.pulse1.currentPulses++;
|
sceneData.pulse1.currentPulses++;
|
||||||
if (sceneData.pulse1.maxPulses > 0 && sceneData.pulse1.currentPulses > sceneData.pulse1.maxPulses) {
|
if (sceneData.pulse1.maxPulses > 0 && sceneData.pulse1.currentPulses >= sceneData.pulse1.maxPulses) {
|
||||||
returnToLastMode();
|
returnToLastMode();
|
||||||
}
|
}
|
||||||
} else if (pulseValue > 255) {
|
} else if (pulseValue > 255) {
|
||||||
|
|||||||
Reference in New Issue
Block a user