Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions include/Transitiontypes/Transition.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -473,16 +473,28 @@ void Transition::analyzeColors(RgbfColor **dest, RgbfColor **source,

void Transition::setMinute() {
if (G.minuteVariant != MinuteVariant::Off) {
uint8_t m = lastMinute % 5;
uint8_t m5 = lastMinute % 5;
uint16_t minArray[4];
usedUhrType->getMinuteArray(minArray,
clockWork.determineWhichMinuteVariant());
if (G.layoutVariant[ReverseMinDirection]) {
std::reverse(std::begin(minArray), std::end(minArray));
}
for (uint8_t i = 0; i < 4; i++) {
led.setPixel(minArray[i],
HsbColor{m > i ? foregroundMinute : background});

uint8_t numLEDsPerLetter = 1;
if (G.buildTypeDef == BuildTypeDef::DoubleRes) {
numLEDsPerLetter = 2;
} else if (G.buildTypeDef == BuildTypeDef::TrippleRes) {
numLEDsPerLetter = 3;
} else if (G.buildTypeDef == BuildTypeDef::QuadRes) {
numLEDsPerLetter = 4;
}

for (uint8_t m = 0; m < 4; m++) {
for (int i = 0; i < numLEDsPerLetter; i++) {
led.setPixel(minArray[m] * numLEDsPerLetter + i,
HsbColor{m5 > m ? foregroundMinute : background});
}
// TODO: fading transition for Minutes
}
}
Expand Down
2 changes: 2 additions & 0 deletions include/Uhr.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,8 @@ enum class BuildTypeDef {
Normal = 0,
DoubleResM1 = 1,
DoubleRes = 2,
TrippleRes = 3,
QuadRes = 4
};

enum class MinuteVariant {
Expand Down
2 changes: 2 additions & 0 deletions include/Uhrtypes/DE11x11.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,8 @@ class De11x11_t : public iUhrType {
case FrontWord::vor:
case FrontWord::v_vor:
setFrontMatrixWord(3, 2, 4);
break;

case FrontWord::uhr:
setFrontMatrixWord(10, 0, 2);
break;
Expand Down
1 change: 1 addition & 0 deletions include/led.h
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ class Led {
// Pixel Clear Functions
//------------------------------------------------------------------------------
inline void clearPixel(uint16_t i);
inline void clearPixel(uint8_t row, uint8_t col);
inline void clearClock();
inline void clearRow(uint8_t row);
inline void clearMinArray();
Expand Down
71 changes: 62 additions & 9 deletions include/led.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,19 @@ void Led::setPixel(uint16_t ledIndex, HsbColor color) {
//------------------------------------------------------------------------------

void Led::setPixel(uint8_t row, uint8_t col, HsbColor color) {
setPixel(usedUhrType->getFrontMatrixIndex(row, col), color);
uint8_t numLEDsPerLetter = 1;
if (G.buildTypeDef == BuildTypeDef::DoubleRes) {
numLEDsPerLetter = 2;
} else if (G.buildTypeDef == BuildTypeDef::TrippleRes) {
numLEDsPerLetter = 3;
} else if (G.buildTypeDef == BuildTypeDef::QuadRes) {
numLEDsPerLetter = 4;
}

uint16_t ledIndex = usedUhrType->getFrontMatrixIndex(row, col);
for (int i = 0; i < numLEDsPerLetter; i++) {
setPixel(ledIndex * numLEDsPerLetter + i, color);
}
}

//------------------------------------------------------------------------------
Expand All @@ -267,7 +279,7 @@ void Led::setbyFrontMatrix(ColorPosition colorPosition,
if (boolSetPixel) {
setPixel(row, col, displayedColor);
} else if (colorPosition != Background) {
clearPixel(usedUhrType->getFrontMatrixIndex(row, col));
clearPixel(row, col);
}
}
}
Expand Down Expand Up @@ -297,11 +309,23 @@ void Led::setbyMinuteArray(ColorPosition colorPosition) {
HsbColor displayedColor =
getColorbyPositionWithAppliedBrightness(colorPosition);

uint8_t numLEDsPerLetter = 1;
if (G.buildTypeDef == BuildTypeDef::DoubleRes) {
numLEDsPerLetter = 2;
} else if (G.buildTypeDef == BuildTypeDef::TrippleRes) {
numLEDsPerLetter = 3;
} else if (G.buildTypeDef == BuildTypeDef::QuadRes) {
numLEDsPerLetter = 4;
}

/* Set minutes According to minute byte */
for (uint8_t i = 0; i < 4; i++) {
for (uint8_t m = 0; m < 4; m++) {
/* Bitwise check whether Pixel bit is set */
if ((minuteArray >> i) & 1U) {
setPixel(minutePixelArray[i], displayedColor);
if ((minuteArray >> m) & 1U) {
for (int i = 0; i < numLEDsPerLetter; i++) {
setPixel(minutePixelArray[m] * numLEDsPerLetter + i,
displayedColor);
}
}
}
}
Expand Down Expand Up @@ -457,6 +481,24 @@ bool Led::getState() {
// Pixel Clear Functions
//------------------------------------------------------------------------------

inline void Led::clearPixel(uint8_t row, uint8_t col) {
uint8_t numLEDsPerLetter = 1;
if (G.buildTypeDef == BuildTypeDef::DoubleRes) {
numLEDsPerLetter = 2;
} else if (G.buildTypeDef == BuildTypeDef::TrippleRes) {
numLEDsPerLetter = 3;
} else if (G.buildTypeDef == BuildTypeDef::QuadRes) {
numLEDsPerLetter = 4;
}

uint16_t ledIndex = usedUhrType->getFrontMatrixIndex(row, col);
for (int i = 0; i < numLEDsPerLetter; i++) {
clearPixel(ledIndex * numLEDsPerLetter + i);
}
}

//------------------------------------------------------------------------------

inline void Led::clearPixel(uint16_t i) {
if (G.Colortype == Grbw) {
strip_RGBW->SetPixelColor(i, 0);
Expand All @@ -471,7 +513,7 @@ inline void Led::clearClock() {
for (uint8_t row = 0; row < usedUhrType->rowsWordMatrix(); row++) {
for (uint8_t col = 0; col < usedUhrType->colsWordMatrix(); col++) {
usedUhrType->setFrontMatrixPixel(row, col, false);
clearPixel(usedUhrType->getFrontMatrixIndex(row, col));
clearPixel(row, col);
}
}
}
Expand All @@ -481,15 +523,26 @@ inline void Led::clearClock() {
inline void Led::clearRow(uint8_t row) {
for (uint8_t col = 0; col < usedUhrType->colsWordMatrix(); col++) {
usedUhrType->setFrontMatrixPixel(row, col, false);
clearPixel(usedUhrType->getFrontMatrixIndex(row, col));
clearPixel(row, col);
}
}

//------------------------------------------------------------------------------

inline void Led::clearMinArray() {
for (uint16_t i = minutePixelArray[0]; i <= minutePixelArray[3]; i++) {
clearPixel(i);
for (uint16_t m = minutePixelArray[0]; m <= minutePixelArray[3]; m++) {
uint8_t numLEDsPerLetter = 1;
if (G.buildTypeDef == BuildTypeDef::DoubleRes) {
numLEDsPerLetter = 2;
} else if (G.buildTypeDef == BuildTypeDef::TrippleRes) {
numLEDsPerLetter = 3;
} else if (G.buildTypeDef == BuildTypeDef::QuadRes) {
numLEDsPerLetter = 4;
}

for (int i = 0; i < numLEDsPerLetter; i++) {
clearPixel(m * numLEDsPerLetter + i);
}
}
minuteArray = 0;
}
Expand Down
3 changes: 3 additions & 0 deletions webpage/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -396,6 +396,9 @@ <h2 data-i18next="view.front.h2"></h2>
<label for="buildtype" data-i18next="view.front.buildtype"></label><select name="buildtype" id="buildtype" size="1">
<option value="0" data-i18next="view.front.normal" selected></option>
<option value="1" data-i18next="view.front.doubleResM1"></option>
<option value="2" data-i18next="view.front.doubleRes"></option>
<option value="3" data-i18next="view.front.trippleRes"></option>
<option value="4" data-i18next="view.front.quadRes"></option>
</select>
</div>
</fieldset>
Expand Down
4 changes: 3 additions & 1 deletion webpage/language/de.js
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,9 @@ let TRANSLATION_DE_DE = {
"buildtype": "Bauart",
"normal": "Jede LED entspricht einem Buchstaben",
"doubleResM1": "Jede zweite LED entspricht einem Buchstaben",
"doubleRes": "Je zwei LEDs pro Buchstabe"
"doubleRes": "Je zwei LEDs pro Buchstabe",
"trippleRes": "Je drei LEDs pro Buchstabe",
"quadRes": "Je vier LEDs pro Buchstabe"
},
"language": {
"h2": "Sprache",
Expand Down
4 changes: 3 additions & 1 deletion webpage/language/en.js
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,9 @@ let TRANSLATION_EN_US = {
"buildtype": "Buildtype",
"normal": "Each LED corresponds to one letter",
"doubleResM1": "Every second LED corresponds to one letter",
"doubleRes": "Two LEDs per letter"
"doubleRes": "Two LEDs per letter",
"trippleRes": "Three LEDs per letter",
"quadRes": "Four LEDs per letter"
},
"language": {
"h2": "Language",
Expand Down