Skip to content

Icon Sound and Gesture Reference

Ahmed Dabak edited this page Jul 25, 2026 · 3 revisions

Icon, Sound and Gesture Reference

The complete catalogs of named Icon, Sound, and Gesture values, plus the raw ids they map to. These are enums, so the compiler catches a typo -- Icon::Hart will not build, where a bare number never complains.

Icons

Used with Mouth::show() and Matrix::drawIcon(). These 21 shapes map to the built-in OttoDIYLib mouth table.

Icon:: Description
Heart A heart
Happy Open smile
HappyClosed Closed happy mouth
Smile A smile
Sad A frown
SadOpen Open sad mouth
SadClosed Closed sad mouth
Angry Angry mouth
Surprised Big surprise, wide open
SmallSurprise A small "oh"
Confused Wavy, puzzled mouth
TongueOut Sticking the tongue out
Vampire1 Fangs, variant 1
Vampire2 Fangs, variant 2
Line Neutral straight mouth
Diagonal A diagonal line
Ok A check mark
X A cross
Question A question mark
Thunder A lightning bolt
Culito The classic Otto "culito"

Digits 0 through 9 are shown separately with Mouth::showDigit(), not as icons.

The console mouth <name> command exposes a common subset by name: heart happy smile sad angry surprised confused tongue ok x question line. The full set above is reachable from code.

Sounds

Used with Voice::play() and Buzzer::play(). These 19 sounds are the built-in OttoDIYLib songs.

Sound:: Typical use
Hello Connection, greeting
Goodbye Disconnection
ButtonPushed Acknowledging input
Mode1 Mode switch 1
Mode2 Mode switch 2
Mode3 Mode switch 3
Surprise Sudden event
OhOoh Uh-oh
OhOoh2 Uh-oh, variant
Cuddly Affection
Sleeping Going to sleep
Happy Success
SuperHappy Big success
HappyShort Quick positive blip
Sad Failure
Confused "I do not understand"
Fart1 A fart
Fart2 A fart, variant
Fart3 A fart, variant

Gestures

Used with Gestures::play() and LegServos::playGesture(). A gesture is a whole canned performance -- leg/foot movement, a face on the matrix, and a sound, choreographed together. These 13 map to the OttoDIYLib Otto* gesture ids, and the choreography itself lives in OttoDIYLib's playGesture().

Each gesture blocks for roughly 0.5 to 3 seconds (nothing else in loop() runs meanwhile) and self-resets at the end -- it returns to home() and shows a happy-open mouth.

Gesture:: What Otto does Duration
Happy Chirps, smiles, gives one side-to-side swing, plays a happy jingle ~1 s
SuperHappy The excited version: a happy song, rocks up on its tiptoes twice, then a super-happy song ~2.5 s
Sad Slumps into a drooped pose, frowns, and sighs down a scale of falling tones ~2.5 s
Sleeping Settles into a low "bed" pose and snores through an animated Zzz dream mouth (four breaths), then a cuddly sigh ~3 s
Fart A three-part rear-tilt routine with a tongue-out face and three escalating fart sounds ~2.5 s
Confused Cocks its head to one side with a wavy mouth and a puzzled warble ~1 s
Love Shows a heart, plays a cuddly tune, and sways through two slow crusaito steps ~3.5 s
Angry Scowls, stabs out sharp aggressive tones, and snaps its head left then right ~2 s
Fretful Anxious: tense tones, then nervously jitters a foot back and forth four times ~1.5 s
Magic A spell-casting ripple across the mouth with a rising/falling warble, four times. Face and sound only -- no body movement ~3 s
Wave A wave pattern scrolls across the LED mouth with a warbling sweep. A screen animation, not a physical wave -- for that use Arms::waveRight() ~4 s
Victory Splays its feet outward with rising sci-fi tones, looks surprised, then celebrates with tiptoe rocks and a super-happy song ~3 s
Fail Sinks into a defeated collapse down a falling scale, shows X-eyes, then goes limp -- it detaches the servos with a long low groan -- before recovering ~4 s

Note Gestures move the legs, so they honour Legs::disable() / Motion::disable(). On the bench, a disabled robot performs no gesture at all, rather than the face and sound without the movement. (Magic and Wave are the exceptions: they are mouth-and-sound only, so they still play while movement is disabled.)

Warning Two names mislead. Wave is a mouth animation, not a greeting wave with a limb -- the physical wave is Arms::waveRight(), a separate call on the Humanoid build. Fail deliberately goes limp mid-gesture (detachServos()), so the robot flopping before it recovers is expected, not a fault.

App protocol ids

The Otto DIY app refers to gestures and sounds by number. AppLink maps them in the same order the official firmware uses: gesture H 1 is Gesture::Happy, sound K 1 is Sound::Hello, and so on down each list above.

Clone this wiki locally