10UMLClass75010220650<<hardware>> MotorControl -- - target_power: int8_t - power: int8_t - direction: uint8_t - pwm_pin: uint8_t - pwm_channel: uint8_t - pwm_res: uint8_t - dutycycle_min: uint8_t - dutycycle_max: uint8_t - direction_1: uint8_t - direction_2: uint8_t - delay: uint8_t - powersteps: uint8_t - last_millis: uint32_t -- + MotorControl() + init(pwm_pin: uint8_t,   pwm_channel: uint8_t,   dir_1: uint8_t, dir_2: uint8_t) + loop(): uint16_t + runMotorControl() + setMinPwm(uint8_t) + setMaxPwm(uint8_t) + setPowerSteps(uint8_t): uint16_t + setTargetPower(uint8_t) + setDelay(uint8_t): uint16_t + stop() + emergencyStop() + toString() + getPower(): int8_t + getTargetPower(): int8_t + isTargetPowerReached(): bool + isAccelerationPositive(): bool + isAccelerationNegative(): bool - setRealPower(power: int8_t) - increasePower(power: int8_t) UMLClass80380220330<<hardware>> Speedometer -- - encoder: ESP32Encoder - debug: DebugMqtt* - name: String - speed: double = 0 - last_millis: uint64_t = 0; - bufPos: uint8_t - buf: int16_t[BUF_SIZE] -- + Speedometer() + init(pinA: uint8_t,    pinB: uint8_t,    name: String) + runSpeedometer() + setTargetPower(power: int8_t) + getSpeed(): double + getDirection(): uint8_t - addValToBuf(val: int16_t) - getAverage(): int16_tUMLClass700270370MoveControl -- - debug: DebugMqtt* - left_motor: MotorControl* - right_motor: MotorControl* - left_speedometer: Speedometer* - right_speedometer: Speedometer* - driving_status: DrivingStatus = stop - x_speed: double = 0 - rotation_speed: double = 0 - wheelspeed_left_target: double = 0 - wheelspeed_right_target: double = 0 -- + MoveControl() + init(left_motor: MotorControl*,    right_motor: MotorControl*,    left_speedometer: Speedometer*,    right_speedometer: Speedometer*) + runMoveControl() + setDrivingStatus(status: DrivingStatus) + setSpeed(speed: double) + setRotationspeed(speed: double) - calcWheelSpeed() - regulateMotors()UMLClass37010220330<<driveModi>> ManualControl -- - encoder: ESP32Encoder - debug: DebugMqtt* - name: String - speed: double = 0 - last_millis: uint64_t = 0; - bufPos: uint8_t - buf: int16_t[BUF_SIZE] -- + Speedometer() + init(pinA: uint8_t,    pinB: uint8_t,    name: String) + runSpeedometer() + setTargetPower(power: int8_t) + getSpeed(): double + getDirection(): uint8_t - addValToBuf(val: int16_t) - getAverage(): int16_tUMLClass127010210240MenuControl -- # parentMenu: MenuControl* # lcd: LiquidCrystal_I2C* -- /+down()/ /+up()/ /+right()/ /+left()/ /+yes()/ /+no()/ /+update()/ /+printMenu()/ + setParentMenu(MenuControl*) + setLcd(LiquidCrystal_I2C*)UMLClass98010280270MenuAction -- - name: char* - *function: void - *callback: void - isMenu: bool - menu: MenuControl -- + MenuAction(const char*, (*function), (*callback)) + MenuAction(const char*, (*function)) + MenuAction(const char*, MenuControl* menu) + runAction() + getName(): const char* + getIsMenu(): bool + getMenu(): MenuControl* UMLClass1220360280160Menu -- - inSubmenu: bool - entrys: list<MenuAction*> - selectedEntry: list<MenuAction*>::iterator - isMenu: bool - menu: MenuControl -- + addEntry(MenuAction* entry) Relation135024030140lt=<<-10;10;10;120Relation1080270160190lt=- m1=* m2=0..110;10;10;160;140;160