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=; int main() { //一个死循环
while(){ //如果灯没有全亮
while (pv<=) { PWM1=pv;
//每隔0.05s变亮0.05
pv=pv+0.05; wait(0.05); }
//灯全亮 //如果灯没灭
while(pv>){ PWM1=pv; //每隔0.05s变暗0.05
pv=pv-0.05; wait(0.05); } } }
这是模拟信号输出最简单的一个应用,如果觉得灯的呼吸效果不明显的话,可以换一个小的电阻(使全亮时亮度更大),或者调整一下亮度的变化率。
STM32呼吸灯的更多相关文章
- 【iCore4 双核心板_ARM】例程八:定时器PWM实验——呼吸灯
实验原理: STM32的定时器有PWM功能,iCore4的蓝色LED连接在定时器的输出接口上, 可以通过定时器的PWM输出控制LED的亮度,从而实验呼吸灯的功能. 核心代码: int main(voi ...
- 12-ESP8266 SDK开发基础入门篇--PWM,呼吸灯
https://www.cnblogs.com/yangfengwu/p/11094085.html PWM其实没有什么,就是看着官方给的API,,,然后就是用呗 对了,其实对于RTOS SDK版本的 ...
- Android 呼吸灯流程分析
一.Android呼吸灯Driver实现 1.注册驱动 代码位置:mediatek/kernel/drivers/leds/leds_drv.c 602static struct platform_d ...
- Nubia Z5S 基于官方H207/4.4内核的Mokee4.4.4 RC3.2 (2014.7.31修复呼吸灯(能亮依旧不能呼吸))
特别感谢 yun3195 和 轻描淡写Yhw 帮忙測试 转帖请务必注明本链接地址: http://blog.csdn.net/syhost/article/details/36444259 此ROM ...
- 好玩的WPF第二弹:电子表字体显示时间+多彩呼吸灯特效button
我们先来看看Quartz MS字体动态显示系统时间的效果,难度相较于上一篇也要简单很多. 首先是定义一个TextBlock例如以下. <Grid> <TextBlock Name=& ...
- PWM(脉宽调制)——LED特效呼吸灯设计
简述PWM PWM--脉宽调制信号(Pulse Width Modulation),它利用微处理器的数字输出来实现,是对模拟电路控制的一种非常有效的技术,广泛应用于测量.通信.功率控制与变化等许多领域 ...
- CSS动画总结与呼吸灯效果
首先,先介绍一下主要用到的css属性:animation,text-shadow. text-shadow就不再介绍了,上一篇已经详细介绍了用法.这里先介绍一下animation属性. 1.anima ...
- 基于for循环的呼吸灯
#include "stm32f10x.h" #include "stm32f10x_gpio.h" //#include "led.h" ...
- Android呼吸灯效果实现
最近需要做一个搜索动画的呼吸灯效果,在网上查了下有以下两种实现方式,现记录下来. 实现呼吸灯效果本质上都是使用ImageView动画,实现alpha值变化. 第一种方式,直接使用动画实现,代码如下: ...
随机推荐
- 配置管理puppet
目录: 1.功能 2.服务器 3.管理对应配置文件 4.脚本相关 5.puppet配置相关 6.puppet客户端安装脚本 7.主机配置文件新增节点详细 8.新增文件项目 9.puppet管理命令 ...
- Hive——巧用transform处理复杂的字符串问题
相比于Map-Reduce,Hive对数据的处理相对简单,但是Hive本身提供的函数,对于处理复杂的字符串问题,就显得不是很方便,此时,可以借助transform,引入外界的Python程序对字符串进 ...
- mac 电脑学习笔记 -
新买了个mac mini,第一次用mac,有点linux基础,借此机会记录一下自己的学习过程. 1.个人设置文件 .profile export LS_OPTIONS='--color=auto' # ...
- 你真的对java static了解吗,代码优化可能更加简单
static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被类的所有实例共享. 只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们.因此,s ...
- Linux下Apache配置局域网访问出现的问题
在网站安装好之后,本机可以访问,但是局域网内无法访问,我查看了 /etc/httpd/conf/httpd.conf 看到我的配置如下 <Directory ......> Allow A ...
- 51nod 1495 中国好区间
阿尔法在玩一个游戏,阿尔法给出了一个长度为n的序列,他认为,一段好的区间,它的长度是>=k的,且该区间的第k大的那个数,一定大于等于T.那么问题来了,阿尔法想知道有多少好的区间. 由于阿尔法的序 ...
- 转载 fpga中 restoring 和 non-restoring 除法实现。
对于non-restoring方法,主要是用rem和den移位数据比较,rem_d长度为den+nom的总长,den_d长度为den+nom的总长度,rem_d的初始值为{{d_width{1'b0} ...
- excel oracle字段命名(大写下划线分词)转 驼峰命名
干货: (帕斯卡) =LEFT(C251,1)&MID(SUBSTITUTE(PROPER(C251),"_",""),2,100) (驼峰) =LOW ...
- rac ASM下最简单归档开启/关闭方法
原创作品,出自 “深蓝的blog” 博客,深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/47172639本次先来介绍一下在rac环 ...
- Ajax异步调用http接口后刷新页面
使用Ajax的目的就是提高页面响应速度,无需同步调用,无需整个页面刷新.这里直接在html中使用js来实现: 先获取XMLHttpRequest对象 var xmlHttp; //创建一个xmlHtt ...