#include "config.hpp" //----------------------------------- //------- motor configuration ------- //----------------------------------- //--- configure left motor --- single100a_config_t configDriverLeft = { .gpio_pwm = GPIO_NUM_26, .gpio_a = GPIO_NUM_16, .gpio_b = GPIO_NUM_4, .ledc_timer = LEDC_TIMER_0, .ledc_channel = LEDC_CHANNEL_0, .abInverted = true, .resolution = LEDC_TIMER_11_BIT, .pwmFreq = 10000 }; //--- configure right motor --- single100a_config_t configDriverRight = { .gpio_pwm = GPIO_NUM_27, .gpio_a = GPIO_NUM_18, .gpio_b = GPIO_NUM_14, .ledc_timer = LEDC_TIMER_1, .ledc_channel = LEDC_CHANNEL_1, .abInverted = false, .resolution = LEDC_TIMER_11_BIT, .pwmFreq = 10000 }; //configure motor contol motorctl_config_t configMotorControl = { .msFade = 900, .currentMax = 10 }; //create controlled motor instances controlledMotor motorLeft(configDriverLeft, configMotorControl); controlledMotor motorRight(configDriverRight, configMotorControl); //-------------------------------------- //------- joystick configuration ------- //-------------------------------------- joystick_config_t configJoystick = { .adc_x = ADC1_CHANNEL_3, //GPIO39 .adc_y = ADC1_CHANNEL_0, //GPIO36 //range around center-threshold of each axis the coordinates stays at 0 (adc value 0-4095) .tolerance_zero = 100, //threshold the coordinate snaps to -1 or 1 before configured "_max" or "_min" threshold (mechanical end) is reached (adc value 0-4095) .tolerance_end = 80, //threshold the radius jumps to 1 before the stick is at max radius (range 0-1) .tolerance_radius = 0.05, //min and max adc values of each axis .x_min = 975, .x_max = 2520, .y_min = 1005, .y_max = 2550, //invert adc measurement .x_inverted = true, .y_inverted = true }; //create global joystic instance evaluatedJoystick joystick(configJoystick); //create global evaluated switch instance for button next to joystick gpio_evaluatedSwitch buttonJoystick(GPIO_NUM_33, true, false); //pullup true, not inverted (switch to GND use pullup of controller) //create buzzer object on pin 12 with gap between queued events of 100ms buzzer_t buzzer(GPIO_NUM_12, 100); //create global control object controlledArmchair control(&buzzer, &motorLeft, &motorRight); //configure fan contol fan_config_t configFanLeft = { .gpio_fan = GPIO_NUM_2, .msRun = 5000, .dutyThreshold = 35 }; fan_config_t configFanRight = { .gpio_fan = GPIO_NUM_15, .msRun = 5000, .dutyThreshold = 35 };