Compare commits

..

No commits in common. "64cde85752fc53b864c500bcb059a5e16166b7c1" and "54ffd02ab4b8215c389142fbada13e718a74948b" have entirely different histories.

3 changed files with 31 additions and 73 deletions

View File

@ -1,7 +1,7 @@
#include <Arduino.h> #include <Arduino.h>
#include <Wire.h> #include <Wire.h>
void resetPuzzles(bool easy); void resetPuzzles();
/* ========================================================= */ /* ========================================================= */
const uint8_t ARCHIV_ADDR = 0x10; const uint8_t ARCHIV_ADDR = 0x10;
@ -70,25 +70,21 @@ ISR(PCINT1_vect)
} }
lastState = state; lastState = state;
} }
uint8_t inputPattern = 0;
void handleEncoderMovement() void handleEncoderMovement()
{ {
long diff = encoderPostion - lastClickPosition; long diff = encoderPostion - lastClickPosition;
if (abs(diff) >= stepsPerClick) if (abs(diff) >= stepsPerClick)
{ {
resetPuzzles();
if (diff > 0) if (diff > 0)
{ {
// right turn
selectedIndex = (selectedIndex + 1) % 8; selectedIndex = (selectedIndex + 1) % 8;
inputPattern = ((inputPattern << 1) | 1) & 0xFF;
} }
else else
{ {
//left turn
selectedIndex = (selectedIndex + 7) % 8; selectedIndex = (selectedIndex + 7) % 8;
inputPattern = ((inputPattern << 1) | 0) & 0xFF;
} }
resetPuzzles(inputPattern == 0b10101010);
setDrawerLight(selectedIndex); setDrawerLight(selectedIndex);
lastClickPosition = encoderPostion; lastClickPosition = encoderPostion;
} }
@ -137,16 +133,13 @@ const int puzzleResetPins[3] = {7, 8, 9};
bool puzzlesSolved[3] = {false, false, false}; bool puzzlesSolved[3] = {false, false, false};
bool allSolvedSent = false; bool allSolvedSent = false;
void resetPuzzles(bool easy) void resetPuzzles()
{ {
for (size_t i = 0; i < 3; i++) for (size_t i = 0; i < 3; i++)
{ {
digitalWrite(puzzleResetPins[i], HIGH);
puzzlesSolved[i] = false; puzzlesSolved[i] = false;
} digitalWrite(puzzleResetPins[i], HIGH);
delay(30 * (easy * 10)); //delay 30 or 300ms delay(30);
for (size_t i = 0; i < 3; i++)
{
digitalWrite(puzzleResetPins[i], LOW); digitalWrite(puzzleResetPins[i], LOW);
} }
allSolvedSent = false; allSolvedSent = false;

View File

@ -211,7 +211,7 @@ NormalizedRGB generateRandomNormalizedRGB(const Section *section, uint8_t from,
} }
GameBoard finishedBoard; GameBoard finishedBoard;
void generateTargetGameBoard(bool easy) void generateTargetGameBoard()
{ {
for (size_t i = 0; i < 6; i++) for (size_t i = 0; i < 6; i++)
{ {
@ -221,23 +221,6 @@ void generateTargetGameBoard(bool easy)
strip.begin(); strip.begin();
strip.clear(); strip.clear();
GameBoard board; GameBoard board;
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(pot4, 3, 4);
finishedMiddle = false;
strip.setPixelColor(4, strip.Color(board.middle.r, board.middle.g, board.middle.b, 0)); // middle
// right
board.right = generateRandomNormalizedRGB(pot5, 4, 5);
finishedRight = false;
strip.setPixelColor(5, strip.Color(board.right.r, board.right.g, board.right.b, 0)); // left
}
else
{
// left // left
board.left = generateRandomNormalizedRGB(pot3, 0, 3); board.left = generateRandomNormalizedRGB(pot3, 0, 3);
finishedLeft = false; finishedLeft = false;
@ -251,7 +234,7 @@ void generateTargetGameBoard(bool easy)
finishedRight = false; finishedRight = false;
strip.setPixelColor(5, strip.Color(board.right.r, board.right.g, board.right.b, 0)); // left strip.setPixelColor(5, strip.Color(board.right.r, board.right.g, board.right.b, 0)); // left
//------------------ //------------------
}
finishedBoard = board; finishedBoard = board;
strip.show(); strip.show();
} }
@ -278,7 +261,7 @@ void setup()
if (powerOnState) if (powerOnState)
{ {
strip.begin(); strip.begin();
generateTargetGameBoard(false); generateTargetGameBoard();
strip.show(); strip.show();
} }
} }
@ -315,7 +298,7 @@ void loop()
// Detecting turn-on // Detecting turn-on
if (!powerOnState && digitalRead(POWER_PIN) == HIGH) if (!powerOnState && digitalRead(POWER_PIN) == HIGH)
{ {
generateTargetGameBoard(false); generateTargetGameBoard();
powerOnState = true; powerOnState = true;
} }
if (!powerOnState) if (!powerOnState)
@ -326,12 +309,8 @@ void loop()
if (digitalRead(REGENERATE_PIN) == HIGH) if (digitalRead(REGENERATE_PIN) == HIGH)
{ {
unsigned long resetTimer = millis(); generateTargetGameBoard();
while (digitalRead(REGENERATE_PIN) == HIGH) delay(50); // Puls kurz blockieren
{
delay(10);
}
generateTargetGameBoard(millis() - resetTimer > 150);
} }
strip.begin(); strip.begin();

View File

@ -36,16 +36,10 @@ int ledIndex(int logical) {
return (NUM_LEDS - 1) - logical; return (NUM_LEDS - 1) - logical;
} }
void generateNewSequence(bool easy) { void generateNewSequence() {
for (int i = 0; i < NUM_LEDS; i++) { for (int i = 0; i < NUM_LEDS; i++) {
if (easy)
{
sequence[i] = 0;
}
else {
sequence[i] = random(0, 2); sequence[i] = random(0, 2);
} }
}
} }
void setAll(uint32_t color) { void setAll(uint32_t color) {
@ -116,12 +110,10 @@ void setup() {
strip.show(); strip.show();
randomSeed(millis()); randomSeed(millis());
generateNewSequence(false); generateNewSequence();
resetGame(); resetGame();
} }
bool reset = false;
void loop() { void loop() {
//Detecting turn-off //Detecting turn-off
if (powerOnState && digitalRead(POWER_PIN) == LOW) { if (powerOnState && digitalRead(POWER_PIN) == LOW) {
@ -137,16 +129,10 @@ void loop() {
return; return;
} }
// Master-D2 HIGH → neue Sequenz // Master-D2 HIGH → neue Sequenz
if (digitalRead(randomizer_master_pin) == HIGH) if (digitalRead(randomizer_master_pin) == HIGH) {
{ generateNewSequence();
unsigned long resetTimer = millis();
while (digitalRead(randomizer_master_pin) == HIGH)
{
delay(10);
}
generateNewSequence(millis() - resetTimer > 150);
resetGame(); resetGame();
delay(50); // Puls kurz blockieren
} }
int currentButton1State = digitalRead(BUTTON1_PIN); int currentButton1State = digitalRead(BUTTON1_PIN);