Skip to content

user manual

parsupo edited this page Aug 11, 2026 · 7 revisions

KITKAT User Manual

Ook beschikbaar in het Nederlands: Gebruikershandleiding

Your KITKAT is a robot cat companion: it shows an animated eye, tells the time and weather, plays internet radio, dances, plays games, glows, and reacts to petting, light and movement with its own moods.


1. Getting started

The controls

rocat_joysticks

KITKAT has two joysticks and a touch strip (its back/head).

Right joystick — controls the current screen:

Input Action
▲ / ▼ move selection up/down
◀ / ▶ change value / move left-right
OK (center press) confirm / start / play-stop

Left joystick — global shortcuts (work on any screen):

Input Action
◀ / ▶ previous / next screen
open the Quick Menu
PANIC STOP — instantly stops motors, LEDs and audio. Works everywhere, even mid-game
CANCEL (center press) back / exit

Touch strip: stroke it slowly enough to cross at least 3 pads over at least 3 seconds to register as petting — a fast flick may not register. Petting always makes KITKAT feel Love, and (if Mood → Audio is on) plays a purr for as long as you keep stroking.


Powering on and off

  • On: press the left joystick center button. (KITKAT also wakes itself for the alarm, and — if Wake/Move is enabled — when you tap or knock it.)
  • Off: open Menu → Power → Shut Down, or just leave it alone (see Idle sleep below).
  • Restart: Menu → Power → Restart.

While it's charging/docked, "off" looks like a couple of quick automatic restarts. The charger backfeeds power past the internal power switch, so KITKAT physically can't cut its own power while plugged in. Instead it reboots into a bare-bones standby mode, turns everything off, and polls the power button/alarm/tap-wake directly until one of them fires — that's normal, not a malfunction.

Idle sleep

No button/touch activity (and no charger plug/unplug) for a while triggers, in order:

...while running on battery ...while charging/docked
Backlight off at 5 min idle Backlight dims at 5 min idle
Radio stream stops at ~3 h 55 min idle (device stays on)
Full shutdown at 15 min idle — extended to 4 h if the radio is playing, so a battery-powered stream doesn't get cut off just because no buttons were touched Full shutdown at 8 h idle

Turn on Settings → Backlight to disable all of this (screen and radio never sleep on their own); a Power → Timer countdown (15–120 min) is a separate one-shot "turn off in N minutes" that ignores activity entirely once armed.

Charging

Connect the charger. On the screen's top status row:

  • battery icon blinking = charging
  • star icon = charger connected (also stays on when charging is complete)

If the battery is critically low (below ~3.2 V, checked once at boot and every 10 seconds while running), KITKAT shows "BATTERY LOW – CHARGE ME NOW" for a few seconds and turns itself off — also disabling tap-to-wake and the alarm's power-on so it can't wake itself back up onto a battery that's still too low. It will refuse to stay on until you connect the charger. (The battery-icon low-battery warning on the status row fires a little earlier, around 3.4 V, so you normally get a heads-up before the automatic shutdown.)

Wifi connection (radio/weather updates/automatic time synchronization)

To play music from the radio or to get weather updates or to sync automatically the time, you need to establish a wifi connection. Read in section 9 - wifi more about how to connect to the wifi.

2. The screens

Screens rotate automatically: Clock (10 s) → Weather (20 s) → Eye (20 s) → Radio (20 s) → Jokes (self-paced) and around again. Use right-joystick ◀/▶ to browse manually; going past the last screen reaches the Menu (it never appears on its own).

  • Clock — time and date from the built-in real-time clock (keeps running while KITKAT is off). Shows the next alarm time underneath if one is set.
  • Weather — current conditions for your location (found automatically via your internet connection), refreshed hourly, with two rotating pages (temperature/humidity/description, then wind/cloud/rain/pressure) and animated rain when it rains. Shows "No WiFi" until it has data.
  • Eye — KITKAT's animated eye showing its current mood (see §5). Pet the touch strip while this screen is up!
  • Radio — internet radio player (see §4).
  • Jokes — a dad joke: word-wrapped setup, a short pause, then the punchline, then it moves on by itself (no need to press anything). Told from a local library built into the firmware, so it works without WiFi too.

