STM32_呼吸灯

/*项目:呼吸灯
    方法:通过延时来控制灯的亮和灭的时间,实现对灯的亮度的控制
    
*/
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "led.h"
#include "breath.h"
#define bbb 5000 
void breath(){
    //定义三个无符号整形,i控制灯亮/灭的时间,j控制的是灯亮和灭的亮度变化,k控制的是整个呼吸灯的时间
    unsigned int i=0,j=0,k;
    while(1){ 
        //通过循环来控制呼吸灯的总时间
    for(k=0;k<bbb;k++){
        //红灯灭掉
      RED_OFF
        //红灯持续灭的时间
        //这时bbb-j的值是最大的,也就是灯最暗的时候
      for(i=0;i<bbb-j;i++);
        //红灯亮
      RED_ON
        /*红灯亮持续的时间
        因为控制整个呼吸灯的时间是一定的,所以控制亮和灭的值加起来要等于bbb,
        所以这时的bbb-(bbb-j)的值是最小的,也就是几乎不亮*/
      for(i=0;i<bbb-(bbb-j);i++);
        j++;//j++来控制灯的亮灭程度
    if(j==bbb){
        j=0;
        
    }
}
    for(k=0;k<bbb;k++){
      YELLOW_OFF
      for(i=0;i<bbb-(bbb-j);i++);
      YELLOW_ON
      for(i=0;i<bbb-j;i++);
     j++;
    if(j==bbb){
        j=0;
    }
}
    for(k=0;k<bbb;k++){
      PURPLE_OFF
      for(i=0;i<bbb-(bbb-j);i++);
      PURPLE_ON
      for(i=0;i<bbb-j;i++);
     j++;
    if(j==bbb){
        j=0;
    }
}
    YELLOW_OFF
  RED_OFF
  PURPLE_OFF
    }
}

学习交流可以联系QQ:1714066988

原文地址:https://www.cnblogs.com/liangjinjie/p/8029969.html