I want to re-create "Keep Talking and Nobody Explodes" in real life. Here's the manual: https://bombmanual.com/web/index.html I'll need supplemental pages for the switches module.
Here's an example: https://heathbar.github.io/keep-talking/
I think I can use my extra Adafruit Metro M7 with AirLift and CircuitPython to do the whole thing instead of a separate microcontroller for each module.
Here are some thoughts:
Progressively get harder. With a way to re-set the "level". Ability to select the level that you want to play? Only after unlocked?
Shorter Time Allotment
Fewer Strikes
Repeat Solutions - Some modules go through multiple rounds to be de-fused. Eg: Who's on First, Memory
More Modules - Initially it looks like you only have to de-fuse the top of the box. After completing it (some number of times, or at a level of efficiency, a key appears that unlocks the bottom of the box with more modules)
Switch to turn on / off back modules when the back is on.
Even after opening the back, different difficulty levels turning some modules off, adjusting time, strikes, etc.
Can I make the maze turn from 6x6 to 8x8???
Modules:
Wires:
Just like Heathbar. Add resistors to wires so the controller knows which wire is where.
Big Button:
1 x Larger OLED Display
under a big button with a fold down cover.
RGB LED strip
Keypad:
4 x 0.66” Arduino OLED Displays - see https://hackaday.io/project/176239-keybon-adaptive-macro-keyboard
4 x micro buttons
Simon Says:
4 x Arcade Buttons w / LED
Who's on First:
6 x 0.66” Arduino OLED Displays
6 x micro buttons
1 x Larger OLED Display
5 rectangle LEDs
Memory:
1 x Larger OLED Display
4 x 0.66” Arduino OLED Displays
4 x micro buttons
5 rectangle LEDs
Switches:
5 x switches
11 x LEDs
Maze:
6 x 6 LED array
4 x micro buttons
Password:
10 x micro buttons
1 x Larger OLED Display
Venting Gas:
1 x Larger OLED Display
2 x micro buttons
2 x Number Display
Knob:
12 x LEDs
2 x Number Display
1 x 4 position knob
Front side:
Maze, Big Button, Venting Gas, Timer, Keypad, Wires
Back Side:
Simon Says, Who's on First, Knob, Memory, Switches, Password
Communication:
Main Module: Send active signal to modules. Listen for complete modules. Individual modules: Listen for active signal. Send complete signal.
Main Module
Timer
Strikes indicators
Big Button
LCD for Word
LEDs for color
LED Strip for bar color
LED for "Active/Disarmed"
Battery LCDs (needed for Big Button module)
Ports LCD (needed for Big Button module)
Indicator LCD(s) (needed for Big Button module)
setup() {
mode = startup
}
loop(){
switch mode:
case idle:
Do some coordinated light flashing across the front modules
if button press:
mode = startup
case startup:
check connections to each module
read last level
display battery level, current level (based on last level), current level info (# modules, strikes, time limit)
if button press:
if button release:
if button duration >= 10 seconds:
current level = 1
else if button duration >= 5 seconds:
current level -= 1
else:
beep, beep, beep, beeeeeeep
based on level:
set timer
set up strikes indicators
set battery lcds
set ports lcds
set indicator lcds
set Big Button Word
set Big Button Color
send active signals to modules
listen for acks from active modules
mode = running
end if
end if
case running:
if timer = 0:
mode = lose
if strikes = 3:
mode = lose
for each module in activeModules[]:
if module = lose:
mode = lose
if module = strike:
strikes += 1
update strike indicator
module = Active
if module = Active:
mode = running
if no modules Active:
mode = won
case lose:
Kapow
flashing lights
You lose!!!!
if button press:
mode = startup
case won:
You won!!!!
final level += 1
if button press:
mode = startup
}
Simon Says / Wires Modules
Serial Number LCD (needed for Simon Says module) 4 color buttons LED for "Active/Disarmed"