Status icons (top edge, always visible): WiFi connected (arrows icon), charging (battery icon blinking) / charger connected (star icon).

Clock screen Weather screen 1 Weather screen 2 Eye screen Radio screen Jokes screen

(No WiFi yet? The Weather screen looks like this instead:)

Weather screen, no WiFi yet

3. Quick Menu (right joystick ▲)

A fast overlay for the most-used settings, reachable from any screen — you don't need to be in the Menu first. It uses the same right-joystick scheme as everything else (§1): ▲/▶ open it and move between/change the 5 rows below, moves back up/decreases a value, OK confirms where noted, CANCEL closes it and returns you to exactly the screen/state you were on before.

Row What it does
Vol radio volume ◀/▶ in 5 % steps; OK = instant play/stop
Motor motors on/off
LEDs LED mode: Off / Auto / Manual
Move pick a dance move (needs Motor ON) — see the full list below
FX pick a light effect or saved color slot — see the full list below

Changes here take effect immediately and are saved the same as making them from the Menu — Quick Menu, the Menu, and the web dashboard all read/write the exact same settings, so whichever one you use last "wins."

Quick Menu overlay

Getting to the full Menu instead: the Quick Menu only covers these 5 shortcuts — for everything else (WiFi, boot mode, the alarm, Time, Games, etc.) use the actual Menu, reached by pressing right-joystick ▶ repeatedly past the last screen in the rotation (Clock → Weather → Eye → Radio → Jokes → Menu), or ◀ from Clock to reach it from the other direction. The Menu never appears in the automatic rotation — you always have to navigate to it deliberately. See §8 for everything in it.

All 14 dance moves (Move row / Effects → Dance)

Wiggle, Spin, Rock, Bow, Twist, Moonwalk, Zigzag, Drumroll, Victory, Zigzag B, Bow B, Moonwalk F, Drumroll B, Party.

All 21 light effects + 5 color slots (FX row / Mood → Effect)

# Name # Name # Name
1 Breath 8 Curious 15 Prowl
2 Blink 9 Angry 16 Twinkle
3 Purr 10 Happy 17 Police
4 Alert 11 Matrix 18 Sunrise
5 Sleep 12 Fire 19 Cozy
6 Scan 13 Thunder 20 Midnight
7 Heartbeat 14 Hypno 21 Disco

...followed by Slot 1–5, the custom per-LED colors you design and save in the web dashboard (§7). Picking anything here only actually lights up the LEDs while LEDs → Manual (or Mood → LED Mode → Manual) is set — see §5 for how LED Mode gates all of this.


4. Internet radio

Only in "Web Radio" boot mode (the default — see §8).

On the Radio screen:

  1. Select the station row (▲/▼), browse stations with ◀/▶ — a * marks a station you've selected but not started yet — then press OK to tune.
  2. The volume row changes volume in 5 % steps. Going below 0 % stops the radio; pressing ▶ while stopped starts it again. (Under the hood, 0–100 % on screen maps onto a 40–100 % driver range — anything quieter than that is inaudible noise on this hardware, so "0 %" just means stopped.)
  3. The PLAY/STOP row toggles playback with ◀/▶ or OK.

While playing, the screen shows the WiFi signal strength and the scrolling song/program title, when the station broadcasts one (ICY metadata). If a stream drops out, KITKAT notices within about a second and reconnects to the same station automatically.

KITKAT remembers the station, volume and whether it was playing, and resumes after the next power-on.

Managing stations (add/remove, up to 20) is done from the web dashboard in Web Server mode (§7) — the 12 built-in Belgian/European stations can't be deleted, only your own additions.


5. Lights, dances and moods

Lights (6 RGB LEDs: two eyes, two ears)

  • Master switch: Mood → LED Mode (Off / Auto / Manual — or Quick Menu → LEDs). Off keeps every LED dark. Auto lets the mood engine pick effects on its own (see Moods below). Manual hands control to your own Effect pick and color slots instead.
  • Mood → Effect picks one of 21 animated effects, or one of 5 color slots you design and save in the web dashboard (both only take effect while LED Mode is Manual). Mood → Brightness dims the whole strip; Mood → Eye Dim further dims just the two eye pixels on top of that.
  • During games and in the menu the eye LEDs stay dark on purpose (they point straight at you).
