/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.h * @brief : Header for main.c file. * This file contains the common defines of the application. ****************************************************************************** * @attention * * Copyright (c) 2023 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** */ /* USER CODE END Header */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __MAIN_H #define __MAIN_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "stm32f4xx_hal.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include /* USER CODE END Includes */ /* Exported types ------------------------------------------------------------*/ /* USER CODE BEGIN ET */ /* USER CODE END ET */ /* Exported constants --------------------------------------------------------*/ /* USER CODE BEGIN EC */ /* USER CODE END EC */ /* Exported macro ------------------------------------------------------------*/ /* USER CODE BEGIN EM */ /* USER CODE END EM */ void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); /* Exported functions prototypes ---------------------------------------------*/ void Error_Handler(void); /* USER CODE BEGIN EFP */ /* USER CODE END EFP */ /* Private defines -----------------------------------------------------------*/ #define TEMP_Pin GPIO_PIN_1 #define TEMP_GPIO_Port GPIOC #define DC_Pin GPIO_PIN_2 #define DC_GPIO_Port GPIOA #define RESET_Pin GPIO_PIN_3 #define RESET_GPIO_Port GPIOA #define SPI1_NSS_Pin GPIO_PIN_4 #define SPI1_NSS_GPIO_Port GPIOA #define T_CS_Pin GPIO_PIN_5 #define T_CS_GPIO_Port GPIOC #define T_IRQ_Pin GPIO_PIN_0 #define T_IRQ_GPIO_Port GPIOB #define T_IRQ_EXTI_IRQn EXTI0_IRQn #define TFT_BRIHTNESS_Pin GPIO_PIN_9 #define TFT_BRIHTNESS_GPIO_Port GPIOE #define BUZZER_Pin GPIO_PIN_11 #define BUZZER_GPIO_Port GPIOE #define BTN_Pin GPIO_PIN_8 #define BTN_GPIO_Port GPIOC #define BTN_EXTI_IRQn EXTI9_5_IRQn #define MOTOR_PWM2_Pin GPIO_PIN_6 #define MOTOR_PWM2_GPIO_Port GPIOB #define MOTOR_PWM1_Pin GPIO_PIN_7 #define MOTOR_PWM1_GPIO_Port GPIOB #define TOGGLE_LED_Pin GPIO_PIN_8 #define TOGGLE_LED_GPIO_Port GPIOB /* USER CODE BEGIN Private defines */ #define ON 1 #define OFF 0 #define CLOCKWISE 1 #define COUNTERCLOCKWISE 0 #define PAUSE 2 #define RPM_MAX 10 #define LED_BRIGHTNESS_MAX 10 #define DISP_BRIGHTNESS_MAX 10 #define VOLUME_MAX 1 //#define MODE_MAX 3 /***** New Code Udhay - Begin *****/ #define MODE_MAX 10 /***** New Code Udhay - END *****/ #define SLEEP_TIME (300000) // unit: ms #define VOLTIMELINE 50 #define LONG_PRESS_TIME_X_150MS 10 #define PAUSE_TIME_S 1 #define TIME_TO_UPD_FLASH_AFTER_CHANGE_MS 10000 #define CLR_ACTIVE 128, 128, 128 #define CLR_UNSELECTED 253, 253, 253//0, 0, 0 #define CLR_SELECTED 6, 124, 62 extern uint8_t wash_mode; extern uint8_t auto_start_mode; // Add these definitions to main.h // Auto Wash operating modes #define MODE_AUTOWASH 0 #define MODE_WASH1 1 #define MODE_WASH2 2 #define MODE_WASH3 3 // Structure to hold recipe parameters typedef struct { uint8_t PresoakTime; // Presoak time in minutes (idle time) uint8_t WashTime; // Wash time in minutes (motor running) uint8_t TotalTime; // Total runtime (PresoakTime + WashTime) uint8_t MaxSpeed; // Maximum motor speed (1-10) uint8_t MaxSpin; // Spin pattern (1,3,5,7,Vortex) } recipies; // Auto Wash function prototypes void InitAutoWash(void); void ProcessAutoWash(void); void RunMotorWithSpeed(uint8_t speed); void StartAutoWash(void); void PauseAutoWash(void); void ResumeAutoWash(void); void StopAutoWash(void); void StartWashProgram(uint8_t presoak_minutes, uint8_t wash_minutes, uint8_t max_speed, uint8_t max_spin); void ProcessWashProgram(); void ConfigureWashMotorPattern(uint8_t spin_value); void StopWashProgram(); void FinishWashProgram(); // External global variables extern uint8_t wash_mode; extern recipies auto_wash, wash1, wash2, wash3; typedef enum { BTN_RELASED, BTN_PRESS, BTN_LONG_PRESS } btn_status_t; typedef enum { HOME = 0, HOME_START, HOME_SETTING, HOME_BUZ, HOME_LED, HOME_RPM, HOME_RPM_SET, HOME_RESET, HOME_AW, HOME_WASH1, HOME_WASH2, HOME_WASH3, HOME_SPIN, HOME_SPIN_SET, SETTING_PAGE, SETTING_BACK, SETTING_RUNTIME, SETTING_RUNTIME_MIN_SET, SETTING_RUNTIME_SEC_SET, SETTING_UNIT, SETTING_UNIT_SET, SETTING_RPM, SETTING_RPM_SET, SETTING_PATTERN, SETTING_PATTERN_SET, SETTING_LIGHT_BRIGHTNESS, SETTING_LIGHT_BRIGHTNESS_SET, SETTING_DISP_BRIGHTNESS, SETTING_DISP_BRIGHTNESS_SET, SETTING_DISP_TIMEOUT, SETTING_DISP_TIMEOUT_SET, SETTING_BUZ_VOLUME, SETTING_BUZ_VOLUME_SET, // Auto Wash Screen States AUTOWASH_BACK, // Back button selected AUTOWASH_WASHTIME, // Wash Time field selected AUTOWASH_PRESOAK, // Presoak field selected AUTOWASH_MAXSPEED, // Max Speed field selected AUTOWASH_MAXSPIN, // Max Spin field selected AUTOWASH_START, // Start button selected // Auto Wash Edit States AUTOWASH_WASHTIME_SET, // Editing Wash Time value AUTOWASH_PRESOAK_SET, // Editing Presoak value AUTOWASH_MAXSPEED_SET, // Editing Max Speed value AUTOWASH_MAXSPIN_SET, // Editing Max Spin value WASH_RUN_BACK, WASH_RUN_PAUSE, }SCREEN_STATE; typedef enum { FLASH_STATUS = 0, LED_STATUS, BUZ_STATUS, RUN_MIN, RUN_SEC, TEMP_UNIT, RPM_VAL, MODE_NUM, LIGHT_BRIGHT, SCREEN_BRIGHT, SLEEP_STATUS, BUZ_VOLUME, AW_WASHTIME, AW_PRESOAK, AW_MAXSPEED, AW_MAXSPIN, W1_WASHTIME, W1_PRESOAK, W1_MAXSPEED, W1_MAXSPIN, W2_WASHTIME, W2_PRESOAK, W2_MAXSPEED, W2_MAXSPIN, W3_WASHTIME, W3_PRESOAK, W3_MAXSPEED, W3_MAXSPIN, TEST, }FLASH_DATA; typedef enum { MOTOR_STOP, MOTOR_RUN, MOTOR_PAUSE } motor_status_t; //Recepie Code /***** AW Changes Udhay - Begin *****/ //typedef struct //{ // uint8_t select; // uint8_t WashTime; // uint8_t PresoakTime; // uint8_t MaxSpeed; // uint8_t MaxSpin; // uint8_t TotalTime; // uint8_t recipe_state; //}recipies; /***** AW Changes Udhay - End *****/ typedef struct { SCREEN_STATE disp_status; bool led_status; bool buz_status; motor_status_t motor_status; uint8_t runtime_min; uint8_t runtime_sec; char uint_type; uint16_t rpm; uint8_t pattern; uint8_t light_brightness; uint8_t screen_brightness; uint8_t screen_timeout; uint8_t buzzer_volume; uint8_t disp_runtime_min; uint8_t disp_runtime_sec; float temp_val; uint32_t none; // New Auto Wash fields uint8_t auto_wash_time; // Wash time in minutes (1-60) uint8_t auto_presoak_time; // Presoak time in minutes (1-60) uint8_t auto_max_speed; // Max speed setting (1-10) uint8_t auto_max_spin; // Max spin setting (values: 1, 3, 5, 7, or 4 for Vortex) // New Wash 1 fields uint8_t wash1_wash_time; // Wash time in minutes (1-60) uint8_t wash1_presoak_time; // Presoak time in minutes (1-60) uint8_t wash1_max_speed; // Max speed setting (1-10) uint8_t wash1_max_spin; // Max spin setting (values: 1, 3, 5, 7, or 4 for Vortex) // New Wash 2 fields uint8_t wash2_wash_time; // Wash time in minutes (1-60) uint8_t wash2_presoak_time; // Presoak time in minutes (1-60) uint8_t wash2_max_speed; // Max speed setting (1-10) uint8_t wash2_max_spin; // Max spin setting (values: 1, 3, 5, 7, or 4 for Vortex) // New Wash 3 fields uint8_t wash3_wash_time; // Wash time in minutes (1-60) uint8_t wash3_presoak_time; // Presoak time in minutes (1-60) uint8_t wash3_max_speed; // Max speed setting (1-10) uint8_t wash3_max_spin; // Max spin setting (values: 1, 3, 5, 7, or 4 for Vortex) }SCREEN_Buf; typedef struct{ uint8_t dir; uint8_t timeline; }M_Node; typedef struct{ uint8_t node_len; M_Node node[10]; }MOTOR_Hash_Map; void Init_DISP_Para(void); void Init_Pattern(void); void Motor_Set_Func(uint8_t dir, uint16_t speed_val); void RunMotorCycle(uint8_t pattern, uint16_t speed); void Sound_Set_Func(bool status, uint8_t volume, uint16_t timeline); void LED_Set_Func(bool status, uint8_t light_val); void TFT_Set_Func(uint8_t brightness); void SleepMode_Func(bool sleep, uint8_t brightness); //void TFT_Brightness_Setting(uint8_t value); //void SleepMode_Func(void); void Temp_Correction_Func(void); void FLASH_Update(void); /* USER CODE END Private defines */ #ifdef __cplusplus } #endif #endif /* __MAIN_H */