Skip to content

Tilt & Parallax

Seed tilt response

PHYSICAL ATTITUDE WITHOUT BLURRED PIXELS

The 160×160 Seed is split into horizontal bands. Each receives integer translation and shear instead of one subpixel transform over the PNG.

Board axes

The QMI8658 is rotated 90° relative to the display. The one authoritative mapping is:

text
screen tilt X = -(sensor Y - neutral Y)
screen tilt Y = +(sensor X - neutral X)

The earlier direct X/Y mapping inverted physical directions. The correction matches four-way isolation and the Waveshare Gravitysphere example.

Sampling pipeline

  1. A 33 ms IMU task reads accelerometer and gyroscope.
  2. A stable startup window establishes neutral.
  3. A 0.025 g dead zone removes table noise.
  4. 0.55 g maps to normalized 1.0.
  5. Low-pass filtering writes a controlled shared snapshot.
  6. Rendering reads normalized X/Y and never waits on I²C.

Three response levels

LevelMax X/Y travelShearUse
LOW3 / 2 px2Gentle glass parallax
MID6 / 4 px4Default balance
HIGH10 / 7 px7Strong response and STAR RUSH

All final offsets are integers. A clearance validator covers 750 core poses and rejects any HIGH sample whose alpha overlaps surrounding UI.

Wake recalibration

Ambient keeps the latest five real acceleration samples. First wake touch freezes the pre-touch posture as neutral, excluding release movement from calibration. The same touch transaction is still fully consumed.

Web simulation

The web Demo can synthesize tilt from pointer position to freeze visuals. Physical hardware does not fake sensor input: AUTO reads QMI8658.