stm32-TMP36-main.c

by Marwen Maghrebi
/* 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 */
}
Are you sure want to unlock this post?
Unlock left : 0
Are you sure want to cancel subscription?
-
00:00
00:00
Update Required Flash plugin
-
00:00
00:00