Arduino入门

您所在的位置:网站首页 开关按钮o和一哪个是开哪个是关 Arduino入门

Arduino入门

2023-05-27 13:10| 来源: 网络整理| 查看: 265

一、必要的安装 1.安装arduino开发软件

登录www.arduino.cc,在software菜单中下载Installer安装包,下载后直接下一步下一步安装即可。 注意:Install USB driver一定要勾选上,否则无法做开发。

2.安装CH340驱动

我们可以直接点击自带的CH341SER.EXE文件进行安装,也可以将arduino板子用USB线连上电脑,使用驱动精灵检测安装。

二、arduino开发软件介绍 1.面板介绍 (1)按钮 软件面板介绍-编译按钮.png 软件面板介绍-上传按钮.png (2)选项 ①板子的选择 软件介绍-板子的选择.png

Uno这款板子是最适合初学者学习的开发板。

②端口的选择 软件介绍-端口的选择.png image.png

在链接板子之后,请选择后面括号标注Arduino的端口。如果是灰色的话,可能会是驱动程序没安装好。

三、arduino硬件介绍 1、最核心的元件——微控制器 image.png

微控制周围的这些金属片,叫做引脚:

image.png

引脚是往微控制器里传信号的通道,在开发板出现以前,都需要元器件和引脚做焊接,但是开发板出现后,只要把元器件插入两边的端口上即可,如下图所示:

image.png 2、端口

端口分三组。

(1)数字输入/输出端口 image.png

这里的输入和输出都是针对板子来说的,输入和输出的都是电位为0或1的电信号。最边上的第0号和第1号端口要注意,不到万不得已不要使用,因为RX1这两个端口是象电脑传输数据用的,具体怎么传输请关注我后面的文章。

image.png (2)模拟输入端口 image.png

如果要传输非二元性的信号则会用到这个输入端口。

(2)电源端口 image.png

接地端口是用来接地的:

image.png

5V和3.3V的端口是用来提供(即接收)5伏和3.3伏的电压:

image.png image.png 四、Arduino编程介绍 1、C++语言基础

Arduino所使用的开发语言为C++,我们这里简单学习一下这种语言。 这部分内容可以参考我的领一篇文章——《C语言基础知识笔记》。传送门→ https://www.jianshu.com/p/424549d88d46

2、Arduino程序运行流程

Arduino里面有有两个主要函数,一个是setup(),另一个是loop()。 在运行时,setup()函数只运行一次,然后就开始循环运行loop()函数。

image.png 3、Blink功能函数

该功能代码如下:

void setup() { //初始化LED_BUILTIN数字引脚为输出模式 pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); //电量LED(高电平) delay(1000); //等待1秒 digitalWrite(LED_BUILTIN, LOW); //将电平设置为低来熄灭LED delay(1000); //等待1秒 }

Uno开发板上有个LED灯,这个灯被连接在引脚/端口13上,如下图所示:

image.png

我们可以看到在每个引脚/端口边都有数字和英文,这些就是他们的编号和名称:

image.png

现在这个端口13就是LED灯的电源,LED灯的开关就在板子里,我们可以通过程序来控制。Uno板子将LED_BUILTIN这个常量默认赋值为13(不同型号的板子赋值不同),所以setup()函数中,pinMode()函数就是将LED的电源初始化为13端口。 pinMode()的函数说明如下:

image.png

digitalWrite()函数,即对端口输出电流,HIGH就是有电流,LOW就是没有电流。 注意:一定要在setup()函数中初始化pinMode,否则digitalWrite无法给端口输出电平。

五、发光二极管简介 image.png

这种灯有个特性,给LED灯正向施加电流(约为20mA),其电阻约等于0,且等会发光,反向施加电流,电阻约等于无穷大,且不会发光。

image.png

刚才Blink功能的原理如下两张图所示:

image.png image.png 六、面包板 图片.png

在没有面包板的时代,都是用绕线建立电路,很容易出错。

图片.png 图片.png 图片.png 图片.png 图片.png

blink实际电路图如下:

image.png 图片.png

然后我们修改一下Blink程序:

void setup() { //初始化5引脚为输出模式 pinMode(5, OUTPUT); } void loop() { digitalWrite(5, HIGH); //电量LED(高电平) delay(1000); //等待1秒 digitalWrite(5, LOW); //将电平设置为低来熄灭LED delay(1000); //等待1秒 }

然后将其上传到arduino板子上即可看到LED的闪烁。

七、数字输入 1、pinMode()的输入模式 图片.png 2、按键开关 图片.png

图片.png 记住:相连不同侧,同侧不相连。 按下开关,电路中间的开关就相连了。 这种开和关提供给开发板的信号就是一种“0101”的数字信号。开表示1,关表示0。 图片.png

3、本节电路图 图片.png 图片.png 图片.png 图片.png 图片.png (1)上拉电阻 图片.png

这个上拉电阻的作用就是为了让开关闭合之后,阻挡住电流的通过,所以我们在选择上拉电阻的时候通常都选择10k左右的大电阻。

图片.png

没有接上拉电阻,让5V高电平直接接地,会让开发板烧坏,很危险,所以必须配上上拉电阻。

图片.png 引脚悬空的状态,引脚会随机地接收到高电平或低电平,完全不确定。当你碰一碰开发板的时候,它的接收状态就会变得非常混乱。 3、程序代码 /* DigitalReadSerial Reads a digital input on pin 2, prints the result to the serial monitor 读取引脚2的数字输入,将结果显示在串口监视器中 This example code is in the public domain. */ // digital pin 2 has a pushbutton attached to it. Give it a name: //引脚2连接有按键开关,给它一个名字: int pushButton = 2; // the setup routine runs once when you press reset: //当你按下复位按钮后,setup流程运行一次: void setup() { // initialize serial communication at 9600 bits per second: //串口通讯初始化,每秒9600位 Serial.begin(9600); // make the pushbutton's pin an input: //设置按键引脚为输入 pinMode(pushButton, INPUT); } // the loop routine runs over and over again forever: // loop 流程会永远的反复运行 void loop() { // read the input pin: //读取输入引脚: int buttonState = digitalRead(pushButton); // print out the state of the button: // 显示按键状态 Serial.println(buttonState); delay(1); // delay in between reads for stability 为确保程序稳定运行进行短暂停止 } 4、电路组装 (1)开关的安装 图片.png 图片.png 图片.png

这个开关的安装很关键,如果装错了,后面的电路都不会成功。

(2)整体电路 图片.png 5、试验

电路搭建好之后,即可把本节的程序上传到开发板中,并在如下图所示的地方打开串口监视器,查看信号值。

图片.png

使用串口监视器的时候,一定要对右下角的波特率进行设置,

图片.png 打开波特率的选项,我们会看到很多选项值, 图片.png

因为我们程序中的数据传输速率为9600,所以这里我们也必须选择9600的波特率。

八、上拉模式 1、pinMode()的输入上拉模式 图片.png

也就是说,pinMode()的输入上拉模式,会启用板子中自带的上拉电阻,无需再配外接上拉电阻。 在本示例中,我们将通过pinMode()语句将Arduino引脚2配置为输入上拉模式。在此示例中,当开关闭合后,引脚2将获得低电平开关信号,引脚13旁的LED(如下照片红圈所示)将被点亮。反之,该LED为熄灭状态。

2、实验电路图 图片.png 3、程序 /* 设置Arduino引脚 为输入上拉(INPUT_PULLUP) 模式示例程序 v1.0 Created 2016 by 太极创客 www.taichi-maker.com 说明: 本程序旨在演示如何将Arduino引脚设置为 输入上拉(INPUT_PULLUP)模式。 当按钮被按下后,引脚13旁的LED将会点亮。 获得具体连接电路图,请参阅太极创客网站。 This example code is in the public domain. */ void setup() { //将引脚2设置为输入上拉(INPUT_PULLUP)模式 pinMode(2, INPUT_PULLUP); //将引脚13设置为输出模式 pinMode(13, OUTPUT); } void loop() { // 将开关状态数值读取到变量中 int sensorVal = digitalRead(2); // 输出开关状态数值 Serial.println(sensorVal); //请留意在上拉模式下,按钮的逻辑状态是反的。 //即:开关断开时引脚读取到高电平。开关被按下后引脚读取到低电平。 //按钮被按下后,引脚13连接的LED将被点亮。按钮没有按下时,LED熄灭。 if (sensorVal == HIGH) { digitalWrite(13, LOW); } else { digitalWrite(13, HIGH); } }

这段代码也可以使用布尔方式来写,具体如下:

/* * 布尔变量应用示例 * * 本示例程序演示如何使用布尔型数据变量。通过本程序,Arduino将利用 * 布尔型变量存储引脚2的电平状态,并根据变量数值点亮或熄灭引脚13上 * 连接的LED。 * * 电路: * 引脚2连接轻触开关,开关另一端接地 * 引脚13上安装有开发板内置LED * * * This example code is in the public domain * 太极创客 * 2017-01-18 * www.taichi-maker.com */ boolean pushButton; // 创建布尔型变量 void setup() { pinMode(2, INPUT_PULLUP); //将引脚2设置为输入上拉模式 pinMode(13, OUTPUT); //将引脚13设置为输出模式 } void loop() { pushButton = digitalRead(2); //读取引脚2电平状态并将其赋值给布尔变量 if (pushButton){ //根据布尔变量数值点亮或者熄灭LED digitalWrite(13, HIGH); //布尔变量数值为真(true)时点亮LED } else { digitalWrite(13, LOW); //布尔变量数值为假(false)时熄灭LED } }

刚这段代码,原本的电平HIGH和LOW被pushButton的TRUE(1)和FALSE(0)代替了,他们的效果是相同的。

2、逻辑与和逻辑或

如果电路是由两个按键来控制,我们就需要使用逻辑与的程序控制了。 电路图如下:

image.png

黑色的两根线都接入了板子中的接地插口。 我们把代码调整一下:

/* * 逻辑与布尔运算 * * 本示例程序演示逻辑与布尔运算。通过本程序,Arduino将对引脚2和引脚8的电平状态 * 进行逻辑与布尔运算,并根据运算结果点亮或熄灭引脚13上连接的LED。 * * 电路: * 引脚2连接按键开关1,开关1另一端接地 * 引脚8连接按键开关2,开关2另一端接地 * 引脚13上安装有开发板内置LED * * * This example code is in the public domain * 太极创客 * 2017-01-18 * www.taichi-maker.com */ boolean pushButton1; // 创建布尔型变量用来存储按键开关1的电平状态 boolean pushButton2; // 创建布尔型变量用来存储按键开关2的电平状态 void setup() { pinMode(2, INPUT_PULLUP); //将引脚2设置为输入上拉模式 pinMode(8, INPUT_PULLUP); //将引脚8设置为输入上拉模式 pinMode(13, OUTPUT); //将引脚13设置为输出模式 } void loop() { pushButton1 = digitalRead(2); //读取引脚2电平状态并将其赋值给布尔变量 pushButton2 = digitalRead(8); //读取引脚8电平状态并将其赋值给布尔变量 if (!pushButton1 && !pushButton2){ //根据逻辑与运算结果点亮或者熄灭LED digitalWrite(13, HIGH); //两个布尔变量数值都为假(false)时点亮LED } else { digitalWrite(13, LOW); //否则熄灭LED } } /* 逻辑与运算说明 !pushButton1 = 1, !pushButton2 = 1 ---> !pushButton1 && !pushButton2 = 1 !pushButton1 = 0, !pushButton2 = 1 ---> !pushButton1 && !pushButton2 = 0 !pushButton1 = 1, !pushButton2 = 0 ---> !pushButton1 && !pushButton2 = 0 !pushButton1 = 0, !pushButton2 = 0 ---> !pushButton1 && !pushButton2 = 0 */

传到板子里之后,效果如下:

同时按下LED灯亮 按下左边一个按钮不亮 按下右边一个按钮不亮

试一下把代码逻辑与改成逻辑或,看看效果是什么样。

九、忙猜数字 1、电路图 image.png

实物搭建:

image.png

搭建好之后将测试程序上传上去:

/* 19 MC猜数字 - 1 电路搭建 太极创客 www.taichi-maker.com 此程序用于太极创客中 MC猜数字电路测试使用。 2017-04-21 */ void setup() { pinMode(2, INPUT_PULLUP); for (int i = 2; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3