Draft: shared protocol, remote firmware, project docs
Not yet verified on hardware. - shared/HexapodProtocol: CmdPacket (now 20 bytes, adds remote_roll / remote_pitch), FLAG_* bits and radio settings as the single protocol definition; static payload size = sizeof(CmdPacket) on both radios. - robot: use the shared protocol; vx = forward (harness w/x <-> q/e); InputMapper adds remote tilt on top of the right stick when FLAG_REMOTE_GYRO is set, and robot.ino no longer zeroes stick roll/pitch when it's off. - remote (Teensy 4.1): Sticks (calibration, EEPROM), RemoteIMU, RemoteState (interlocks, link-loss disarm, smoothing), PacketBuilder, RadioLink, NextionUI, SerialConsole. - CLAUDE.md, README.md, remote/README.md, remote/NEXTION.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ad77b06c36
commit
91dac16fca
30 files changed
+1706
-57
No files matched your search
@@ -0,0 +1,45 @@
|
||||
#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
|
||||
ZeroGyro, // capture the handset's current attitude as "level"
|
||||
CalStartSave, // start sweep calibration, or save it if running
|
||||
CalCancel,
|
||||
};
|
||||
|
||||
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;
|
||||
bool link_ok = false;
|
||||
uint8_t link_pct = 0;
|
||||
const char* message = ""; // always a string literal - NextionUI diffs it by pointer
|
||||
};
|
||||
Reference in new issue
Block a user