Arduino小白的学习记录:用电位器控制LED灯的亮度
- 一、介绍
- 二、材料准备
- 三、实验原理
- 四、实验步骤
- 五、代码
- 六、效果展示
- 七、总结分析
我是一个纯Arduino小白,为了完成老师安排的一个课题任务就开始了对Arduino的学习。上次看到一个观点:学习开发板,最好的方法就是自己把自己学到的东西写成技术文档,这样自己就必须把很多东西弄懂才能够写出来,这样也可以和别人分享自己的心得,还有就是可以让大家指处自己的错误。为了检验这个方法的有效性,也为了鼓励我自己继续学习Arduino,我开始了今天的这篇博客。
一、介绍
生活中,我们都见过一些可以调节亮度的小台灯,其实原理也比较简单,用一个简单的电位器就可以实现,下面我们就通过一个小实验来DIY一个吧。
二、材料准备
- Arduino Uno 主板*1
- 电位器模块*1
- USB电缆*1
- 面包板*1
- LED灯*1
- 300Ω电阻*1
- 跳线若干
图1.1 Arduino Uno 主板
图1.2 电位器
图1.3 USB电缆线
图1.4 面包板
图1.5 LED灯
大家应该都知道,LED灯的长引脚是正极,短引脚时负极,提醒大家接线的时候不要接反了哦。
图1.6 300Ω电阻
图1.7 跳线若干
三、实验原理
电位器其实就是我们初中就学过的一个变阻器而已,就是通过调节滑块的位置来决定接入电路的阻值,进而来控制输出电压的大小。
图1.8 电位器的原理图
如图1.8所示,将电位器的一个引脚接5V的电压,另一个引脚接GND(0V),中间的引脚是电位器的输出引脚,通过调节中间一个滑块的位置就可以达到输出电压为0~5V变化的效果了。
我们知道,在额定电压下,流过LED灯的电流越大,LED的亮度越大,所以我们通过观察LED灯的亮度就可以大致知道电位器的位置了。
四、实验步骤
首先我们的电脑上要安装一个开发环境,因为Arduino的很多东西都是开源的,这就为我们进行开发提供了很多便利,没有安装的小伙伴这里提供了Arduino的官网,大家直接在上面下载安装即可。link.
接下来就是连线了,因为实物的连线图看着比较混乱,这里我用Fritzing软件画出了一个模拟的电路连线图。
图1.9 模拟的电路连线图
如图1.9所示,从左边开始看,面包板上首先是一个电位器、一个LED灯和一个电阻(这里我选的是300Ω),大家都知道LED灯正向导通的时候电阻是很小的,所以这里面电阻的作用是保护电路,如果有小伙伴忘了串联电阻的话,那么恭喜你,你成功烧坏了一块板子……
接线的时候首先把电位器的上下的两个引脚分别接+5V和GND,然后将中间一个引脚作为模拟信号输出(实物图中这三个引脚的位置变化了,接线的时候大家注意一下)接到板子的A0接口,然后就是把LED灯接在面包板上,我们在板子右边找到013接口,其中数字前带有一个“”(模拟信号输入)的都可以作为作为LED的输入信号,然后其余的连线按照图1.9接好就可以了。
线全部接好后就是图1.10的样子了。
图1.10 电路连线实物图
完成了硬件部分的搭建,接着我们就需要进行软件部分的工作了。首先打开Arduino IDE软件,新建一个工程文件如图1.11所示
图1.11 新建一个工程文件
然后将代码输入这个窗口就可以了。插上板子之后,先将板子配置好(型号和串口号),接着点击“上传”就可以了进行程序的烧录了。
五、代码
/*可变电阻器的模拟信号输入**功能:调节LED的亮度*编写:南友*/int Sensor=A0;//将A0引脚取名为Sensorint SensorRead=0;int newdata=0;void setup(){Serial.begin(9600);}void loop(){SensorRead=analogRead(Sensor);//读出Sensor的值并将它赋给SensorReadnewdata=map(SensorRead,0,1023,0,225);Serial.println(newdata);analogWrite(3,newdata);delay(200);}
六、效果展示
首先我们打开右上角的串口监视器,然后通过旋动电位器上的旋钮就可以调节串口监视器上面的数字,大家可以发现,上面的数字每隔200毫秒刷新一次(代码里设置的延时时长),上面数字的变化范围是0-255,这个是通过代码newdata=map(SensorRead,0,1023,0,225)进行控制的,目的就是把这个原本是0-1023变化的数字改成了0-255,便于大家的观察。
图1.12 串口监视器
图1.13 结果1
图1.14 结果2
将旋钮旋到不同的位置时,如图1.13和1.14,我们可以观察到LED灯的亮度发生了明显的变化,另外串口监视器上的数值也随之在变化。并且亮度越大,串口监视器上的数值越大。
七、总结分析
这是我第一次用Arduino的板子去完成一个实例,总体感觉并不是很难,因为在这之前我接触过51单片机和FPGA开发板,这些开发板的入门都相对比较难,尤其是FPGA,需要进行很多文件的配置和引脚的约束,而Arduino入门的确要简单很多。首先硬件电路的搭建基本都没问题,关于软件,一般学过C语言的同学基本的代码也都能看懂,如果看不懂的话可以先选择去看看C语言的基础代码。
另外Arduino的语言比较简洁,代码里面就集成了很多函数,例如在51单片机里面的延时函数是需要自己编写再调用的,但在Arduino中就直接用可以,这大大节省了开发的时间,也提高了开发效率。
本次实验中需要注意的地方是模拟信号的一些知识,接线的时候注意一下就好了,使用引脚的时候需要看该引脚上有没有“~”的标识,有的话就可以作为模拟信号输入,也才可以达到调节LED灯亮度的效果。
以上就是本次实验的全部内容,大家对实验内容有什么问题的话欢迎留言或者私信我哦。