Arduino测试题(二)

网友投稿 2019-12-04 11:47

题目要求:

使用面包板,任意选取一个支持PWM(脉冲调制)输出的数字I/O口,控制一个LED灯,让他产生由暗逐渐变亮的效果,每个循环周期是3秒。

题目分析:

这个题目是让做一个LED呼吸灯,呼吸灯是一种常见的通过调节灯的亮灭来显示某种状态的装置,最常见的例子就是手机在充电的时候,那颗可以明暗交替的充电指示灯。这是一道在基础类编程任务赛以及中小学单片机比赛中非常常见的题目,属于难度中等偏低的入门门类型题目。

从题目分析,我们可以得到的关键信息如下

直接用到的器材:

Arduino平台

面包板

LED(灯珠或模块)

导线若干

间接用到的器材:

电阻

https://cdn.china-scratch.com/timg/191206/114H34341-0.jpg

需要的编程模块:

控制(模拟输出)

循环(for循环)

延时


我们已经知道电阻不分正负极了,通过串联电阻对LED进行限流,电阻越大LED亮度越低,为了能更高的观察LED的明暗状态我们选用大电阻1K欧姆,或者串联更多电阻。

https://cdn.china-scratch.com/timg/191206/114H31546-1.jpg

电路连接

根据题目可知我们需要用PWM管脚,在Arduino中PWM管脚就是带有波浪线的数字管脚,他们分别是3、5、6、9、10、11管脚。

https://cdn.china-scratch.com/timg/191206/114H424b-2.jpg

我们这里选取6号管脚进行实验学习,我们要将LED的长脚(正极)串联1K欧姆的电阻连接到6号管脚。LED的短脚(负极)连接在GND管脚。

https://cdn.china-scratch.com/timg/191206/114H43D2-3.jpg

接线图

程序分析编写:

Arduino中PWM输出值的范围是0-255,数值越大灯越亮,数值越小灯越暗。这里的数值不是代表电流的大小,是高低电平的占空比,大家简单了解一下,后面会细讲。

https://cdn.china-scratch.com/timg/191206/114H44623-4.jpg

因为PWM的范围值是0-255,题目要求是3秒一个周期,所以这里为了方便计算我们将for循环的范围设为0-250,步长设为5,这样整个循环下来一共是250➗5=50次判断。  3000/50=60,每次判断需要延时60毫秒,整个循环周期才是3秒。所以我们每次判断要加个60毫秒的延时,才能一个循环周期是3秒代码如下。 void setup(){
}
void loop(){  for (int i = 0; i <= 250; i = i + (5))  //for循环。设定i=0,如果i<=255,i的数值每次+5,再与255进行比较,直到大于255为止。  {      analogWrite(6,i);  //6号管脚为PWM输出,输出的值是变量i    delay(60);          //延时60毫秒   }  }

Arduino 代码

https://cdn.china-scratch.com/timg/191206/114H45O2-5.jpg

Mixly代码

实物连线图:

https://cdn.china-scratch.com/timg/191206/114H5H94-6.jpg

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com