使用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呼吸灯的更多相关文章

  1. 【iCore4 双核心板_ARM】例程八:定时器PWM实验——呼吸灯

    实验原理: STM32的定时器有PWM功能,iCore4的蓝色LED连接在定时器的输出接口上, 可以通过定时器的PWM输出控制LED的亮度,从而实验呼吸灯的功能. 核心代码: int main(voi ...

  2. 12-ESP8266 SDK开发基础入门篇--PWM,呼吸灯

    https://www.cnblogs.com/yangfengwu/p/11094085.html PWM其实没有什么,就是看着官方给的API,,,然后就是用呗 对了,其实对于RTOS SDK版本的 ...

  3. Android 呼吸灯流程分析

    一.Android呼吸灯Driver实现 1.注册驱动 代码位置:mediatek/kernel/drivers/leds/leds_drv.c 602static struct platform_d ...

  4. Nubia Z5S 基于官方H207/4.4内核的Mokee4.4.4 RC3.2 (2014.7.31修复呼吸灯(能亮依旧不能呼吸))

    特别感谢 yun3195 和 轻描淡写Yhw  帮忙測试 转帖请务必注明本链接地址: http://blog.csdn.net/syhost/article/details/36444259 此ROM ...

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

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

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

    简述PWM PWM--脉宽调制信号(Pulse Width Modulation),它利用微处理器的数字输出来实现,是对模拟电路控制的一种非常有效的技术,广泛应用于测量.通信.功率控制与变化等许多领域 ...

  7. CSS动画总结与呼吸灯效果

    首先,先介绍一下主要用到的css属性:animation,text-shadow. text-shadow就不再介绍了,上一篇已经详细介绍了用法.这里先介绍一下animation属性. 1.anima ...

  8. 基于for循环的呼吸灯

    #include "stm32f10x.h" #include "stm32f10x_gpio.h" //#include "led.h" ...

  9. Android呼吸灯效果实现

    最近需要做一个搜索动画的呼吸灯效果,在网上查了下有以下两种实现方式,现记录下来. 实现呼吸灯效果本质上都是使用ImageView动画,实现alpha值变化. 第一种方式,直接使用动画实现,代码如下: ...

随机推荐

  1. 【Java】抽象类和接口

    一.抽象类和抽象方法 1.什么是抽象类 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法.普通方法.static方法.常量和变量等内容. 但是普通类中不能有抽象方法, ...

  2. LeetCode OJ:3Sum Closest(最接近的三数之和)

    Given an array S of n integers, find three integers in S such that the sum is closest to a given num ...

  3. eclipse 不能启动虚拟机

    在eclipse文件下有个eclipse.ini文件打开它.现在如果没有-vm 这个参数那么就在最后新起一行写上 -vm+空格+参数 参数是你安装的jdk目录比如我的 -vm d:/java/jdk1 ...

  4. C++中const指针用法汇总

    这里以int类型为例,进行说明,在C++中const是类型修饰符: int a; 定义一个普通的int类型变量a,可对此变量的值进行修改. const int a = 3;与 int const a ...

  5. CallKit iOS 教程

    原文:CallKit Tutorial for iOS 作者:József Vesza 译者:kmyhy 对 VoIP App 开发者来说,iOS 的支持并不友好.尤其是它的通知发送这一块,太糙了.你 ...

  6. setInterval()和setTimeout()可以接收更多的参数

    setInterval()和setTimeout()可以接收更多的参数,那么这些参数是干什么用的呢?从第三个参数开始,依次用来表示第一个参数(回调函数)传入的参数,例如: setTimeout(fun ...

  7. Asyphre for Delphi Xe4 Demo Running on iPad!

    Asyphre 4.0 . customize bitmap with asvf file.  compiled done!  check the video!

  8. 类里边的构造函数可以被private修饰,在类的内部创建对象。利用这种特性创建单类模式

  9. 利用aop完成功能权限验证遇到的问题

    报错信息如上,找不到此方法原因是services层的有的方法带了parameters! 解决:注解解析器这里的代码不变:  将得到的service层的class遍历所有方法(存在效率问题) 匹配该方法 ...

  10. 原生js面向对象写法

    Mouse就是一个类,有自己的成员变量和成员方法,成员方法一定加上prototype,避免js原型的坑. var Mouse = function(id) { this.id = id; this.n ...