All 21 animated effects
# Name # Name # Name
1 Breath 8 Curious 15 Prowl
2 Blink 9 Angry 16 Twinkle
3 Purr 10 Happy 17 Police
4 Alert 11 Matrix 18 Sunrise
5 Sleep 12 Fire 19 Cozy
6 Scan 13 Thunder 20 Midnight
7 Heartbeat 14 Hypno 21 Disco

Slots 1–5 (custom per-LED colors) sit right after these in the same Effect list.

Dance moves

  • Enable Effects → Mot En first (safety gate — dances refuse to run with motors off, and a power cycle always starts with the dance stopped). Effects → PWM x fine-tunes motor power if a unit runs hot or weak.
  • Pick a move under Effects → Dance or Quick Menu → Move: Wiggle, Spin, Rock, Bow, Twist, Moonwalk, Zigzag, Drumroll, Victory, Zigzag B, Bow B, Moonwalk F, Drumroll B, Party.
  • Right joystick ▼ (panic stop) halts everything instantly.

Moods

KITKAT continuously re-evaluates its mood from a few real sensors — room darkness, whether it's being moved/shaken, WiFi connection, and battery level — checked whenever one of those changes (or at least every minute). The eye animation always follows the current mood. When more than one condition applies, the first match in the table below wins (e.g. a dark room where it's also being shaken shows Evil, not Sleepy):

Mood Eye How you get into it
Neutral Neutral The default — none of the other conditions below apply
Happy Happy The charger was just plugged in (shown for 30 s, then falls back to whatever the table below would otherwise pick)
Sad Sad Battery low and WiFi connected
Excited Excited Being moved or shaken (and battery not low)
Evil Evil Room is dark and it's being moved or shaken
Angry Angry Not currently triggered automatically — reserved for a future sensor hookup
Sleepy Sleepy Room is dark and it's sitting still
Surprised Surprised Not currently triggered automatically — reserved for a future sensor hookup
Confused Confused Not currently triggered automatically — reserved for a future sensor hookup
Nervous Nervous Battery low and no WiFi
Love Love Petting the touch strip (shown for 30 s, then falls back the same way as Happy)
Bored Bored No button/pet/motion activity at all for 2+ hours

Set Mood → LED Mode to Auto to let these moods also drive the lights, or Mood → Audio to let some of them trigger a sound clip:

Mood Light effect (Auto mode) Sound
Sad Breath
Love Purr Purr (sustained while petting)
Sleepy Sleep
Bored Scan a "left alone" clip
Excited Curious
Angry Angry an angry clip
Nervous Thunder
Evil Hypno
Neutral / Happy / Surprised / Confused (no automatic light — Happy still purrs, see below) Happy → Purr

6. Games

Menu → Games: Dino Runner, Snake, Breakout, Connect 4, Invaders, Hunt Wumpus.

Every game starts with a title screen: OK to play, CANCEL to leave. After game over, OK restarts and CANCEL exits. All six are played with the right joystick — the same ▲▼◀▶/OK/CANCEL you use everywhere else (§1) — not the left one; the left joystick's shortcuts are disabled while a game is running, except panic stop (▼), which always still works and immediately exits back to the carousel. The eye LEDs stay dark during games for the same reason they do in the menu (they point straight at you).

Dino Runner

Dino Runner title Dino Runner gameplay Dino Runner game over

An endless runner. Cacti and a bird approach from the right; get past as many as you can.

  • ▲ or OK — jump (only while on the ground)
  • — duck

Jump over cacti — ducking doesn't save you from one. The bird only threatens you while running upright, so either jumping over it or ducking under it works. Landing right as an obstacle arrives has a brief forgiveness window, so close calls at the exact moment you jump aren't unfair. Your score ticks up simply by surviving, and the game speeds up the longer you last. One hit ends the run — there are no extra lives.

Snake

Snake title Snake gameplay Snake game over

