update steps 3 & 5

This commit is contained in:
Mitchell Marino 2025-06-05 16:48:03 -05:00
parent e1ce43d57c
commit 72ff92b444
15 changed files with 255 additions and 214 deletions

View File

@ -1,14 +1,18 @@
#ifndef ALL_H #ifndef ALL_H
#define ALL_H #define ALL_H
#include "char_lcd.h"
#include "bottom_half.h" #include "bottom_half.h"
#include "char_lcd.h"
#include "game_timer.h"
#include "leds.h"
#include "power.h"
#include "sd.h" #include "sd.h"
#include "speaker.h" #include "speaker.h"
#include "game_timer.h" #include "sseg.h"
#include "drivers/tft.h" #include "star_code.h"
#include "drivers/leds.h" #include "state_tracking.h"
#include "drivers/power.h" #include "tft.h"
#include "wires.h"
void init_drivers(); void init_drivers();

View File

@ -26,6 +26,7 @@ enum LEDColor: uint32_t {
LED_COLOR_WHITE_STRONG = 0xFF'FF'FF, LED_COLOR_WHITE_STRONG = 0xFF'FF'FF,
}; };
// TODO: sepperate the indicator leds from the shape display.
enum IndicatorLED { enum IndicatorLED {
LED_SHAPE1 = 0u, LED_SHAPE1 = 0u,
LED_SHAPE2 = 1u, LED_SHAPE2 = 1u,

View File

@ -4,6 +4,9 @@
#include <algorithm> #include <algorithm>
#include <string.h> #include <string.h>
#include <stdint.h> #include <stdint.h>
#include <esp_log.h>
static const char* TAG = "star_code";
static std::vector<StarCodeEntry> star_codes; static std::vector<StarCodeEntry> star_codes;
@ -40,6 +43,7 @@ bool add_star_code(StarCodeEntry code) {
if (it != star_codes.end()) { if (it != star_codes.end()) {
// existing star code found! // existing star code found!
ESP_LOGW(TAG, "Failed to add star code %s", code.code);
return false; return false;
} }
@ -47,12 +51,23 @@ bool add_star_code(StarCodeEntry code) {
return true; return true;
} }
bool rm_star_code(char* code){ bool add_star_codes(const StarCodeEntry* codes, size_t len) {
bool success = true;
for (int i = 0; i < len; i++) {
if (!add_star_code(codes[i])) {
success = false;
}
}
return success;
}
bool rm_star_code(const char* code){
auto it = std::find_if(star_codes.begin(), star_codes.end(), [&](const StarCodeEntry& star_code) { auto it = std::find_if(star_codes.begin(), star_codes.end(), [&](const StarCodeEntry& star_code) {
return strcmp(code, star_code.code) == 0; return strcmp(code, star_code.code) == 0;
}); });
if (it == star_codes.end()) { if (it == star_codes.end()) {
ESP_LOGW(TAG, "Failed to remove star code %s", code);
return false; return false;
} }
@ -60,7 +75,31 @@ bool rm_star_code(char* code){
return true; return true;
} }
bool trigger_star_code(char* code) { bool rm_star_codes(const StarCodeEntry* codes, size_t len) {
bool success = true;
for (int i = 0; i < len; i++) {
if (!rm_star_code(codes[i].code)) {
success = false;
}
}
return success;
}
bool rm_star_codes_str(const char** codes, size_t len) {
bool success = true;
for (int i = 0; i < len; i++) {
if (!rm_star_code(codes[i])) {
success = false;
}
}
return success;
}
void clear_star_codes() {
star_codes.clear();
}
bool trigger_star_code(const char* code) {
auto it = std::find_if(star_codes.begin(), star_codes.end(), [&](const StarCodeEntry& other) { auto it = std::find_if(star_codes.begin(), star_codes.end(), [&](const StarCodeEntry& other) {
return check_code_match(code, other.code); return check_code_match(code, other.code);
}); });

View File

@ -22,18 +22,39 @@ struct StarCodeEntry {
}; };
/// @brief Adds a star code to be handled. /// @brief Adds a star code to be handled.
/// @param code the star code to add (without the *) /// @param code the star code to add
/// @return true iff the star code was added /// @return true iff the star code was added
bool add_star_code(StarCodeEntry code); bool add_star_code(StarCodeEntry code);
/// @brief Adds a list of star codes to be handled.
/// @param codes the list of star codes to add
/// @param len the length of the list
/// @return true iff all the star codes were added
bool add_star_codes(const StarCodeEntry* codes, size_t len);
/// @brief removes a star code to stop handling it. /// @brief removes a star code to stop handling it.
/// @param code the star code to remove (without the *) /// @param code the star code to remove
/// @return true iff the star code was removed /// @return true iff the star code was removed
bool rm_star_code(char* code); bool rm_star_code(const char* code);
/// @brief removes all given star codes to stop handling them.
/// @param codes the list of star codes to remove
/// @param len the length of the list
/// @return true iff all star codes were removed
bool rm_star_codes(const StarCodeEntry* codes, size_t len);
/// @brief removes all given star codes to stop handling them.
/// @param codes the list of star codes to remove
/// @param len the length of the list
/// @return true iff all star codes were removed
bool rm_star_codes_str(const char** codes, size_t len);
/// @brief clears all star codes.
void clear_star_codes();
/// @brief Triggers the given starcode. /// @brief Triggers the given starcode.
/// @param code the star code to trigger (without the *) /// @param code the star code to trigger (without the *)
/// @return true iff a star code was triggered /// @return true iff a star code was triggered
bool trigger_star_code(char* code); bool trigger_star_code(const char* code);
#endif /* STAR_CODE_H */ #endif /* STAR_CODE_H */

View File

@ -10,19 +10,11 @@
#include "drivers/speaker.h" #include "drivers/speaker.h"
#include "drivers/tft.h" #include "drivers/tft.h"
struct StarCodeHandler {
const char* code;
const char* display_text;
bool should_exit;
void (*callback)(void);
};
// TODO: add something for RNG. // TODO: add something for RNG.
/// Clears most persistant bomb state /// Clears most persistant bomb state
void clean_bomb(void); void clean_bomb(void);
void poster_child_task(void* arg); void poster_child_task(void* arg);
void do_star_codes(StarCodeHandler* star_codes, int star_codes_len);
void display_game_results(); void display_game_results();
#endif /* HELPER_H */ #endif /* HELPER_H */

View File

@ -6,13 +6,15 @@ static const char* TAG = "step0";
extern uint32_t initial_game_time; extern uint32_t initial_game_time;
extern uint32_t skip_to_step; extern uint32_t skip_to_step;
static SemaphoreHandle_t continue_sem;
static void set_game_time(); static void set_game_time();
static void skip_to_step1() { skip_to_step = 1; } static void skip_to_step1() { skip_to_step = 1; xSemaphoreGive(continue_sem, portMAX_DELAY); }
static void skip_to_step2() { skip_to_step = 2; } static void skip_to_step2() { skip_to_step = 2; xSemaphoreGive(continue_sem, portMAX_DELAY); }
static void skip_to_step3() { skip_to_step = 3; } static void skip_to_step3() { skip_to_step = 3; xSemaphoreGive(continue_sem, portMAX_DELAY); }
static void skip_to_step4() { skip_to_step = 4; } static void skip_to_step4() { skip_to_step = 4; xSemaphoreGive(continue_sem, portMAX_DELAY); }
static void skip_to_step5() { skip_to_step = 5; } static void skip_to_step5() { skip_to_step = 5; xSemaphoreGive(continue_sem, portMAX_DELAY); }
static void skip_to_step6() { skip_to_step = 6; } static void skip_to_step6() { skip_to_step = 6; xSemaphoreGive(continue_sem, portMAX_DELAY); }
static void try_step1() { clean_bomb(); step1(); } static void try_step1() { clean_bomb(); step1(); }
static void try_step2() { clean_bomb(); step2(); } static void try_step2() { clean_bomb(); step2(); }
static void try_step3() { clean_bomb(); step3(); } static void try_step3() { clean_bomb(); step3(); }
@ -45,137 +47,144 @@ static void replay_last() {
start_playback(); start_playback();
} }
/// Wait for "*9819" static const StarCodeEntry star_codes[] = {
void step0() {
led_set(IndicatorLED::LED_SPEAKER, LEDColor::LED_COLOR_BLUE);
leds_flush();
StarCodeHandler star_codes[] = {
{ {
.code = "*9819", .code = "9819",
.display_text = "Defusal Initiated", .display_text = "Defusal Initiated",
.should_exit = true, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = nullptr, .callback = nullptr,
}, },
{ {
.code = "*59861", .code = "*9861",
.display_text = "Set Up Wires", .display_text = "Set Up Wires",
.should_exit = false, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = setup_wires, .callback = setup_wires,
}, },
{ {
.code = "*59862", .code = "59862",
.display_text = "Set Game Time", .display_text = "Set Game Time",
.should_exit = false, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = set_game_time, .callback = set_game_time,
}, },
{ {
.code = "*59863", .code = "59863",
.display_text = "Debug Switches", .display_text = "Debug Switches",
.should_exit = false, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = debug_switches, .callback = debug_switches,
}, },
{ {
.code = "*59864", .code = "59864",
.display_text = "Battery Stats", .display_text = "Battery Stats",
.should_exit = false, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = battery_stats, .callback = battery_stats,
}, },
{ {
.code = "*59871", .code = "59871",
.display_text = "Try Step 1", .display_text = "Try Step 1",
.should_exit = false, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = try_step1, .callback = try_step1,
}, },
{ {
.code = "*59872", .code = "59872",
.display_text = "Try Step 2", .display_text = "Try Step 2",
.should_exit = false, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = try_step2, .callback = try_step2,
}, },
{ {
.code = "*59873", .code = "59873",
.display_text = "Try Step 3", .display_text = "Try Step 3",
.should_exit = false, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = try_step3, .callback = try_step3,
}, },
{ {
.code = "*59874", .code = "59874",
.display_text = "Try Step 4", .display_text = "Try Step 4",
.should_exit = false, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = try_step4, .callback = try_step4,
}, },
{ {
.code = "*59875", .code = "59875",
.display_text = "Try Step 5", .display_text = "Try Step 5",
.should_exit = false, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = try_step5, .callback = try_step5,
}, },
{ {
.code = "*59876", .code = "59876",
.display_text = "Try Step 6", .display_text = "Try Step 6",
.should_exit = false, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = try_step6, .callback = try_step6,
}, },
{ {
.code = "*59881", .code = "59881",
.display_text = "Skip To Step 1", .display_text = "Skip To Step 1",
.should_exit = true, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = skip_to_step1, .callback = skip_to_step1,
}, },
{ {
.code = "*59882", .code = "59882",
.display_text = "Skip To Step 2", .display_text = "Skip To Step 2",
.should_exit = true, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = skip_to_step2, .callback = skip_to_step2,
}, },
{ {
.code = "*59883", .code = "59883",
.display_text = "Skip To Step 3", .display_text = "Skip To Step 3",
.should_exit = true, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = skip_to_step3, .callback = skip_to_step3,
}, },
{ {
.code = "*59884", .code = "59884",
.display_text = "Skip To Step 4", .display_text = "Skip To Step 4",
.should_exit = true, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = skip_to_step4, .callback = skip_to_step4,
}, },
{ {
.code = "*59885", .code = "59885",
.display_text = "Skip To Step 5", .display_text = "Skip To Step 5",
.should_exit = true, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = skip_to_step5, .callback = skip_to_step5,
}, },
{ {
.code = "*59886", .code = "59886",
.display_text = "Skip To Step 6", .display_text = "Skip To Step 6",
.should_exit = true, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = skip_to_step6, .callback = skip_to_step6,
}, },
{ {
.code = "*1111", .code = "1111",
.display_text = "Issue Strike", .display_text = "Issue Strike",
.should_exit = false, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = issue_strike, .callback = issue_strike,
}, },
{ {
.code = "*1112", .code = "1112",
.display_text = "????", .display_text = "????",
.should_exit = false, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = flashbang, .callback = flashbang,
}, },
{ {
.code = "*1113", .code = "1113",
.display_text = "replay_last", .display_text = "replay_last",
.should_exit = false, .delay_ticks = pdMS_TO_TICKS(2000),
.callback = replay_last, .callback = replay_last,
}, },
}; };
int len = sizeof(star_codes)/sizeof(StarCodeHandler); const static size_t len = sizeof(star_codes)/sizeof(star_codes[0]);
do_star_codes(star_codes, len);
}
void step0() {
uint8_t _byte;
continue_sem = xSemaphoreCreateBinary();
if (continue_sem == nullptr) {
ESP_FAIL("could not create semaphore");
}
led_set(IndicatorLED::LED_SPEAKER, LEDColor::LED_COLOR_BLUE);
leds_flush();
add_star_codes(star_codes, len);
xSemaphoreTake(continue_sem, portMAX_DELAY);
rm_star_codes(star_codes, len);
}
static const int CURSOR_POS_MAP[5] = {1, 3, 4, 6, 7}; static const int CURSOR_POS_MAP[5] = {1, 3, 4, 6, 7};
static char str_buf[18] = {0}; static char str_buf[18] = {0};

View File

@ -1,12 +1,7 @@
#ifndef STEP_0_H #ifndef STEP_0_H
#define STEP_0_H #define STEP_0_H
#include "../drivers/bottom_half.h" #include "../drivers/all.h"
#include "../drivers/char_lcd.h"
#include "../drivers/wires.h"
#include "../drivers/power.h"
#include "setup_wires.h"
#include "../helper.h"
#include "step1.h" #include "step1.h"
#include "step2.h" #include "step2.h"

View File

@ -2,13 +2,8 @@
#define STEP_1_H #define STEP_1_H
#include <random> #include <random>
#include "../drivers/bottom_half.h" #include "../drivers/all.h"
#include "../drivers/tft.h" #include "../helper.h"
#include "../drivers/leds.h"
#include "../drivers/wires.h"
#include "../drivers/speaker.h"
#include "../drivers/game_timer.h"
#include "../drivers/char_lcd.h"
void step1(void); void step1(void);

View File

@ -1,11 +1,7 @@
#ifndef STEP_2_H #ifndef STEP_2_H
#define STEP_2_H #define STEP_2_H
#include "../drivers/bottom_half.h" #include "../drivers/all.h"
#include "../drivers/wires.h"
#include "../drivers/game_timer.h"
#include "../drivers/leds.h"
#include "../drivers/speaker.h"
#include "../helper.h" #include "../helper.h"
#include <iostream> #include <iostream>
#include <random> #include <random>

View File

@ -21,6 +21,8 @@ static const char* TONE_FILES[] = {
MOUNT_POINT "/high-6.wav", MOUNT_POINT "/high-6.wav",
}; };
static const size_t LCD_STRING_SOMETHING = 0;
static const size_t LCD_STRING_NOTHING = 1;
static const char* LCD_STRINGS[] = { static const char* LCD_STRINGS[] = {
"something", "something",
"nothing", "nothing",
@ -49,13 +51,20 @@ static std::uniform_int_distribution<> lcd_rand_char_dist(0, sizeof(lcd_random_c
static std::uniform_int_distribution<> has_coconut_dist(0, 2); static std::uniform_int_distribution<> has_coconut_dist(0, 2);
static std::uniform_int_distribution<> coconut_position_dist(0, 13); static std::uniform_int_distribution<> coconut_position_dist(0, 13);
const static uint32_t NEOPIXEL_COLOR_IDX_RED = 0;
const static uint32_t NEOPIXEL_COLOR_IDX_YELLOW = 1;
const static uint32_t NEOPIXEL_COLOR_IDX_GREEN = 2;
const static uint32_t NEOPIXEL_COLOR_IDX_BLUE = 3;
const static uint32_t NEOPIXEL_COLOR_IDX_PINK = 4;
const static uint32_t NEOPIXEL_COLOR_IDX_WHITE = 5;
const static uint32_t NEOPIXEL_COLOR_IDX_OFF = 6;
static uint32_t NEOPIXEL_COLORS[7] = { static uint32_t NEOPIXEL_COLORS[7] = {
LEDColor::LED_COLOR_RED, LEDColor::LED_COLOR_RED,
LEDColor::LED_COLOR_ORANGE,
LEDColor::LED_COLOR_YELLOW, LEDColor::LED_COLOR_YELLOW,
LEDColor::LED_COLOR_GREEN, LEDColor::LED_COLOR_GREEN,
LEDColor::LED_COLOR_BLUE, LEDColor::LED_COLOR_BLUE,
LEDColor::LED_COLOR_PINK, LEDColor::LED_COLOR_PINK,
LEDColor::LED_COLOR_WHITE,
LEDColor::LED_COLOR_OFF, LEDColor::LED_COLOR_OFF,
}; };
@ -82,7 +91,7 @@ void step3(void) {
play_clip_wav(MOUNT_POINT "/ready.wav", true, false, 3, 0); play_clip_wav(MOUNT_POINT "/ready.wav", true, false, 3, 0);
// The high pitched tones need to be scaled down by 3 more // The high pitched tones need to be scaled down by 3 more
play_clip_wav(TONE_FILES[tone], false, false, 2 + (tone/3) * 3, 0); play_clip_wav(TONE_FILES[tone], false, false, 1 + (tone/3) * 4, 0);
bool correct = false; bool correct = false;
switch (tone % 3) { switch (tone % 3) {
@ -221,16 +230,16 @@ static bool one_second() {
int red_led_count = 0; int red_led_count = 0;
int blue_led_count = 0; int blue_led_count = 0;
for (int i = 0; i < LED_COUNT; i++) { for (int i = 0; i < LED_COUNT; i++) {
if (indicator_led_idxs[i] == 0) { if (indicator_led_idxs[i] == NEOPIXEL_COLOR_IDX_RED) {
red_led_count++; red_led_count++;
} else if (indicator_led_idxs[i] == 4) { } else if (indicator_led_idxs[i] == NEOPIXEL_COLOR_IDX_BLUE) {
blue_led_count++; blue_led_count++;
} }
} }
uint8_t correct_switches = four_bit_flag( uint8_t correct_switches = four_bit_flag(
speaker_color == 0 || speaker_color == 1 || speaker_color == 2, speaker_color == NEOPIXEL_COLOR_IDX_RED || speaker_color == NEOPIXEL_COLOR_IDX_YELLOW || speaker_color == NEOPIXEL_COLOR_IDX_PINK,
lcd_string_idx == 0 || lcd_string_idx == 1, lcd_string_idx == LCD_STRING_SOMETHING || lcd_string_idx == LCD_STRING_NOTHING,
was_high, was_high,
!was_high !was_high
); );
@ -280,9 +289,9 @@ static bool three_second() {
int red_led_count = 0; int red_led_count = 0;
int blue_led_count = 0; int blue_led_count = 0;
for (int i = 0; i < LED_COUNT; i++) { for (int i = 0; i < LED_COUNT; i++) {
if (indicator_led_idxs[i] == 0) { if (indicator_led_idxs[i] == NEOPIXEL_COLOR_IDX_RED) {
red_led_count++; red_led_count++;
} else if (indicator_led_idxs[i] == 4) { } else if (indicator_led_idxs[i] == NEOPIXEL_COLOR_IDX_BLUE) {
blue_led_count++; blue_led_count++;
} }
} }
@ -345,7 +354,7 @@ static bool six_second() {
bool was_high = (tone / 3) == 1; bool was_high = (tone / 3) == 1;
bool second_switch_correct_state = (indicator_led_idxs[IndicatorLED::LED_S2] == 0) || (indicator_led_idxs[IndicatorLED::LED_S2] == 6); bool second_switch_correct_state = (indicator_led_idxs[IndicatorLED::LED_S2] == NEOPIXEL_COLOR_IDX_RED) || (indicator_led_idxs[IndicatorLED::LED_S2] == NEOPIXEL_COLOR_IDX_OFF);
second_switch_correct_state = second_switch_correct_state || was_high; second_switch_correct_state = second_switch_correct_state || was_high;
rng_leds(); rng_leds();
@ -354,16 +363,16 @@ static bool six_second() {
int green_led_count = 0; int green_led_count = 0;
int blue_led_count = 0; int blue_led_count = 0;
for (int i = 0; i < LED_COUNT; i++) { for (int i = 0; i < LED_COUNT; i++) {
if (indicator_led_idxs[i] == 4) { if (indicator_led_idxs[i] == NEOPIXEL_COLOR_IDX_BLUE) {
blue_led_count++; blue_led_count++;
} else if (indicator_led_idxs[i] == 3) { } else if (indicator_led_idxs[i] == NEOPIXEL_COLOR_IDX_GREEN) {
green_led_count++; green_led_count++;
} }
} }
int pink_led_on_bottom_count = 0; int pink_led_on_bottom_count = 0;
for (int i = IndicatorLED::LED_RFID; i < LED_COUNT; i++) { for (int i = IndicatorLED::LED_RFID; i < LED_COUNT; i++) {
if (indicator_led_idxs[i] == 5) { if (indicator_led_idxs[i] == NEOPIXEL_COLOR_IDX_PINK) {
pink_led_on_bottom_count++; pink_led_on_bottom_count++;
} }
} }

View File

@ -2,12 +2,7 @@
#define STEP_3_H #define STEP_3_H
#include <random> #include <random>
#include "../drivers/bottom_half.h" #include "../drivers/all.h"
#include "../drivers/wires.h"
#include "../drivers/speaker.h"
#include "../drivers/leds.h"
#include "../drivers/char_lcd.h"
#include "../drivers/game_timer.h"
#include "../helper.h" #include "../helper.h"
void step3(void); void step3(void);

View File

@ -2,12 +2,7 @@
#define STEP_4_H #define STEP_4_H
#include <random> #include <random>
#include "../drivers/tft.h" #include "../drivers/all.h"
#include "../drivers/speaker.h"
#include "../drivers/bottom_half.h"
#include "../drivers/game_timer.h"
#include "../drivers/wires.h"
#include "../drivers/char_lcd.h"
#include "../helper.h" #include "../helper.h"
#define TETRIS_USE_FLASH_IMG #define TETRIS_USE_FLASH_IMG

View File

@ -179,16 +179,13 @@ bool submit_6(bool* buttons_cycling, bool button_turned_on, int led_off) {
} }
void step5(void) { void step5(void) {
StarCodeHandler star_codes[] = { StarCodeEntry star_code = {
{
.code = "*2648", .code = "*2648",
.display_text = "Starting...", .display_text = "Starting...",
.should_exit = true, .should_exit = true,
.callback = nullptr, .callback = nullptr,
},
}; };
int len = sizeof(star_codes)/sizeof(StarCodeHandler); add_star_code(star_code);
do_star_codes(star_codes, len);
std::vector<int> all_leds; std::vector<int> all_leds;
@ -226,7 +223,6 @@ void step5(void) {
bool solved_correctly = false; bool solved_correctly = false;
int puzzle = puzzle_dist(gen); int puzzle = puzzle_dist(gen);
// int puzzle = 2;
switch (puzzle) { switch (puzzle) {
case 0: { case 0: {
@ -900,13 +896,13 @@ void step5(void) {
stop_module_timer(); stop_module_timer();
if (solved_correctly) { if (solved_correctly) {
solved_puzzles++; solved_puzzles++;
play_clip_wav(MOUNT_POINT "/correct.wav", true, false, 3, 0); play_clip_wav(MOUNT_POINT "/partdone.wav", true, false, 0, 0);
vTaskDelay(pdMS_TO_TICKS(500)); vTaskDelay(pdMS_TO_TICKS(500));
solved_correctly = false; solved_correctly = false;
} else { } else {
vTaskDelay(pdMS_TO_TICKS(3000)); vTaskDelay(pdMS_TO_TICKS(3000));
} }
clear_all_pressed_released(); play_clip_wav(MOUNT_POINT "/stepdone.wav", true, false, 1, 0);
clean_bomb(); clean_bomb();
} }
} }

View File

@ -1,11 +1,7 @@
#ifndef STEP_5_H #ifndef STEP_5_H
#define STEP_5_H #define STEP_5_H
#include "../drivers/bottom_half.h" #include "../drivers/all.h"
#include "../drivers/game_timer.h"
#include "../drivers/char_lcd.h"
#include "../drivers/leds.h"
#include "../drivers/wires.h"
#include "../helper.h" #include "../helper.h"
#include <random> #include <random>
#include <iostream> #include <iostream>

View File

@ -2,10 +2,8 @@
#define STEP_6_H #define STEP_6_H
#include "wires_puzzle.h" #include "wires_puzzle.h"
#include "drivers/wires.h" #include "../drivers/all.h"
#include "drivers/bottom_half.h" #include "../helper.h"
#include "drivers/sd.h"
#include "drivers/speaker.h"
void step6(void); void step6(void);