首页 > 其他分享 >呼吸灯

呼吸灯

时间:2023-04-10 17:24:45浏览次数:29  
标签:breathe 电容 int us 呼吸 time cycle

一、什么是呼吸灯

摘自http://www.360doc.com/content/20/1202/17/69661187_949127207.shtml

呼吸灯,上电后LED灯渐渐变亮,当达到最亮时保持几秒钟,然后渐渐变暗直到熄灭。熄灭几秒钟后又渐渐由暗变亮,这样一直循环下去。如果循环亮灭的速度刚好和人的呼吸同步,那就是传说中的呼吸灯效果了。

 

 

 

 

二、实现原理

模拟人体呼吸,吸气和呼气各占1.5S,人眼的图像滞留时间0.04s(1/24帧画面)

按最快0.04s算,就是40ms。亮0.02S,灭0.02s,人眼看到的应该是一直亮(可以实验)

呼吸灯,就是改变这40ms中,亮和灭所占的百分比。

1500/40=38周期,40ms/37=1052us。38个周期变比中,每个周期增长1个单位1052us,38个周期刚好是40ms.这样达到全亮

亮的百分比多,人眼看到的就亮,反之就是暗。

经过测试:40ms周期,会有明显的闪烁。20ms闪烁现象不明显。

 

这种效果可以通过PWM来实现,通过调节PWM的占空比可以实现亮暗不同程度的变化。 也可以通过延时方法进行控制。

 

三、实现方法

实现方法1:电容充放电

电容是常用的储能元器件,通过电容的充放电可以实现呼吸灯。如下图所示:

 

 

上图中电阻R3和电容C2构成充电电路,电阻R4和电容C2构成放电电路。在开关K1闭合后,电池给电容C2充电,由于电阻R3起到了充电限流作用,使得C2充电缓慢,所以LED从灭到亮,C2从满电后LED达到最亮。当K1断开后,电容上的电通过R4和三极管构成放电回路,LED慢慢熄灭。从而实现呼吸灯。

 

实现方法2:555芯片

555芯片可是一个神器,这款芯片是迄今为止出货量做多的芯片,他的作用只有你想不到,而没有他做不到。看下面555产生方波的电路:

 

 电池通过电阻R1,R2给电容C1充电,当电容上的电压达到2/3电源电压时,引脚3和7输出低电平,这时候电容C2放电,当电容上的电压减小到1/3电源电压时,引脚3输出高电平,引脚7输出高电平,电容再次充电。将引脚3输出的PWM接到LED灯上就可以实现呼吸灯,如下图所示:

 

 

实现方法3:单片机实现

void my_breathe_led_init()
{
    gpio_set_func(GPIO_PC2,AS_GPIO); //设置为一般gpio
    gpio_set_input_en(GPIO_PC2,0);  //disable输入
    gpio_set_output_en(GPIO_PC2,1); //enable输出
    gpio_write(GPIO_PC2,1);   //输出高电平,点亮led
}

//cycleTime_us-每个周期的时间长度, onTime_us-每个周期点亮的时间长度
void my_breathe_led_onoff( unsigned int cycleTime_us, unsigned int onTime_us )
{
  gpio_write(GPIO_PC2,1);
  sleep_us(onTime_us);
  gpio_write(GPIO_PC2,0);
  sleep_us(cycleTime_us-onTime_us);
}
int i = 0;
int breathe_in_time = 1500; //吸
int breathe_out_time = 1000; //呼
int cycle_time = 20; //ms, 每个周期的时间总长度 //40ms
int cycle = 0; int main (void) { my_breathe_led_init();

  while(1)
  {
    cycle = breathe_in_time / cycle_time;
    for( i=0;i<cycle; i++ )
      my_breathe_led_onoff( cycle_time*1000, i*cycle_time*1000/cycle );
    cycle = breathe_out_time / cycle_time;
    for( i=cycle; i>1; i-- )
      my_breathe_led_onoff( cycle_time*1000, i*cycle_time*1000/cycle );
    
    
}

 

 

 

 

 

 

 

标签:breathe,电容,int,us,呼吸,time,cycle
From: https://www.cnblogs.com/hjj801006/p/17303412.html

相关文章

  • 有趣的 CSS - 好看的呼吸灯效果
    整体效果这个效果主要用css3的animation属性来实现的。这个效果可以用作在网站的整体Loading,也可以放在网站首屏当一个banner的背景也是非常棒的!代码部分html......
  • 直播平台源代码,Android自定义View实现呼吸灯效果
    直播平台源代码,Android自定义View实现呼吸灯效果自定义View自定义BreathView的Kotlin代码如下: importandroid.animation.ValueAnimatorimportandroid.animation.V......
  • 51单片机实现呼吸灯和PWM
    1.实现呼吸灯,其实就是使用很多个for循环不断对P0端口进行设置#include<REGX52.H>sbitLED=P2^0;voidDelay(unsignedintt){while(t--);}voidmain(){unsignedcharT......
  • 酶和细胞呼吸
    目录酶细胞呼吸酶绝大多数酶是蛋白质,少数是RNA。酶在过高过低PH下,或是过高温度下会发生不可逆的破坏,但低温不会造成这种不可逆的破坏。酶的速度远远大于无机催化剂......
  • 【心电检测】基于 EMD、CEEMDAN 算法实现呼吸心跳信号检测实例(去除呼吸旁瓣干扰,测量
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • 【嵌入式】微芯旺KungFu32A156MQT使用PWM实现呼吸灯
    由于例程给我的IO口是G8,但是我的板子上没有暴露G8引脚,所以需要查看数据手册,重映射一个IO口作为CCP的PWM输出 例:可见PB10使用AF2重映射到CCP0的通道3上,所以使用PB10观......
  • stm32 PWM实现呼吸灯
    项目:stm32输出PWM实现呼吸灯效果代码:PWM.c#include"stm32f10x.h"voidPWM_Init(void){ //PB0默认TIM3_CH3通道 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3......
  • 呼吸灯(PWM)+普中51单片机+江科大自化协
    1实验原理PWM(PulseWidthModulation)脉冲宽度调制,一种用数字信号控制模拟量的方法,因此在控制领域应用非常广泛。所谓PWM信号就是调整波形的占空比得到一系列矩形脉冲......
  • Micropython 呼吸灯,使用 machine.pwm
    学习ESP32micropython,使用网路课件最方便:三、PWM呼吸灯利用PWM的调制作用,制作呼吸灯,pwm()没有解释的很清楚,再来一个连接PWM(脉宽调制)frommachineimportPin,P......
  • #盲盒+码# 【FFH】一颗会呼吸的心
    本文正在参加「盲盒」+码有奖征文活动今天来复刻一个会呼吸的心,在前些阵子电视剧《燃烧我,温暖你》中一颗会呼吸的心引起了众多开发者的复刻...0.效果原剧中复刻效果......