THE GAMER Lab — Controllers, Games & Play

THE GAMER turns POOM into a wireless input device and a compact game platform. Play flash-ready Arduboy games, build or migrate your own with the POOM Arduboy library, then use BLE HID, motion tools, and LEDs to make the device your controller.

How pairing works: each tool advertises POOM as a Bluetooth input device. Pair it once from your host's Bluetooth settings, then it behaves like any BLE keyboard/mouse.

Experiment 1 — TINY CONTROL: BLE Keyboard

What it does: a compact BLE keyboard/HID controller (poom_ble_keyboard / poom_ble_hid) that sends keystrokes to a paired host. Map POOM's buttons to keys and drive a game, a slideshow, or any keyboard-controlled app.

Run it: THE GAMER → TINY CONTROL → A, pair "POOM" as a Bluetooth keyboard, then open something that takes key input.

Observe: button presses land as keystrokes on the host with no dongle. A connection-state callback reports when the host attaches or drops.

Experiment 2 — WII: Air Mouse

What it does: WII runs an air-mouse pipeline — it reads the onboard IMU, processes motion into pointer movement, and sends it over BLE HID (with a connection callback for air-mouse state). Tilt and move POOM to steer the cursor.

Run it: THE GAMER → WII → A, pair as a Bluetooth mouse, then move the device.

Observe: the cursor tracks your motion. Hold still to feel the drift/steadiness — that's the sensor-fusion tuning at work.

Experiment 3 — AIR DRUMS: Motion to Sound

What it does: Air Drums (poom_air_drums) uses the IMU to detect strike gestures and triggers drum hits — a fun demonstration of turning motion thresholds into events.

Run it: THE GAMER → AIR DRUMS → A and make a drumming motion.

Observe: a sharp downward motion crosses a threshold and fires a hit. This is the same detect-a-gesture logic you'd train more robustly with EDGE AI.

Experiment 4 — LED Rainbow: Onboard Light Show

What it does: the WS2812 rainbow animation (poom_led_rainbow) drives the onboard addressable LED strip. It's the default owner of the strip — note that any Lua script calling Led.* temporarily takes it over and restores it on exit.

Run it: launch the LED effect from the menu, then try overriding it from a Lua script to see the hand-off.

Observe: the strip animates smoothly; brightness and pixels are the same primitives exposed to Lua's Led table.