Classic snake on a 25×10 grid, with 3 lives.

  • ▲▼◀▶ — turn (you can't reverse directly into yourself)

Steer into the hollow square to eat it — the snake grows by one and speeds up a little each time. Running into the outer border costs a life and resets the snake back to its starting length and position (the run continues); running into your own body ends the game immediately, no life saved. Game over once all 3 lives from border hits are used up.

Breakout

Breakout title Breakout gameplay Breakout game over

Paddle-and-bricks, 3 lives.

  • ◀▶ — move the paddle
  • OK — launch the ball ("OK>GO" is shown while waiting to serve)

Bounce the ball into the 9×4 brick wall to clear bricks (10 points each); where the ball hits the paddle changes the angle it bounces off at, so you can aim. Letting the ball fall past the paddle costs a life and re-serves it; lose all 3 lives and it's "YOU LOSE." Clear every brick and the wall resets with a slightly faster ball — there's no final level, just an increasingly fast high-score run.

Connect 4

Connect 4 title Connect 4 gameplay Connect 4 game over

You (○, hollow circles) versus the built-in AI (●, filled circles) — this is not a two-player mode.

  • ◀▶ — move the column cursor
  • OK — drop your piece into that column

First to connect 4 in a row — horizontally, vertically, or diagonally — wins. The AI takes a winning move if one exists, otherwise blocks your winning move if you have one, otherwise prefers the center columns. A full board with no winner is a Draw.

Invaders

Invaders title Invaders gameplay Invaders game over

A 5×3 alien formation marches side to side (dropping a row and reversing direction each time it hits an edge) over 3 lives.

  • ◀▶ — move your ship
  • OK — fire (only one of your shots can be on screen at a time)

Aliens shoot back at random once any are alive; getting hit by an alien bullet costs a life, and losing all 3 ends the game ("YOU LOSE"). If the formation itself reaches your ship's row before you clear it, that's an instant "INVADED! YOU LOSE." Destroy every alien in the formation to win ("YOU WON") — there's a single wave, no escalating levels.

Hunt Wumpus

Hunt Wumpus title Hunt Wumpus gameplay Hunt Wumpus game over

The classic text-adventure cave crawl, turn-based (nothing moves until you do). You're in a 20-room cave (each room has exactly 3 tunnels) hunting the Wumpus with 5 arrows, while avoiding 2 bottomless pits and 2 giant bats.

  • ◀▶ — cycle which of the 3 visible tunnels is selected
  • — toggle shoot mode on/off (only available while you still have arrows)
  • OK — walk through the selected tunnel (normal mode), or fire an arrow into it (shoot mode)

Every time you move, KITKAT tells you what's next door: "Wumpus!" if the Wumpus is in an adjacent room, "Draft!" for a pit, "Bats!" for a bat room (any combination, or "All clear." if none apply) — use these clues to figure out safe rooms before you enter them. Walking into the Wumpus's room gets you eaten; walking into a pit means you fell in — both end the game. Walking into a bat room doesn't hurt you, but the bats grab you and drop you in a random room instead, so re-check your clues afterward. Firing an arrow costs one whether you hit or miss; hit the Wumpus and you win instantly ("WUMPUS SLAIN! WIN!"); miss and there's a 50/50 chance the startled Wumpus itself wanders into an adjacent room — which occasionally means it wanders straight into yours, ending the game. Run out of arrows without ever hitting it and it's "No arrows! YOU LOSE."


7. Web dashboard (remote control from your phone/PC)

Switch Menu → Settings → Boot Mode to Web Srv and restart (§8). Then open KITKAT's address in a browser on the same WiFi — use Menu → Settings → Show IP and scan the QR code.

KITKAT web dashboard

The dashboard gives you:

  • Radio manager — add/remove stations, choose which station STREAM mode plays on its next boot, set the volume.
  • LED studio — LED Mode (Off / Auto / Manual), effect picker, brightness and color sliders with a live preview on the robot, plus 5 custom color slots: pick a color for each of the 6 LEDs individually (you see it live), then Save the slot. Apply slots later from the LCD menu or Quick Menu (FX → Slot 1–5). Set LED Mode to Manual while designing so the mood engine doesn't repaint your work.
  • Drive — steer KITKAT like an RC car with the on-screen D-pad or WASD/arrow keys, with a speed slider. You must tick Motors Enabled first; the robot stops automatically if the connection drops (2 s), the tab is hidden, or you release the keys. Driving is always disabled after a restart.
  • Clock — set the time manually, choose the NTP time server and timezone, or trigger an immediate time sync.
  • Alarm Sound — pick which saved station plays when the alarm rings, and a local backup clip for when there's no WiFi at the time. (Turning the alarm on/off and setting its time is still done from the LCD menu.)

While in Web Server mode the radio on the device is disabled (the Radio screen says so) — the two features share the same audio hardware.

(Full walkthrough of every dashboard option, with a screenshot of each card, is on the Web Dashboard wiki page.)


8. Settings reference

The Menu is a hierarchical, GEM-style menu (5 rows per screen — a scrollbar appears on the right edge on pages with more items). Every real setting lives on one of these pages:

Menu
├── Settings
│   ├── Acc WK — tap/knock-to-wake toggle
│   ├── Backlight — always-on override
│   ├── Boot in — Web Radio / Web Srv
│   ├── WiFi Setup — guided provisioning
│   ├── Show IP — QR of the dashboard address
│   ├── Test — internal diagnostic screen
│   ├── Version — Date / Time / Branch / Commit / Tag / Dev ID (read-only)
│   └── Forget WiFi — erase credentials, reopen setup
├── Effects
│   ├── Mot En — motors master switch
│   ├── PWM x — motor power calibration
│   └── Dance — run a move now
├── Mood
│   ├── Audio — mood sound clips on/off
│   ├── LED Mode — Off / Auto / Manual
│   ├── Effect — light effect / color slot (Manual mode)
│   ├── Brightness — light dimmer
│   └── Eye Dim — extra eye-only dimmer
├── Time — Hour/Min/Sec/Day/Month/Year + Apply
├── Alarm
│   ├── Enable, LED, Move, Sound
│   ├── Station, Backup — what plays when it rings
│   └── Set Alarm — Hour/Minute + Apply
├── Power
│   ├── Timer — one-shot power-off countdown
│   ├── Restart
│   └── Shut Down
└── Games — Dino Runner / Snake / Breakout / Connect 4 / Invaders / Hunt Wumpus

All settings are remembered across power cycles except where noted in the tables below. State shown in the menu always reflects the latest value, even if it was just changed from the Quick Menu or the dashboard.

Menu → Settings

Setting Options What it does Remembered?
Acc WK on/off tap/knock the sleeping KITKAT to wake it yes
Backlight on/off screen backlight never turns off (also disables idle sleep entirely, see §1) yes
Boot Mode Web Radio / Web Srv radio streaming vs. web dashboard (applies after Restart) yes
WiFi Setup guided WiFi connection (§9)
Show IP QR code with KITKAT's dashboard address
Test internal diagnostic screen (touch pads, LDR, battery, ADC stats, accelerometer)
Version read-only: build date/time, git branch/commit/tag, device serial
Forget WiFi erase WiFi credentials and reopen setup

Settings page 1/2 Settings page 2/2 Version page 1/2 Version page 2/2

Menu → Effects

Setting Options What it does Remembered?
Mot En on/off master switch for all motor movement yes
PWM x 0.70–1.30 fine-tune motor power if a unit runs hot/weak yes
Dance None / 14 moves run a dance move now (needs Mot En) no — always off after power-on
Effects page

LED control (mode, effect, brightness, color slots) lives on the Mood page below, not here.

Menu → Mood

Setting Options What it does Remembered?
Audio on/off moods may trigger a sound clip (petting/charging purr, "left alone" sound) yes
LED Mode Off / Auto / Manual Off: LEDs stay dark. Auto: mood picks the light effect. Manual: your Effect pick/color slots own the LEDs instead yes
Effect None / 21 effects / Slot 1–5 which light effect plays while LED Mode is Manual yes
Brightness 0–100 % dims animated effects and saved color slots yes
Eye Dim 0–100 % extra dimming just for the eye LEDs, on top of Brightness yes

Mood page 1/2 Mood page 2/2

Menu → Alarm

Setting Options What it does Remembered?
Alarm On on/off enable the daily alarm yes (stored in the clock chip)
LED same effect list as Mood → Effect light effect while the alarm rings yes
Move same move list as Effects → Dance dance move while the alarm rings yes
Sound on/off play audio while the alarm rings (Web Radio boot mode only — see §7) yes
Station your saved stations which station streams for the alarm yes
Backup sound list local clip played if the station can't be reached (or there's no WiFi) yes
Set Alarm hour/minute + Apply alarm time (fires every day) yes

