| | |
| | | /* USER CODE END Header */ |
| | | /* Includes ------------------------------------------------------------------*/ |
| | | #include "main.h" |
| | | #include "adc.h" |
| | | #include "usart.h" |
| | | #include "gpio.h" |
| | | |
| | | /* Private includes ----------------------------------------------------------*/ |
| | |
| | | |
| | | /* Private macro -------------------------------------------------------------*/ |
| | | /* USER CODE BEGIN PM */ |
| | | |
| | | #define THRESHOLD_LUX 100 |
| | | #define THRESHOLD_NOISY 1000 |
| | | /* USER CODE END PM */ |
| | | |
| | | /* Private variables ---------------------------------------------------------*/ |
| | |
| | | { |
| | | |
| | | /* USER CODE BEGIN 1 */ |
| | | |
| | | uint32_t lux, noisy; |
| | | /* USER CODE END 1 */ |
| | | |
| | | /* MCU Configuration--------------------------------------------------------*/ |
| | |
| | | |
| | | /* Initialize all configured peripherals */ |
| | | MX_GPIO_Init(); |
| | | MX_USART1_UART_Init(); |
| | | MX_ADC1_Init(); |
| | | /* USER CODE BEGIN 2 */ |
| | | init_relay(); |
| | | init_led(); |
| | | |
| | | /* Turn on relay after 1 second */ |
| | | HAL_Delay(1000); |
| | | turn_relay(Relay1, ON); |
| | | printf("Auto light program start.\r\n"); |
| | | /* USER CODE END 2 */ |
| | | |
| | | /* Infinite loop */ |
| | | /* USER CODE BEGIN WHILE */ |
| | | while (1) |
| | | { |
| | | HAL_Delay(5000); |
| | | lux = noisy = 0; |
| | | adc_sample_lux_noisy(&lux, &noisy); |
| | | if( lux<=THRESHOLD_LUX && noisy>= THRESHOLD_NOISY ) |
| | | { |
| | | printf("Lux:%lu Noisy:%lu, turn light on\r\n", lux, noisy); |
| | | turn_relay(Relay1, ON); |
| | | HAL_Delay(5000); |
| | | printf("turn light off now\r\n"); |
| | | turn_relay(Relay1, OFF); |
| | | } |
| | | |
| | | HAL_Delay(10); |
| | | |
| | | /* USER CODE END WHILE */ |
| | | |