From 5eb2aec06a8f4935009aea6b1eac7428237b20f8 Mon Sep 17 00:00:00 2001 From: unlockable Date: Sun, 10 Sep 2023 10:22:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=B6=E9=92=9F=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 8By8/8By8.ino | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/8By8/8By8.ino b/8By8/8By8.ino index 13513b8..cbd6a1c 100644 --- a/8By8/8By8.ino +++ b/8By8/8By8.ino @@ -299,10 +299,13 @@ public: return; } brightness %= 4; - LED_status[z][x] = - (LED_status[z][x] & (~(3 << (y * 2)))) | (brightness << (y * 2)); LED_brightness[z][x] = (LED_brightness[z][x] & (~(3 << (y * 2)))) | (brightness << (y * 2)); + if (LED_blinking_status[z][x] >> y & 1) { + return; + } + LED_status[z][x] = + (LED_status[z][x] & (~(3 << (y * 2)))) | (brightness << (y * 2)); } static int get_status(int x, int y, int z) { @@ -848,7 +851,7 @@ enum ClockStatus { Normal, AdjustingHour, AdjustingMinute, -} +}; int Cube::layer_count = 0; int Cube::brightness_count = 0; @@ -983,7 +986,7 @@ void setup() { } void loop() { - if (can_change_mode) { + if (can_change_mode && clock_status == ClockStatus::Normal) { if (analogRead(JOYSTICK_VRY) > 974) { current_mode = (enum Modes)(current_mode + 1) % 5; can_change_mode = false; @@ -1111,25 +1114,30 @@ void rain() { } void clock() { - int VRX_status = analogRead(JOYSTICK_VRX) + int VRX_status = analogRead(JOYSTICK_VRX); if (clock_waiting_for_new_command) { if (clock_status == ClockStatus::AdjustingHour) { if (VRX_status < 50) { clock_hour = (clock_hour + 23) % 24; + clock_waiting_for_new_command = false; } else if (VRX_status > 974) { clock_hour = (clock_hour + 1) % 24; + clock_waiting_for_new_command = false; } } else if (clock_status == ClockStatus::AdjustingMinute) { if (VRX_status < 50) { clock_minute = (clock_minute + 59) % 60; + clock_waiting_for_new_command = false; } else if (VRX_status > 974) { clock_minute = (clock_minute + 1) % 60; + clock_waiting_for_new_command = false; } - } - } else { + } + } + else { if (VRX_status > 400 && VRX_status < 624) { clock_waiting_for_new_command = true; } @@ -1370,30 +1378,43 @@ void on_joystick_button() { if (current_mode == Modes::Clock) { switch (clock_status) { case ClockStatus::Normal: { + if (DEBUG) { + Serial.println("Start adjusting hour"); + } for (int i = 0; i < 8; i++) { for (int j = 4; j < 8; j++) { - Cube::LED_blinking_status[i][j] = 0xff; + // Cube::set_blinking(i, 1, j); + Cube::LED_blinking_status[j][i] = 0xff; } } + // Cube::LED_blinking_status[0][0] = 0x1; clock_status = ClockStatus::AdjustingHour; break; } case ClockStatus::AdjustingHour: { + if (DEBUG) { + Serial.println("Start adjucting minute"); + } for (int i = 0; i < 8; i++) { for (int j = 4; j < 8; j++) { - Cube::LED_blinking_status[i][j] = 0; + // Cube::unset_blinking(i, 1, j); + Cube::LED_blinking_status[j][i] = 0; } for (int j = 0; j < 4; j++) { - Cube::LED_blinking_status[i][j] = 0xff; + // Cube::set_blinking(i, 0, j); + Cube::LED_blinking_status[j][i] = 0xff; } } clock_status = ClockStatus::AdjustingMinute; break; } case ClockStatus::AdjustingMinute: { + if (DEBUG) { + Serial.println("Normal mode"); + } for (int i = 0; i < 8; i++) { for (int j = 0; j < 4; j++) { - Cube::LED_blinking_status[i][j] = 0; + Cube::LED_blinking_status[j][i] = 0; } } clock_sec = 0;