STM32呼吸灯

使用STM32开发板和mbed平台实现的一个呼吸灯。材料,LED灯,电阻,STM32开发板。

先上一张效果图。

背景:

我们之前设置GPIO口使用了DigitalOut,数字信号输出。只能是GPIO口为0或1两个值。在LED上体现的即是灭和亮。然而现实世界大量的信号都是模拟信号,如温度、声音、加速度等。百度上:“模拟信号是指信息参数在给定范围内表现为连续的信号。 或在一段连续的时间间隔内,其代表信息的特征量可以在任意瞬间呈现为任意数值的信号。”

理论知识(可以跳过):

模拟信号即可以简单理解为,模拟信号输出的值,可以是0~1里面连续的值,LED的亮度会随着电压的升高而变量,所以说,给LED赋值0~1,就能实现亮度渐变的效果。

但并不是所有微处理器都支持模拟信号输出的,所以有一种PWM输出功能,可以实现模拟输出。

简单来说就是通过一个时钟周期内高低电平的不同占空比来表征模拟信号。

简单的理解就是:连续的电压,可以用分立的电压来模拟,只要控制好高电平的持续时间,就能近似的模拟出来。

思路:

1、为LED设置一个PWM输出口,输出模拟信号。

2、先让led为0,即灯灭,再让灯每隔0.05s 执行led+0.05的亮度,这一步可以实现让led渐渐变亮。

3、灯全亮,即led=1,然后每隔0.05s,让led-0.05的亮度。这一步能实现让led渐渐变暗。

实例代码:

#include "mbed.h"

//PWM输出口
PwmOut PWM1(D8);

//计算亮度
float pv=0;

int main() {

//一个死循环
while(1){

    //如果灯没有全亮
     while (pv<=1)

    {

        PWM1=pv;
        //每隔0.05s变亮0.05
        pv=pv+0.05;

        wait(0.05);

    }
    //灯全亮

    //如果灯没灭
    while(pv>0){

        PWM1=pv;

        //每隔0.05s变暗0.05
        pv=pv-0.05;

        wait(0.05);

        }

}        

}

这是模拟信号输出最简单的一个应用,如果觉得灯的呼吸效果不明显的话,可以换一个小的电阻(使全亮时亮度更大),或者调整一下亮度的变化率。

时间: 2024-12-18 08:08:39

STM32呼吸灯的相关文章

(原创)用Verilog实现一个参数化的呼吸灯(Verilog,CPLD/FPGA)

1.Abstract     观察到一个有趣的现象,每当把Apple笔记本合上的时候,那个白色的呼吸灯就会反复地由暗渐明,然后又由明渐暗,乍一看就像Apple笔记本在打盹休息一样,十分可爱!于是突发奇想,要不用Verilog也写一个吧,资源也不需要太多,一个LED灯就可以了.为了使用方便,可以把它做成参数化的,可以根据时常进行参数调节:深睡.浅睡跟清醒的时候呼吸频率似乎是不一样的-     下面就来分析和实践一下. 2.Content   2.1 理论分析     根据上述描述的现象,仔细分析一

NE555-DIY呼吸灯的电路图

NE555设计的呼吸灯电路图 再提供一个LM358设计的呼吸灯电路图.

nrf51822之PWM呼吸灯程序

额外链接: 1.JLink-SWD烧写之引脚定义:http://www.openedv.com/posts/list/1747.htm 2.百度文库c语言之PWMhttp://wenku.baidu.com/link?url=2QeCZppvhH81D4OYAyi9eEDP8Sk0p0OQhPKPfo0OXWiWZ5PxBvSMXtP8ejxZw-sxrSOGwrFj3K3q2ewwkM_vAQlk-QMyWnD1eVuLNaANxZm 3.菜农M0助学板PWM呼吸灯小练(寄存器操作方式):ht

CSS 实现按钮及线呼吸灯效果

1. [代码]style    view sourceprint?01<style>02            body{03                font-family:'Segoe UI Light','Segoe UI',Arial,'微软雅黑',sans-serif;04                font-size: 20px;05                color:#333333;06 07            }08            .breath

STM8S PWM 应用 呼吸灯

//主功能接受:使用MCU STM8S105C6 的PWM通道2 PC2 来做呼吸灯 已经验证OK,呵 //呵,这个PWM设置刚开始用还是有点麻烦,因为是自己摸索,花点时间,还是攻克了 . //所用子函数都是调用STM8S的库函数stm8s_tim.c 中的. 宏定义: //分频宏 //计数器的时钟频率(fCK_CNT)等于fCK_PSC/( PSCR[15:0]+1). #define TIM1_PRESCALER_1 ((u16)0x00) #define TIM1_PRESCALER_2

PWM(脉宽调制)——LED特效呼吸灯设计

简述PWM PWM--脉宽调制信号(Pulse Width Modulation),它利用微处理器的数字输出来实现,是对模拟电路控制的一种非常有效的技术,广泛应用于测量.通信.功率控制与变化等许多领域. LED特效呼吸灯原理 采用pwm的方式,在固定的频率下,采用占空比的方式来实现LED亮度的变化.占空比为0,LED灯不亮,占空比为100%,则LED灯最亮.所以将占空比从0到100%,再从100%到0不断变化,就可以实现LED灯实现特效呼吸. 设计思路.框图 变亮:当cnt2 < cnt3时为高

好玩的WPF第二弹:电子表字体显示时间+多彩呼吸灯特效button

我们先来看看Quartz MS字体动态显示系统时间的效果,难度相较于上一篇也要简单很多. 首先是定义一个TextBlock例如以下. <Grid> <TextBlock Name="tBlockTime" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="68" Foreground="Green"/>

MT6753/MT6755 呼吸灯功能添加

利用mtk pmic自带的呼吸灯模式: 主要修改代码: kernel-3.10/drivers/misc/mediatek/leds/mt6755/leds.c int mt_brightness_set_pmic(enum mt65xx_led_pmic pmic_type, u32 level, u32 div){ ....... //begin: modified by chenhaibing add for breath-led 20151118        #if 0  pmic_s

iAPP(08)智能手机呼吸灯控制

部分华为手机顶部会配置一个呼吸灯,有通知信息,未接来电等,那个灯会一闪一闪的,可以通过灯预先设定的的颜色来区分事情的优先级.但只有这些功能太单调了,而且手机厂商并未给用户控制呼吸灯的权限. 可以让灯伴随音乐播放器来闪动(有一种直板手机跑马灯的感觉),至于LED灯的寿命会不会衰减并未考察. 没有呼吸灯的也可以手机屏幕虚拟出一个LED灯来进行提醒...