Skip to content

Starting Concept List

This is a starting concept list, not a final learning graph. It was generated by scanning all existing content in this repository — the current lessons in docs/lessons/, the top-level pages (getting-started.md, about.md, parts-lists.md, glossary.md, references.md), and the example MicroPython programs in src/ — to inventory the concepts already present anywhere in the project, whether or not they have a finished lesson page yet.

The goal of this book is expanding from a personal notes collection into a full textbook that teaches students to draw many robot face styles on two target displays:

  1. A 128x64 monochrome OLED display (SSD1306, already the primary focus of the current lessons)
  2. A 240x240 color round display (GC9A01, already used in several src/ example programs but not yet covered by any lesson page)

Concepts below marked (code only) exist in the src/ example programs but are not yet explained in a docs/lessons/ page. These are gaps to close as the book expands. Everything else already appears in a lesson, the glossary, or a top-level content page.

Use this list as an input to a course description and then to the learning-graph-generator process, which will expand it toward a complete concept graph with dependencies.


1. Hardware Platforms & Components

  1. Raspberry Pi Pico
  2. RP2040 Microcontroller
  3. Cytron Maker Pi RP2040
  4. 128x64 Monochrome OLED
  5. 240x240 Color Round Display (code only)
  6. SSD1306 Display Driver
  7. GC9A01 Display Driver (code only)
  8. SPI Interface
  9. I2C Interface (code only)
  10. Solderless Breadboard
  11. M-F Jumper Wires
  12. Momentary Push Button
  13. Potentiometer
  14. Rotary Encoder
  15. Smart Car Chassis
  16. Time-of-Flight Sensor (code only)
  17. NeoPixel LED (code only)
  18. PWM Signal (code only)

2. Software Tools & Environment

  1. MicroPython
  2. Thonny IDE
  3. FrameBuf Module
  4. MicroPython REPL

3. Display Fundamentals

  1. Screen Coordinate System
  2. Origin at Upper-Left
  3. X Direction
  4. Y Direction
  5. Pixel
  6. Frame Buffer
  7. Display Resolution
  8. Monochrome Color Model
  9. RGB565 Color Model (code only)
  10. color565 Function (code only)

4. Basic Drawing Primitives

  1. fill() Method
  2. hline() Method
  3. vline() Method
  4. line() Method
  5. rect() Method
  6. fill_rect() Method (code only)
  7. ellipse() Method
  8. Quadrant Fill Codes
  9. poly() Method
  10. Point Array for Polygons
  11. Unsigned Byte Array Type
  12. scroll() Method
  13. blit() Method
  14. Transparent Color Key
  15. Blit Palette Mapping
  16. show() Method

5. Face Anatomy & Layout

  1. Face Outline
  2. Drawing Constants
  3. Eye Placement
  4. Eye Size
  5. Pupil
  6. Eyebrow Shape
  7. Mouth Shape
  8. Bottom-Half Mouth Curve
  9. draw_face() Function

6. Facial Expression & Emotion Design

  1. Ekman's Universal Emotions
  2. Happy Expression
  3. Sad Expression
  4. Angry Expression
  5. Afraid Expression
  6. Surprised Expression
  7. Disgusted Expression
  8. Contempt Expression
  9. Sleepy Expression
  10. Inside Out Emotions
  11. Emotion Recognition Accuracy

7. Animation & Interaction

  1. Eye Scanner Animation
  2. Pupil Movement
  3. Blinking Animation
  4. Animation Loop
  5. Bit Shifting for Powers of Two
  6. Mode State Machine (code only)
  7. Button Interrupt Handler (code only)
  8. Button Debounce (code only)
  9. Multi-Mode Menu (code only)
  10. Rotary Encoder Input
  11. Potentiometer Input
  12. Dual-Core Processing

8. Color Display Techniques

  1. Color Wheel Function (code only)
  2. Named Color Constants (code only)
  3. Color Cycling Animation (code only)
  4. Round Display Layout (code only)

9. Performance & Advanced Techniques

  1. Draw Time Benchmarking (code only)
  2. ticks_us Timing (code only)
  3. Bitmap to Byte Array Conversion (code only)
  4. MONO_HLSB Format (code only)
  5. Sprite Blitting for Speed (code only)
  6. Circle Bitmap Sprite (code only)

10. Testing & Prototyping

  1. Software Display Emulator (code only)
  2. Turtle Graphics Prototype (code only)

11. Course & Project Context

  1. Computational Thinking
  2. Abstraction
  3. Modularity
  4. Function Parameters
  5. Low-Cost Robotics Kit

Notes on Coverage Gaps

Scanning the current content surfaced a few things worth flagging before writing a course description:

  • Color display has no lessons yet. All GC9A01 / 240x240 / RGB565 concepts come only from src/ example programs (color-wheel-cycle.py, color-list-cycle.py, lib/gc9a01.py). A parallel lesson track for the color display will need to be written.
  • Interaction lessons are stubs. docs/lessons/interactions.md only has headings for "Eye Pupil Movement" and "Blinking" with no content. docs/lessons/multiple-threads.md and docs/lessons/blit-commands.md are similarly thin or empty, even though working code for dual-core use, button interrupts, and a mode state machine already exists in src/project-box/.
  • Sensor extensions exist in code but aren't part of the drawing curriculum. The time-of-flight sensor and NeoPixel examples are tangential to face-drawing and may belong in an optional "extensions" section rather than the core learning path.
  • The glossary is thin. Only Blit, Ellipse, and RP2040 have entries; most terms above have no definition yet.