Files
hexapod-robot/2026-current/remote/UiTypes.h
T
mangavalkandClaude Opus 5.5 a961fa721b Remote: match the old remote's hardware; old remote code in LEGACY
- LEGACY/remote/teensy/: old remote sketch from
  https://mangavalk.com/Hexapod/remote.git @ 492dece (reference only).
- remote/Config.h: sticks on A0-A5, Nextion on Serial1 (0/1), as in the
  old sketch; MPU6050 moved to Wire2 (25/24) since A4/A5 are Wire's pins.
- NextionUI: controls on a vscope-global "control" page added to the
  old HMI; keeps the old t1 status texts; the old page-1 b2 button (and
  serial 'U') enter Nextion upload passthrough, following the PC's baud.
- Docs: NEXTION.md, remote README wiring, CLAUDE.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-01 15:29:21 +02:00

51 lines
1.8 KiB
C

#pragma once
#include <Arduino.h>
// Operator commands. Produced by the Nextion touchscreen (NextionUI) and by
// the USB serial console (SerialConsole) through the same path, so the
// remote can be fully exercised on the bench without the display attached.
enum class UiCmd : uint8_t {
None = 0,
ToggleArm,
Disarm, // unconditional - the big red button
ToggleStand,
ToggleGait, // tripod <-> wave
ToggleWalkMode, // direct (A) <-> heading-hold (B)
ToggleRStickXlate, // right stick: rotation <-> translation
ToggleRemoteGyro,
ToggleRobotGyro,
SetSpeed, // value = 0..255
SpeedUp, // serial console only
SpeedDown, // serial console only
SetHeight, // value = 0..200, 100 = default standing height
HeightUp, // serial console only
HeightDown, // serial console only
ZeroGyro, // capture the handset's current attitude as "level"
CalStartSave, // start sweep calibration, or save it if running
CalCancel,
NextionUpload, // USB <-> display passthrough for Nextion Editor (handled in remote.ino)
};
struct UiEvent {
UiCmd cmd = UiCmd::None;
uint8_t value = 0;
};
// Everything the display shows. The remote is authoritative: the Nextion
// only sends requests, and always renders what's in here.
struct UiView {
bool armed = false;
bool stand = false;
bool gait_wave = false;
bool mode_b = false;
bool rstick_xlate = false;
bool remote_gyro = false;
bool robot_gyro = false;
bool calibrating = false;
uint8_t speed_target = 0;
int16_t height = 0; // -1000..1000, 0 = default
bool link_ok = false;
uint8_t link_pct = 0;
const char* message = ""; // always a string literal - NextionUI diffs it by pointer
};