用户工具

站点工具


learing:examples:fade

差别

这里会显示出您选择的修订版和当前版本之间的差别。


前一修订版
learing:examples:fade [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1
行 1: 行 1:
 +====== Fading(明暗) ======
 +
 +<WRAP left round info 65%>
 +使用analogWrite()功能让LED渐变亮或者渐变灭。analogWrite使用了PWM(脉冲宽度调制)功能,快速打开或者关闭数字引脚来制造渐变的效果。
 +</WRAP>
 +
 +<WRAP left round box 100%>
 +===== ALPHA MEGA328-U核心 =====
 +==== 硬件 ====
 +  * [[ocrobot:alpha:parallelexpansion:index|ALPHA 并行扩展板]]
 +  * [[ocrobot:alpha:mega328-u:main|ALPHA MEGA328-U]]
 +  * [[ocrobot:alpha:11led:index|ALPHA 11 LED模块]]
 +==== 搭建电路 ====
 +
 +  - ALPHA 11 LED模块插入并行扩展版1号槽位。
 +  - ALPHA MEGA328-U模块插入并行扩展板2号槽位。
 +  - USB线连接计算机与ALPHA MEGA328-U。
 +
 +==== 代码 ====
 +<code cpp>
 +/*
 + Fade
 + 使用analogWrite()功能让LED渐变亮或者渐变灭
 +*/
 +
 +int led = 9;           // LED 连到9号脚
 +int brightness = 0;    // LED 亮度
 +int fadeAmount = 5;    // 渐变量
 +
 +void setup() 
 +  //9为数字输出
 +  pinMode(led, OUTPUT);
 +
 +
 +
 +void loop() 
 +  // 亮度
 +  analogWrite(led, brightness);    
 +
 +  // 下一次改变亮度
 +  brightness = brightness + fadeAmount;
 +
 +  // 渐变快要结束的时候反过来 
 +  if (brightness == 0 || brightness == 255) {
 +    fadeAmount = -fadeAmount ; 
 +  }     
 +  // 等待30毫秒看看效果 
 +  delay(30);                            
 +}
 +
 +</code>
 +
 +<WRAP left round tip 100%>
 +这个例子中我们使用了一个新函数:[[reference:language:analogwrite|analogWrite()]]。这个函数用于从特定的管脚输出PWM信号。
 +
 +[[knowledge:electronic:pwm|PWM]]是使用数字手段来控制模拟输出的一种手段。使用数字控制产生占空比不同的方波(一个不停在开与关之间切换的信号)来控制模拟输出。控制LED亮度渐变我们常常会用到这个函数。
 +</WRAP>
 +
 +
 +
 +
 +
 +<WRAP left round box 100%>
 +===== MangoII =====
 +
 +==== 硬件要求 ====
 +
 +  * OCROBOT控制器
 +  * 面包板
 +  * LED
 +  * 220欧姆电阻
 +  * 导线
 +
 +把LED的阳极(长脚的那端)接一个220欧的电阻到控制器的数字输出引脚9,连接负极到控制器的GND。
 +
 +==== 代码 ====
 +
 +只需要在setup中设置9号引脚为LED即可
 +你在loop中使用的analogWrite()功能需要两点:
 +\\ 1.说明输出到哪个引脚。
 +\\ 2.说明PWM值。
 +
 +为了产生渐变的效果,从0到255逐渐增加PWM值,然后减小到零来完成一个循环。下面的程序中,将PWM值设置为叫做brightness的变量。loop中每一次循环,通过变量fadeAmount增减PWM值。
 +如果brightness不在最大值也不在最小值,fadeAmount就不会变化。换句话说,如果fadeAmount是5就把它设置成-5,如果是-5就设置为5。
 +下次循环的时候,反过来。
 +
 +analogWrite()可以很快的改变pwm值,所以要delay来控制渐变的速度,试着改变delay的值,看看会发生什么。
 +
 +<code cpp>
 +/*
 + Fade
 + 使用analogWrite()功能让LED渐变亮或者渐变灭
 +*/
 +
 +int led = 9;           // LED 连到9号脚
 +int brightness = 0;    // LED 亮度
 +int fadeAmount = 5;    // 渐变量
 +
 +void setup() 
 +  //9为数字输出
 +  pinMode(led, OUTPUT);
 +
 +
 +
 +void loop() 
 +  // 亮度
 +  analogWrite(led, brightness);    
 +
 +  // 下一次改变亮度
 +  brightness = brightness + fadeAmount;
 +
 +  // 渐变快要结束的时候反过来 
 +  if (brightness == 0 || brightness == 255) {
 +    fadeAmount = -fadeAmount ; 
 +  }     
 +  // 等待30毫秒看看效果 
 +  delay(30);                            
 +}
 +
 +</code>
 +</WRAP>