“第四课--呼吸灯实验/zh”的版本间的差异
(→程序) |
|||
(未显示另一用户的1个中间版本) | |||
第1行: | 第1行: | ||
+ | {{Language|Maple Lesson 04 - Breathing LED experiment}} | ||
{| style="width: 800px;" | {| style="width: 800px;" | ||
|- | |- | ||
第12行: | 第13行: | ||
==原理== | ==原理== | ||
实验采用PWM脉冲宽度调制,调节数字信号(“0”,“1”)在一个周期时间内各占的时间即占空比,高电平“1”时间越长,也就越亮。 关于PWM详细参考: http://www.geek-workshop.com/thread-125-1-1.html | 实验采用PWM脉冲宽度调制,调节数字信号(“0”,“1”)在一个周期时间内各占的时间即占空比,高电平“1”时间越长,也就越亮。 关于PWM详细参考: http://www.geek-workshop.com/thread-125-1-1.html | ||
− | 但是实验不是每个I/ | + | |
+ | 但是实验不是每个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口来实验。 | ||
==程序== | ==程序== |
2014年11月5日 (三) 07:26的最新版本
Language | English |
---|
目的前面的实验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的亮度。 语法:
还要注意一点的是:需要把输出定义成PWM模式。即“ pinMode(ledPin, PWM);” 调试
视频 |