Laridium_v49/Core/Inc/main.h
2025-03-20 17:51:34 +05:30

355 lines
8.9 KiB
C

/* 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 <stdbool.h>
/* 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 */