-
Notifications
You must be signed in to change notification settings - Fork 0
Home
OttoFlow is a rapid-development framework for Otto DIY robots. It sits on top of OttoDIYLib and gives you an expressive, unit-explicit API: you describe what the robot should do, not which pin holds which wire.
#include <OttoFlow.h>
void setup() {
OttoFlow::start(); // classic Otto kit, zero configuration
Mouth::show(Icon::Heart);
}
void loop() {
if (Eyes::closerThanCm(15)) {
Mouth::show(Icon::Surprised);
Legs::walkBackward(2);
} else {
Mouth::show(Icon::Happy);
Legs::walkForward(1);
}
}That is a complete obstacle-avoiding robot. No pin maps, no library wiring, no magic numbers. See Examples for fuller, ready-to-flash sketches.
| Task | Raw OttoDIYLib | OttoFlow |
|---|---|---|
| First sketch | pin defines and init boilerplate | OttoFlow::start(); |
| Show a heart | putMouth(13) |
Mouth::show(Icon::Heart) |
| Read distance | write your own pulseIn code |
Eyes::distanceCm(), median filtered |
| Walk forward |
walk(2, 1000, 1) -- what is the 1? |
Legs::walkForward(2) |
| Test hardware safely | comment out code, reflash |
Motion::disable() plus the serial console |
| Go lower level | -- | full module layer and OttoFlow::driver()
|
Every name states its meaning and its unit: distanceCm(), not dist(). walkForward(2), not walk(2, 1000, 1).
Facades Mouth::show(Icon::Heart) expressive, beginner friendly
Modules Matrix::drawPixel(3, 4, true) hardware-truth names, full control
Driver OttoFlow::driver().oscillateServos(...) raw OttoDIYLib, official escape hatch
Start at the top layer. Drop one level whenever you need more control. Nothing is hidden from you -- see Architecture.
- Installation -- add OttoFlow to a PlatformIO or Arduino IDE project.
- Configuration -- presets, pins, and per-module settings.
- Bench Testing -- the safe way to bring hardware up one part at a time.
Prologue
- Architecture -- the three layers and the naming rules behind every API.
- Roadmap -- what is planned next.
Getting Started
- Installation
- Configuration
- Examples -- complete, ready-to-flash sketches.
The Basics
- Mouth -- the 8x8 LED matrix: icons, digits, scrolling text.
- Voice -- sounds, tones, and melodies.
- Movement -- walking, turning, dance moves, poses.
- Arms -- the optional humanoid arm servos.
- Gestures -- whole-body performances: movement, face and sound in one call.
- Motion -- the master switch for every servo.
- Sensors -- the overview: which sense is which, and the habits common to all.
- Eyes -- the ultrasonic distance sensor.
- Ears -- the microphone: loudness and clap detection.
- Touch -- the touch pad or push button.
- Light -- the photoresistor.
- Balance -- the MPU-6050 motion sensor: tilt, upside down, shake.
Digging Deeper
- Bench Testing -- develop feature by feature without a runaway robot.
- Serial Console -- test every part from the Serial Monitor, no reflashing.
- Calibration -- servo trims and EEPROM storage.
- Bluetooth and the Otto App -- control Otto from the official phone app.
- Modules -- the hardware-truth layer under the facades.
- The Driver -- the official escape hatch to raw OttoDIYLib.
- Extending OttoFlow -- add your own module and facade.
Reference
- API Reference -- every public function, in one page.
- Icon, Sound and Gesture Reference -- the complete catalogs.
- Troubleshooting -- symptoms, causes, fixes.
Arduino Nano (ATmega328) with the Otto biped or Humanoid build: four leg and foot servos, an HC-SR04 distance sensor, a MAX7219 8x8 matrix, and a buzzer. Optional and config-enabled: two arm servos, a touch sensor, a microphone, a photoresistor, a Bluetooth serial module, and an MPU-6050 motion sensor. Other boards are out of scope for now.
GPL-3.0, inherited from OttoDIYLib, which OttoFlow wraps as its driver layer. Support Otto DIY by buying kits at ottodiy.com.
OttoFlow is licensed under GPL-3.0 and wraps OttoDIYLib. Buy the kits at ottodiy.com.
Prologue
Getting Started
The Basics
Digging Deeper
- Bench Testing
- Serial Console
- Calibration
- Bluetooth and the Otto App
- Modules
- The Driver
- Extending OttoFlow
Reference