I am working on a project where I am trying to display the brightness that an analog light sensor is measuring on a LCD on stm32F7469I-DISCO. I connected a 3.3V source to the sensor, continued with a resistor and GND, I am measuring the voltage to the A2 pin and the value on the LCD shows up as 'O'. Does anyone have any insight into this or know how to assist me?
I am using freeRTOS.
osThreadId_t lcdTaskHandle;
const osThreadAttr_t lcdTask_attributes = {
.name = "lcdTaskHandle",
.stack_size = 128 * 4,
.priority = (osPriority_t) osPriorityNormal,
};
BSP_LCD_Init();
BSP_LCD_LayerDefaultInit(0, LCD_FB_START_ADDRESS);
BSP_LCD_Clear(LCD_COLOR_WHITE);
ts_status = BSP_TS_Init(BSP_LCD_GetXSize(), BSP_LCD_GetYSize());
while(ts_status != TS_OK);
ts_status = BSP_TS_ITConfig();
while(ts_status != TS_OK);
BSP_LCD_SetFont(&Font24);
BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
BSP_LCD_SetTextColor(LCD_COLOR_DARKRED);
osKernelInitialize();
defaultTaskHandle = osThreadNew(StartDefaultTask, NULL,
&defaultTask_attributes);
osKernelStart();
void StartLcdTask(void *argument)
{
uint16_t adc_value = 0;
float light_percentage;
char light_percentage__string[5];
HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, 1000);
for(;;)
{
adc_value = HAL_ADC_GetValue(&hadc1);
light_percentage = (adc_value * 100.0) / ADC_RESOLUTION6b;
BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"Light Percentage:", CENTER_MODE);
sprintf(light_percentage_string, "%.f", light_percentage);
BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)light_percentage_string, CENTER_MODE);
}
}