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.
   Each module has: 
     Main.ino
     IOManager.h for displays, leds, buttons, etc.
     ModuleState.h for module win/lose logic
     Comms.h for incoming, outgoing, and pass-through communication


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
               BigButtonModels.begin()
                 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"