0

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);
    }
}

0 Answers0