第四课--呼吸灯实验/zh

来自Microduino Wikipedia
Pkj讨论 | 贡献2014年7月18日 (五) 07:55的版本 原理
跳转至: 导航搜索

目的

前面的实验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);”

调试

  • 打开Maple IDE编译器,将程序拷贝到编译器中,选择好板卡(Microduino-CoreSTM32 to Flash)。点击下载按钮或者使用快捷键(Ctrl+U)即可完成下载。
  • 程序下载后,可看到led灯柔和从灭到亮再到灭,依次循环。玩家可以更改相关参数来实验。

视频