| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- /**
- * @file LED_BREATH_ATY.c
- *
- * @param Project DEVICE_GENERAL_ATY_LIB
- *
- * @author ATY
- *
- * @copyright
- * - Copyright 2017 - 2025 MZ-ATY
- * - This code follows:
- * - MZ-ATY Various Contents Joint Statement -
- * <a href="https://mengze.top/MZ-ATY_VCJS">
- * https://mengze.top/MZ-ATY_VCJS</a>
- * - CC 4.0 BY-NC-SA -
- * <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
- * https://creativecommons.org/licenses/by-nc-sa/4.0/</a>
- * - Your use will be deemed to have accepted the terms of this statement.
- *
- * @brief functions of LED for all embedded device
- *
- * @version
- * - 1_01_250814 > ATY
- * -# Preliminary version, first Release
- ********************************************************************************
- */
- #ifndef __LED_BREATH_ATY_C
- #define __LED_BREATH_ATY_C
- #include "LED_BREATH_ATY.h"
- /******************************* For user *************************************/
- /******************************************************************************/
- void SetLedBreathMode(struct LED_BREATH_ATY_Dev* dev, LedBreathMode_t mode)
- {
- dev->breathMode = mode;
- dev->breathTimer = 0;
- dev->breathDir = 1;
- dev->breathVal = 0;
- dev->breathPauseCnt = 0;
- }
- void LedBreath(struct LED_BREATH_ATY_Dev* dev)
- {
- dev->breathUpdate = 0;
- dev->breathTimer++;
- switch(dev->breathMode)
- {
- case BREATH_MODE_SMOOTH:
- if(dev->breathTimer >= BREATH_LED_SPEED_MID * 2) { dev->breathUpdate = 1; }
- break;
- case BREATH_MODE_STEP:
- if(dev->breathTimer >= BREATH_LED_SPEED_MID * 2) { dev->breathStep = 10; dev->breathUpdate = 1; }
- break;
- case BREATH_MODE_FAST:
- if(dev->breathTimer >= BREATH_LED_SPEED_MID / 4) { dev->breathUpdate = 1; }
- break;
- case BREATH_MODE_SLOW:
- if(dev->breathTimer >= BREATH_LED_SPEED_MID * 4) { dev->breathUpdate = 1; }
- break;
- case BREATH_MODE_PAUSE_TOP:
- if(dev->breathTimer >= BREATH_LED_SPEED_MID * 2) { dev->breathUpdate = 1; }
- if(dev->breathVal == dev->breathMax && dev->breathPauseCnt < 10) {
- dev->breathPauseCnt++;
- dev->breathUpdate = 0;
- }
- else if(dev->breathVal == dev->breathMax) {
- dev->breathPauseCnt = 0;
- }
- break;
- case BREATH_MODE_PAUSE_BOTTOM:
- if(dev->breathTimer >= BREATH_LED_SPEED_MID * 2) { dev->breathUpdate = 1; }
- if(dev->breathVal == dev->breathMin && dev->breathPauseCnt < 10) {
- dev->breathPauseCnt++;
- dev->breathUpdate = 0;
- }
- else if(dev->breathVal == dev->breathMin) {
- dev->breathPauseCnt = 0;
- }
- break;
- case BREATH_MODE_PULSE:
- if(dev->breathDir == -1){
- dev->breathVal = 1;
- dev->breathUpdate = 1;
- }
- else{
- if(dev->breathTimer >= BREATH_LED_SPEED_MID * 2) { dev->breathUpdate = 1; }
- }
- default:
- if(dev->breathTimer >= BREATH_LED_SPEED_MID * 2) { dev->breathUpdate = 1; }
- break;
- }
- if(dev->breathUpdate) {
- dev->breathTimer = 0;
- dev->breathVal += (dev->breathDir * dev->breathStep);
- if(dev->breathVal >= dev->breathMax) {
- dev->breathVal = dev->breathMax;
- dev->breathDir = -1;
- }
- else if(dev->breathVal <= dev->breathMin) {
- dev->breathVal = dev->breathMin;
- dev->breathDir = 1;
- }
- dev->pwmSet(dev->breathVal);
- }
- }
- #endif /* __LED_BREATH_ATY_C */
- /************************************ etc *************************************/
- /* init */
- // void LED_1_Breath_PWM_SET(uint8_t breathVal){
- // // __HAL_TIM_SET_COUNTER(&htim2, 0);
- // __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, breathVal * 65535 / 100);
- // }
- // struct LED_BREATH_ATY_Dev LED_BREATH_ATY_t_2 = {
- // .breathMode = BREATH_MODE_FAST,
- // .breathTimer = 0,
- // .breathDir = 1,
- // .breathVal = 0,
- // .breathPauseCnt = 0,
- // .breathStep = 1,
- // .breathMax = BREATH_LED_MAX,
- // .breathMin = BREATH_LED_MIN,
- // .breathUpdate = 0,
- // .pwmSet = LED_2_Breath_PWM_SET,
- // .lock = _ATY_UNLOCKED,
- // .debugEnable = 0,
- // .LOG = printf
- // };
- /* use */
- // LedBreath(&LED_BREATH_ATY_t_1); // put at 1ms cycle
- /******************************************************************************/
- /******************************** End Of File *********************************/
|