Files
ESP-Nodes/ESP-IDF_Robot_RC/main/joystick.h
2025-01-05 03:03:07 -05:00

55 lines
1.5 KiB
C

#ifndef JOYSTICK_H
#define JOYSTICK_H
#include "driver/adc.h"
#include "esp_adc_cal.h"
#include "esp_adc/adc_cali.h"
#include "esp_adc/adc_cali_scheme.h"
#include "esp_adc/adc_oneshot.h"
static int x, y;
static adc_oneshot_unit_handle_t adc_xy_handle;
static esp_err_t joystick_adc_init() {
adc_oneshot_unit_init_cfg_t adc_init_config_xy = {
.unit_id = ADC_UNIT_1,
};
ESP_ERROR_CHECK(adc_oneshot_new_unit(&adc_init_config_xy, &adc_xy_handle));
/*adc_oneshot_chan_cfg_t config_x = {
.bitwidth = SOC_ADC_DIGI_MAX_BITWIDTH,
.atten = ADC_ATTEN_DB_11,
};
adc_oneshot_chan_cfg_t config_y = {
.bitwidth = SOC_ADC_DIGI_MAX_BITWIDTH,
.atten = ADC_ATTEN_DB_11,
};*/
ESP_ERROR_CHECK(adc_oneshot_config_channel(adc_xy_handle, ADC1_CHANNEL_0, &config_x));
ESP_ERROR_CHECK(adc_oneshot_config_channel(adc_xy_handle, ADC1_CHANNEL_1, &config_y));
return ESP_OK;
}
static void joystick_show_raw_xy() {
ESP_ERROR_CHECK(adc_oneshot_read(adc_xy_handle, ADC1_CHANNEL_0, &x));
ESP_ERROR_CHECK(adc_oneshot_read(adc_xy_handle, ADC1_CHANNEL_1, &y));
ESP_LOGI("(x,y)", "( %d, %d )", x, y);
}
static void get_joystick_xy(int* x_axis, int* y_axis) {
ESP_ERROR_CHECK(adc_oneshot_read(adc_xy_handle, ADC1_CHANNEL_0, &x_axis));
ESP_ERROR_CHECK(adc_oneshot_read(adc_xy_handle, ADC1_CHANNEL_1, &y_axis));
}
static void joystick_task(void *arg) {
while (true) {
joystick_show_raw_xy();
vTaskDelay (750 / portTICK_PERIOD_MS);
}
}
#endif