Arduino小白学习记录:用电位器控制LED灯的亮度

时光怂恿深爱的人放手 提交于 2020-08-17 17:13:09

我是一个纯Arduino小白,为了完成老师安排的一个课题任务就开始了对Arduino的学习。上次看到一个观点:学习开发板,最好的方法就是自己把自己学到的东西写成技术文档,这样自己就必须把很多东西弄懂才能够写出来,这样也可以和别人分享自己的心得,还有就是可以让大家指处自己的错误。为了检验这个方法的有效性,也为了鼓励我自己继续学习Arduino,我开始了今天的这篇博客。

一、介绍

生活中,我们都见过一些可以调节亮度的小台灯,其实原理也比较简单,用一个简单的电位器就可以实现,下面我们就通过一个小实验来DIY一个吧。

二、材料准备

  • Arduino Uno 主板*1
  • 电位器模块*1
  • USB电缆*1
  • 面包板*1
  • LED灯*1
  • 300Ω电阻*1
  • 跳线若干

图1.1Arduino Uno 主板

                                     图1.1  Arduino Uno 主板

电位器

                                         图1.2  电位器

USB电缆线

                                        图1.3  USB电缆线

面包板

                                         图1.4  面包板

LED灯

                                          图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引脚取名为Sensor
  int SensorRead=0;
  int newdata=0;

  void setup()
  {
    Serial.begin(9600);
  }
  void loop()
  {
    SensorRead=analogRead(Sensor);//读出Sensor的值并将它赋给SensorRead
    newdata=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

                                       图1.13  结果1

结果2

                                     图1.14  结果2

将旋钮旋到不同的位置时,如图1.13和1.14,我们可以观察到LED灯的亮度发生了明显的变化,另外串口监视器上的数值也随之在变化。并且亮度越大,串口监视器上的数值越大。

七、总结分析

这是我第一次用Arduino的板子去完成一个实例,总体感觉并不是很难,因为在这之前我接触过51单片机和FPGA开发板,这些开发板的入门都相对比较难,尤其是FPGA,需要进行很多文件的配置和引脚的约束,而Arduino入门的确要简单很多。首先硬件电路的搭建基本都没问题,关于软件,一般学过C语言的同学基本的代码也都能看懂,如果看不懂的话可以先选择去看看C语言的基础代码。
另外Arduino的语言比较简洁,代码里面就集成了很多函数,例如在51单片机里面的延时函数是需要自己编写再调用的,但在Arduino中就直接用可以,这大大节省了开发的时间,也提高了开发效率。
本次实验中需要注意的地方是模拟信号的一些知识,接线的时候注意一下就好了,使用引脚的时候需要看该引脚上有没有“~”的标识,有的话就可以作为模拟信号输入,也才可以达到调节LED灯亮度的效果。
以上就是本次实验的全部内容,大家对实验内容有什么问题的话欢迎留言或者私信我哦。


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!