From 9df16a82c42fdab3c322571a0a0c8595ea8eb4dd Mon Sep 17 00:00:00 2001 From: C0d3v Date: Mon, 19 Jan 2026 13:30:10 +0100 Subject: [PATCH] Add easy mode based on pulse length --- terminal/puzzle_colorFade/core/src/main.cpp | 59 ++++++++++++++------- 1 file changed, 40 insertions(+), 19 deletions(-) diff --git a/terminal/puzzle_colorFade/core/src/main.cpp b/terminal/puzzle_colorFade/core/src/main.cpp index 6f9f2e9..585d875 100644 --- a/terminal/puzzle_colorFade/core/src/main.cpp +++ b/terminal/puzzle_colorFade/core/src/main.cpp @@ -211,7 +211,7 @@ NormalizedRGB generateRandomNormalizedRGB(const Section *section, uint8_t from, } GameBoard finishedBoard; -void generateTargetGameBoard() +void generateTargetGameBoard(bool easy) { for (size_t i = 0; i < 6; i++) { @@ -221,20 +221,37 @@ void generateTargetGameBoard() strip.begin(); strip.clear(); GameBoard board; - // left - board.left = generateRandomNormalizedRGB(pot3, 0, 3); - finishedLeft = false; - strip.setPixelColor(3, strip.Color(board.left.r, board.left.g, board.left.b, 0)); // left - // middle - board.middle = generateRandomNormalizedRGB(pot4, 0, 4); - finishedMiddle = false; - strip.setPixelColor(4, strip.Color(board.middle.r, board.middle.g, board.middle.b, 0)); // middle - // right - board.right = generateRandomNormalizedRGB(pot5, 1, 5); - finishedRight = false; - strip.setPixelColor(5, strip.Color(board.right.r, board.right.g, board.right.b, 0)); // left - //------------------ - + if (easy) + { + // left + board.left = generateRandomNormalizedRGB(pot3, 2, 3); + finishedLeft = false; + strip.setPixelColor(3, strip.Color(board.left.r, board.left.g, board.left.b, 0)); // left + // middle + board.middle = generateRandomNormalizedRGB(pot3, 2, 3); + finishedMiddle = false; + strip.setPixelColor(4, strip.Color(board.middle.r, board.middle.g, board.middle.b, 0)); // middle + // right + board.right = generateRandomNormalizedRGB(pot3, 2, 3); + finishedRight = false; + strip.setPixelColor(5, strip.Color(board.right.r, board.right.g, board.right.b, 0)); // left + } + else + { + // left + board.left = generateRandomNormalizedRGB(pot3, 0, 3); + finishedLeft = false; + strip.setPixelColor(3, strip.Color(board.left.r, board.left.g, board.left.b, 0)); // left + // middle + board.middle = generateRandomNormalizedRGB(pot4, 0, 4); + finishedMiddle = false; + strip.setPixelColor(4, strip.Color(board.middle.r, board.middle.g, board.middle.b, 0)); // middle + // right + board.right = generateRandomNormalizedRGB(pot5, 1, 5); + finishedRight = false; + strip.setPixelColor(5, strip.Color(board.right.r, board.right.g, board.right.b, 0)); // left + //------------------ + } finishedBoard = board; strip.show(); } @@ -261,7 +278,7 @@ void setup() if (powerOnState) { strip.begin(); - generateTargetGameBoard(); + generateTargetGameBoard(false); strip.show(); } } @@ -298,7 +315,7 @@ void loop() // Detecting turn-on if (!powerOnState && digitalRead(POWER_PIN) == HIGH) { - generateTargetGameBoard(); + generateTargetGameBoard(false); powerOnState = true; } if (!powerOnState) @@ -309,8 +326,12 @@ void loop() if (digitalRead(REGENERATE_PIN) == HIGH) { - generateTargetGameBoard(); - delay(50); // Puls kurz blockieren + unsigned long resetTimer = millis(); + while (digitalRead(REGENERATE_PIN) == HIGH) + { + delay(10); + } + generateTargetGameBoard(millis() - resetTimer > 150); } strip.begin();