Alarm page 1/2 Alarm page 2/2 Set Alarm page

Menu → Power

Setting Options What it does Remembered?
Timer None/15…120 min one-shot power-off countdown from now (activity does not cancel it; RAM-only, cleared on any boot) no
Restart reboot
Shut Down power off now — if charging/docked it can't fully cut power, so it briefly reboots into standby instead (see §1)
Power page

Menu → Time

Date and time fields (Hour/Minute/Second/Day/Month/Year) + Apply — sets the clock manually. Kept by the battery-backed clock chip, independent of every other setting.

Time page 1/2 Time page 2/2

Menu → Games

Games page 1/2 Games page 2/2

The main menu itself

Menu root page 1/2 Menu root page 2/2

The menu auto-exits to the carousel after 60 seconds idle; CANCEL on this root page exits immediately.

The alarm

When the alarm time arrives, KITKAT switches itself on (if off) and shows a ringing-bell screen with the current time. Press any key to dismiss. The alarm repeats daily until you turn Alarm On off. Whatever the LCD was showing and whatever the radio was doing before the alarm fired both come back automatically once you dismiss it.

Alarm screen, normal frame Alarm screen, inverted frame


9. Connecting to WiFi

  1. Open Menu → Settings → WiFi Setup (this also starts automatically on a brand-new KITKAT).
  2. Scan the first QR code with your phone — it joins you to the temporary ROCAT-xxxx setup network.
  3. The screen switches to a second QR code — scan it (or browse to 192.168.4.1) to open the setup page, pick your home WiFi and enter its password.
  4. When KITKAT shows the checkmark and your network name, you're done — it returns to the previous screen automatically after a couple of seconds.

