用户工具

站点工具


learing:examples:analogwritemega

差别

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


learing:examples:analogwritemega [2023/06/07 04:23] (当前版本) – 创建 - 外部编辑 127.0.0.1
行 1: 行 1:
 +====== OCROBOT MEGA2560上12颗LED的模拟输出 ======
 +
 +<WRAP left round info 65%>
 +这个例子使用OCROBOT MEGA2560使12颗LED依次产生渐变效果。
 +</WRAP>
 +
 +<WRAP left round box 100%>
 +===== MEGA2560 =====
 +
 +==== 硬件要求 ====
 +
 +  * OCROBOT MEGA2560控制器
 +  * 12个LED
 +  * 1个220欧姆电阻
 +  * 连接线
 +  * 面包板
 +  * 导线
 +
 +在LED长脚的一端串联一个220欧姆限流电阻到控制器数字口2-13,短的脚接地。
 +
 +==== 原理图 ====
 +
 +
 +
 +==== 代码 ====
 +
 +在setup()中for()的使用是为了分配MEGA2560的2到13号数字引脚为输出。
 +然后接下来又嵌套了三个for语句。第一个
 +
 +<code cpp>for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++)</code>
 +
 +依次从最小的数字口的LED到最大的数字口的LED变换,这个循环中,移动引脚到下一个之前,两件事情被完成,第一,通过下面的代码点亮单独的LED。
 +<code cpp>for (int brightness = 0; brightness < 255; brightness++) {
 +      analogWrite(thisPin, brightness);
 +      delay(2);
 +}</code>
 +
 +每循环一次,亮度变量增加一点,这个亮度值对应当前的引脚。当俩都到了最大值,就开始下面的循环
 +
 +<code cpp>for (int brightness = 255; brightness >= 0; brightness--) {
 +      analogWrite(thisPin, brightness);
 +      delay(2);
 +}</code>
 +
 +这个循环减小亮度变量,渐渐熄灭LED。当到达零值的时候,主要的for循环开始工作,程序移到下一个引脚,重复上面所有的步骤
 +
 +<code cpp>/*
 +  Mega analogWrite() test
 + 使数字引脚2-13的LED产生渐变效果
 +  这个例子适用于arduinoMEGA,不适用于以前的板子
 +*/
 +// 常量定义引脚
 +const int lowestPin = 2;
 +const int highestPin = 13;
 +
 +
 +void setup() {
 +  // 设置为输出:
 +  for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) { 
 +    pinMode(thisPin, OUTPUT); 
 +  }
 +}
 +
 +void loop() {
 +  // 遍历引脚:
 +  for (int thisPin =lowestPin; thisPin <= highestPin; thisPin++) { 
 +    // 使这个引脚从渐变灭到渐变亮
 +    for (int brightness = 0; brightness < 255; brightness++) {
 +      analogWrite(thisPin, brightness);
 +      delay(2);
 +    } 
 +    //使这个引脚从渐变亮到渐变灭
 +    for (int brightness = 255; brightness >= 0; brightness--) {
 +      analogWrite(thisPin, brightness);
 +      delay(2);
 +    } 
 +    // 延时:
 +    delay(100);
 +  }
 +}</code>
 +</WRAP>