/** * @author Rémi Heredero * @version. 0.0.0 * @date August 2023 * @file car.h */ #ifndef CAR_H #define CAR_H /************* * MODULE ID * *************/ #define ID_CONTROL 1 // Control the three-wheeler #define ID_JOYSTICK 2 // Inform control avout current joystick state #define ID_DISPLAY 3 // User interface to display informations #define ID_DRIVE 4 // Drive power motor of the three-wheeler #define ID_STEERING 5 // Drive the direction motor og the three-wheeler #define ID_SUPPLY 6 // Information about batteries, current, ... #define ID_BROADCAST 0 // Message to and from any module #define ID_DEBUG 0 // Message to and from any module /******************* * MEMORY ADRESSES * *******************/ #define MEMADD_CONTROL_STEERING_MODE 0x01 #define MEMADD_CONTROL_ALIVE_TIME 0x02 #define MEMADD_CONTROL_SPEED_FACTOR 0x03 #define MEMADD_CONTROL_POWER_FACTOR 0x07 #define MEMADD_CONTROL_STEERING_FACTOR 0x0B #define MEMADD_CONTROL_MAX_SPEED_FW 0x0F #define MEMADD_CONTROL_MAX_SPEED_BW 0x10 #define MEMADD_JOYSTICK_MODE 0x11 #define MEMADD_JOYSTICK_PARAM1 0x12 #define MEMADD_JOYSTICK_PARAM2 0x13 #define MEMADD_JOYSTICK_ALIVE_TIME 0x14 #define MEMADD_DISPLAY_ALIVE_TIME 0x15 #define MEMADD_DRIVE_SPEED_TIME 0x16 #define MEMADD_DRIVE_STOP_TIME 0x17 #define MEMADD_DRIVE_ALIVE_TIME 0x18 #define MEMADD_STEERING_ALIVE_TIME 0x19 #define MEMADD_BATTERY_VOLT_TIME 0x1A #define MEMADD_BATTERY_CURRENT_TIME 0x1B #define MEMADD_BATTERY_ENERGY_TIME 0x1C #define MEMADD_BATTERY_ALIVE_TIME 0x1D #define MEMADD_CONTROL_PARAM_MAX_CHANGE_STEERING 0x1E #define MEMADD_CONTROL_PARAM_MAX_CHANGE_DRIVE 0x1F const bool ALWAYSTRUE = true; const bool ALWAYSFALSE = false; const uint8_t ALWAYS0 = 0; const uint8_t ALWAYS1 = 1; const uint8_t ALWAYS2 = 2; const uint8_t ALWAYS3 = 3; typedef struct { uint8_t CONTROL_STEERING_MODE; uint8_t CONTROL_ALIVE_TIME; uint32_t CONTROL_SPEED_FACTOR; uint32_t CONTROL_POWER_FACTOR; uint32_t CONTROL_STEERING_FACTOR; uint8_t CONTROL_MAX_SPEED_FW; uint8_t CONTROL_MAX_SPEED_BW; uint8_t JOYSTICK_MODE; uint8_t JOYSTICK_PARAM1; uint8_t JOYSTICK_PARAM2; uint8_t JOYSTICK_ALIVE_TIME; uint8_t DISPLAY_ALIVE_TIME; uint8_t DRIVE_SPEED_TIME; uint8_t DRIVE_STOP_TIME; uint8_t DRIVE_ALIVE_TIME; uint8_t STEERING_ALIVE_TIME; uint8_t BATTERY_VOLT_TIME; uint8_t BATTERY_CURRENT_TIME; uint8_t BATTERY_ENERGY_TIME; uint8_t BATTERY_ALIVE_TIME; uint8_t CONTROL_PARAM_MAX_CHANGE_STEERING; uint8_t CONTROL_PARAM_MAX_CHANGE_DRIVE; } KART_CST_TYPE; KART_CST_TYPE KART_CST; typedef struct { int16_t torque; // uint32_t center; // uint32_t position; // uint8_t speed; // 100m/h bool brake; uint8_t powerMode; // 0: eco - 1: normal - 2: race /* * 0 - ECO MODE * Eco mod limit to 1/2 of the maximal current. * Position is 1/2 of the maximal angle * * 1 - NORMAL MODE * Standard ramp for normal mode * Position is limited to 3/4 of the maximal * * 2 - RACE MODE * * */ } KART_VAR_TYPE; KART_VAR_TYPE eKart; uint8_t rampTorque[101]; uint8_t rampPosition[101]; #endif /* CAR_H */