“第四课--按钮PWM控制LED亮度/zh”的版本间的差异

来自Microduino Wikipedia
跳转至: 导航搜索
(Created page with "{| style="width: 800px;" |- | ==目的== 以往led只有两个状态亮与灭,现在通过按键实现led亮度逐渐亮与逐渐灭。即PWM脉冲宽度调制,调节数...")
 
Pkj讨论 | 贡献
第1行: 第1行:
 +
{{Language|Lesson_4--The_button_PWM_control_of_LED_brightness}}
 
{| style="width: 800px;"
 
{| style="width: 800px;"
 
|-
 
|-

2014年3月2日 (日) 14:20的版本

Language English

目的

以往led只有两个状态亮与灭,现在通过按键实现led亮度逐渐亮与逐渐灭。即PWM脉冲宽度调制,调节数字信号(“0”,“1”)在一个周期时间内各占的时间即占空比,高电平“1”时间越长,也就越亮。 关于PWM详细参考: http://www.geek-workshop.com/thread-125-1-1.html

设备

  • Microduino-Core
  • Microduino-FT232R
  • 其他硬件设备
    • 面包板跳线 一盒
    • 面包板 一块
    • LED发光二极管 一个
    • 220欧姆电阻 一个
    • 按键 一个
    • USB数据连接线 一根

原理图

按键接法分别采用内部上拉和外部下拉,接数字口D0-D13。PWM控制口必须是使用数字口D3、D5、D6、D9、D10、D11。

程序

int n=0;
void setup ()
{
  pinMode(2,INPUT);
  pinMode(7,INPUT_PULLUP);//设置为内部上拉
  pinMode(11,OUTPUT);//该端口需要选择有3、5、11、9、10、11数字口才能PWM控制
}

void loop()
{
  int up =digitalRead(2);          //读取2号口的状态
  int down = digitalRead(7);      //读取7号口的状态   
  if (up==HIGH)                    
  { 
    n=n+5;                         
    if (n>=255) {
      n=255;
    }            //限定最大值为255   
    analogWrite(11,n);   //使用PWM控制11号口输出,变量n的取值范围是0-255 
    delay (300);
  }
  if (down==LOW)             
  {
    n=n-5;
    if (n<=0) {
      n=0;
    }
    analogWrite(11,n); //使用PWM控制11号口输出,变量n的取值范围是0-255 
    delay (300);
  }
}

analogWrite()用法

  • 用法:将值模拟写入指定引脚。
  • 语法:analogWrite(pin, val),pin:引脚;val:数值从0至255之间。

结果

左边按键使led亮度逐级递减,右边按键使led亮度逐级递增。

视频