768
/* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "LiquidCrystal.h" #include<string.h> #include<stdio.h> /* Private variables ---------------------------------------------------------*/ ADC_HandleTypeDef hadc1; UART_HandleTypeDef huart1; /* USER CODE BEGIN PV */ float Voltage_mV = 0; float Temperature_C = 0; float Temperature_F = 0; char msg[50]; /* USER CODE END PV */ int main(void) { /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_ADC1_Init(); MX_USART1_UART_Init(); /* USER CODE BEGIN 2 */ LiquidCrystal(GPIOB, GPIO_PIN_3, GPIO_PIN_4, GPIO_PIN_5, GPIO_PIN_6, GPIO_PIN_7, GPIO_PIN_8, GPIO_PIN_9); begin(16, 2); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ HAL_ADC_Start(&hadc1); // Start ADC Conversion HAL_ADC_PollForConversion(&hadc1, 1); // Poll ADC1 and Timeout = 1mSec uint32_t adc_value = HAL_ADC_GetValue(&hadc1); // Read the ADC Conversion Result HAL_ADC_Stop(&hadc1); // Calculate voltage and temperature Voltage_mV = (((adc_value * 3.3) / 4095.0) - 0.5) * 1000; Temperature_C = Voltage_mV / 10; Temperature_F = (Temperature_C * 1.8) + 32; // Transmit temperature over UART char msg[100]; sprintf(msg, "TempC: %.2f C", Temperature_C); setCursor(0, 0); print(msg); sprintf(msg, "TempF: %.2f F", Temperature_F); setCursor(0, 1); print(msg); // LED Alerts for Temperature Levels if (Temperature_C > 60) { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET); // Red LED ON HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET); // Blue LED OFF HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // Green LED OFF sprintf(msg, "LED: Red ON (Temperature > 60 degrees Celsius)\r\n"); HAL_UART_Transmit(&huart1, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); } else if (Temperature_C < 20) { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_SET); // Blue LED ON HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); // Red LED OFF HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // Green LED OFF sprintf(msg, "LED: Blue ON (Temperature < 20 degrees Celsius)\r\n"); HAL_UART_Transmit(&huart1, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); } else { HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // Green LED ON HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2, GPIO_PIN_RESET); // Blue LED OFF HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET); // Red LED OFF sprintf(msg, "LED: Green ON (20 degrees Celsius <= Temperature <= 60 degrees Celsius)\r\n"); HAL_UART_Transmit(&huart1, (uint8_t*)msg, strlen(msg), HAL_MAX_DELAY); } HAL_Delay(2000); clear(); } /* USER CODE END 3 */ }