aboutsummaryrefslogtreecommitdiff
path: root/main/puzzle/neo/arduino-neopuzzle/arduino-neopuzzle.ino
diff options
context:
space:
mode:
Diffstat (limited to 'main/puzzle/neo/arduino-neopuzzle/arduino-neopuzzle.ino')
-rw-r--r--main/puzzle/neo/arduino-neopuzzle/arduino-neopuzzle.ino84
1 files changed, 0 insertions, 84 deletions
diff --git a/main/puzzle/neo/arduino-neopuzzle/arduino-neopuzzle.ino b/main/puzzle/neo/arduino-neopuzzle/arduino-neopuzzle.ino
deleted file mode 100644
index 8febdea..0000000
--- a/main/puzzle/neo/arduino-neopuzzle/arduino-neopuzzle.ino
+++ /dev/null
@@ -1,84 +0,0 @@
-#include <Wire.h>
-#include <Adafruit_NeoTrellis.h>
-
-#define MATRIX_SIZE 8
-#define INT_PIN 5 // Interrupt pin for the NeoTrellis
-
-enum NeoState {
- NEO_UNINITIALIZED,
- NEO_PLAYING,
- NEO_SOLVED
-};
-
-Adafruit_NeoTrellis trellis;
-NeoState neoState = NEO_UNINITIALIZED;
-
-// Initialize the NeoTrellis matrix
-void initializeNeoMatrix() {
- if (!trellis.begin()) {
- Serial.println("Failed to initialize NeoTrellis");
- while (1); // Hold here if initialization fails
- }
-
- // Set all buttons to listen for presses and releases
- for (int i = 0; i < MATRIX_SIZE; i++) {
- for (int j = 0; j < MATRIX_SIZE; j++) {
- trellis.activateKey(i * MATRIX_SIZE + j, SEESAW_KEYPAD_EDGE_RISING, true);
- trellis.activateKey(i * MATRIX_SIZE + j, SEESAW_KEYPAD_EDGE_FALLING, true);
- trellis.setPixelColor(i * MATRIX_SIZE + j, 0x000000); // Turn off LED
- }
- }
- trellis.show();
- neoState = NEO_PLAYING;
-}
-
-// Callback to handle button presses
-void buttonCallback(uint8_t x) {
- uint8_t i = x / MATRIX_SIZE;
- uint8_t j = x % MATRIX_SIZE;
-
- // Toggle the central button and adjacent LEDs
- toggleAdjacentLEDs(i, j);
- if (isNeoPuzzleSolved()) {
- neoState = NEO_SOLVED;
- Serial.println("The NeoTrellis puzzle is solved!");
- // Additional actions upon solving the puzzle can go here
- }
- trellis.show();
-}
-
-void toggleAdjacentLEDs(int x, int y) {
- int idx = x * MATRIX_SIZE + y;
- trellis.setPixelColor(idx, trellis.getPixelColor(idx) ^ 0xFFFFFF); // Toggle LED color
-
- // Toggle adjacent LEDs
- if (x > 0) trellis.setPixelColor((x-1) * MATRIX_SIZE + y, trellis.getPixelColor((x-1) * MATRIX_SIZE + y) ^ 0xFFFFFF);
- if (x < MATRIX_SIZE - 1) trellis.setPixelColor((x+1) * MATRIX_SIZE + y, trellis.getPixelColor((x+1) * MATRIX_SIZE + y) ^ 0xFFFFFF);
- if (y > 0) trellis.setPixelColor(x * MATRIX_SIZE + (y-1), trellis.getPixelColor(x * MATRIX_SIZE + (y-1)) ^ 0xFFFFFF);
- if (y < MATRIX_SIZE - 1) trellis.setPixelColor(x * MATRIX_SIZE + (y+1), trellis.getPixelColor(x * MATRIX_SIZE + (y+1)) ^ 0xFFFFFF);
-}
-
-bool isNeoPuzzleSolved() {
- for (int i = 0; i < MATRIX_SIZE; i++) {
- for (int j = 0; j < MATRIX_SIZE; j++) {
- if (trellis.getPixelColor(i * MATRIX_SIZE + j) != 0x000000) return false; // If any LED is on, puzzle is not solved
- }
- }
- return true;
-}
-
-void setup() {
- Serial.begin(115200);
- trellis.begin(INT_PIN);
- trellis.setBrightness(50); // Set brightness of LEDs (0-255)
- initializeNeoMatrix();
- trellis.registerCallback(buttonCallback);
-}
-
-void loop() {
- if (neoState == NEO_PLAYING) {
- if (trellis.read()) { // If there was a button event
- trellis.show(); // Update the display
- }
- }
-}