Once online, KITKAT automatically: finds your location and sets its timezone from it (it knows ~45 common zones by name, and falls back to a plain UTC-offset if yours isn't one of them — either way it always sets something sensible), syncs the clock once per power-on, and fetches weather.

Without WiFi everything local still works — clock, eye/moods, lights, dances, games — but radio, weather and time-sync don't.


10. Tips & troubleshooting

Symptom Explanation / fix
KITKAT reboots itself a couple of times right after "Shut Down" Normal while charging/docked — see the note in §1. It's settling into standby, not malfunctioning.
Screen went dim/dark by itself Idle sleep — see §1's table. Press any button, or turn on Settings → Backlight to disable idle sleep entirely.
KITKAT turned itself off Idle sleep, the Power → Timer countdown, or a critically low battery (it shows "CHARGE ME NOW" first).
Radio won't start Check the WiFi icon; radio needs Web Radio boot mode (§8) and only starts once WiFi is connected. Some station formats (AAC/HLS) are not currently supported — stick to MP3 streams.
Radio screen says "Disabled by webserver" You're in Web Srv boot mode. Switch Boot Mode back and restart.
Dance selected but nothing moves Turn Mot En on first, then re-select the move. Also check nothing triggered the panic stop.
Lights don't change when picking an effect Set Mood → LED Mode to Auto or Manual (Off keeps them dark on purpose).
Alarm rings but no sound plays Check Alarm → Sound is on and you're in Web Radio boot mode — Alarm Sound has no effect in Web Srv mode.
Petting doesn't register Stroke slower — it needs to cross at least 3 pads over at least 3 seconds, a quick flick won't count.
Wrong time It syncs once per power-on when WiFi connects. Set it manually under Set Time or the dashboard, or trigger a sync from the dashboard's NTP Sync button. Timezone is set automatically from your location (see §9).
Can't remove a station in the dashboard Built-in stations can't be deleted, only your own additions.
Robot drives then suddenly stops (dashboard) The safety watchdog stopped it — connection hiccup, hidden tab, or you clicked into a text box. Re-press the direction.
Nothing responds at all Use the physical reset button, then power on normally.

Firmware documentation for developers lives in the same folder — start at Home.

Clone this wiki locally