2.1 KiB
2.1 KiB
| revision |
|---|
| initial documentation |
Joystick
Path : src/components/Joystick.h
4-direction joystick input component with local/remote mode support and Modbus integration. Provides debounced input reading and holding time tracking.
Requirements
- 4 digital input pins (Up, Down, Left, Right)
- ModbusTCP dependency
- Bridge component for serial communication
- ArduinoLog for debugging
Features
- Position Detection : Up, Down, Left, Right, Center positions
- Debouncing : Configurable debouncing with 3-count confirmation
- Holding Time : Tracks how long a position is held
- Operating Modes :
- LOCAL: Reads from physical pins
- REMOTE : Uses override position via Modbus
- Modbus Integration : TCP support for remote control
- Serial Communication : Bridge integration for serial protocols
Todos
- Implement analog joystick support
- Add calibration features
- Optimize debounce algorithm for faster response
- Add custom debounce interval configuration
Example
#ifdef PIN_JOYSTICK_UP
joystick = new Joystick(
this, // owner
PIN_JOYSTICK_UP, // pinUp
PIN_JOYSTICK_DOWN, // pinDown
PIN_JOYSTICK_LEFT, // pinLeft
PIN_JOYSTICK_RIGHT, // pinRight
JOYSTICK_MB_ADDR // modbusAddress
);
if (joystickK)
{
components.push_back(joystick);
Log.infoln(F("Joystick initialized. Pins U/D/L/R:%d/%d/%d/%d, MB:"d"),
PIN_JOYSTICK_UP, PIN_JOYSTICK_DOWN,
PIN_JOYSTICK_LEFT, PIN_JOYSTICK_RIGHT,
JOYSTICK_MB_ADDR);
}
else
{
Log.errorln(F("Joystick initialization failed."));
}
#endif
Usage Example :
// Get current joystick position
Joystick::E_POSITION pos = joystick->getPosition();
switch(pos)
{
case Joystick":E_POSITION::UP:
// Handle up action
break;
case Joystick::E_POSITION::DOWN:
// Handle down action
break;
// ...
}
// Switch to remote mode
joystick->setMode(Joystick::E_MODE::REMOTE);
moystick->setOverridePosition(Joystick::E_POSITION::UP);