“第四课--呼吸灯实验/zh”的版本间的差异
(Created page with "{| style="width: 800px;" |- | ==目的== 前面的实验led只有两个状态亮与灭,本实验将实现一个led渐明渐暗,即达到呼吸灯的效果。 ==设备== *[...") |
(没有差异)
|
2014年7月18日 (五) 07:52的版本
目的前面的实验led只有两个状态亮与灭,本实验将实现一个led渐明渐暗,即达到呼吸灯的效果。 设备Microduino-CoreSTM32是采用 STM32F103CBT6芯片的ARM开发板,采用独特的Upin7接口,大小与一枚一元硬币差不多大,完全兼容Microduino其他扩展模块。*其他硬件设备 原理实验采用PWM脉冲宽度调制,调节数字信号(“0”,“1”)在一个周期时间内各占的时间即占空比,高电平“1”时间越长,也就越亮。 关于PWM详细参考: http://www.geek-workshop.com/thread-125-1-1.html 但是实验不是每个I/O口都能实现PWM调节,我们需要用到PWM口才行。Microduino-CoreSTM32的硬件PWM:0,1,4,11,12,14(A0),15(A1),16(A2),17(A3),18(SDA),19(SCL),20(A6),21(A7),我们直接选择板子上的led灯来看看效果,因为它接到了D4。玩家也可以换换其他的led口来实验。 程序int ledPin=4;// 0,1,4,11,12,14(A0),15(A1),16(A2),17(A3),18(SDA),19(SCL),20(A6),21(A7)是pwm输出口
void setup()
{
pinMode(ledPin, PWM);
}
void loop(){
for(int fadeValue=0;fadeValue<=65535;fadeValue+=500)
//循环语句,控制PWM亮度的增加,控制fadeValue的变化大小可以控制亮度级别
{
pwmWrite(ledPin,fadeValue); //将亮度级别写入给led
delay(30); //当前亮度级别维持的时间,单位毫秒
}
for(int fadeValue=65535;fadeValue>=0;fadeValue-=500)
//循环语句,控制PWM亮度减小,控制fadeValue的变化大小可以控制亮度级别
{
pwmWrite(ledPin,fadeValue); //将亮度级别写入给led
delay(30); //当前亮度级别维持的时间,单位毫秒
}
delay(400);
}
程序采用循环语句,较方便的自动控制led的亮度。 语法: pwmWrite(ledPin,fadeValue); 写一个PWM波形到指定的管脚,该引脚将输出一个稳定的方波,你可以调节函数里面的值来改变占空比,从而实现PWM调制。 ledPin :PWM输出引脚 fadeValue:占空比设置。 还要注意一点的是:需要把输出定义成PWM模式。即“ pinMode(ledPin, PWM);” 调试
视频 |