Arduino入门必备基础知识(基础认证考前总结) |
您所在的位置:网站首页 › 广告口号和广告标题之间有什么不同 › Arduino入门必备基础知识(基础认证考前总结) |
最近开始准备考取Arduino的官方认证,但之前没有系统地学习,因此打算好好整理一下,一方面当作考试复习,另一方面给想学习Arduino的朋友们一些帮助 在学习之前,建议大家先在Arduino中文社区看一下使用教程,里面有很多答疑帖,还有很多干货,值得一看: https://www.arduino.cn/thread-1066-1-1.html 本篇文章将分为5大部分,如下所示: 编程语法Arduino IDEArduino开发板电子元器件ARDUINO基础认证演示题Arduino使用C/C++编写程序,虽然C++兼容C语言,但这是两种语言: C语言 是一种面向过程的编程语言C++ 是一种面向对象的编程语言早期的Arduino核心库使用C语言编写,后来引进了面向对象的思想,目前最新的Arduino核心库采用C与C++混合编写而成 通常我们说的Arduino语言,是指Arduino核心库文件提供的各种应用程序编程接口(Application Programming Interface,简称API)的集合。这些API是对更底层的单片机支持库进行二次封装所形成的。例如,使用AVR单片机的Arduino的核心库是对AVR-Libc(基于GCC的AVR支持库)的二次封装。 2. Arduino程序基本结构按照图示方法即可新建一个Arduino程序的文件: 如果你使用过C/C++语言,你会发现Arduino的程序结构与传统的C/C++结构的不同之处就在于Arduino程序中没有main函数 准确说,其实并不是Arduino没有main函数,而是main函数的定义隐藏在了Arduino的核心库文件中。Arduino开发一般不直接操作main函数,而是使用Setup和loop这个两个函数 换句话说,Arduino程序基本结构由setup() 和loop() 两个函数组成 setup()Arduino控制器通电或复位后,即会开始执行setup() 函数中的程序,该部分只会执行一次,相当于JAVA中的构造方法。 通常我们会在setup() 函数中完成Arduino的初始化设置,如配置I/O口状态,初始化串口等操作。 loop()在setup() 函数中的程序执行完后,Arduino会接着执行loop() 函数中的程序。而loop()函数是一个死循环,其中的程序会不断的重复运行。 通常我们会在loop() 函数中完成程序的主要功能,如驱动各种模块,采集数据等。 3. Arduino中的Hello World按照图示方法打开Blink程序: 在Arduino中,平时的Hello World叫做Blink,能用来判断开发环境是否可用,程序的效果是使开发板上13号引脚的LED灯反复点亮又熄灭 需要注意的是,新版IDE自带例程使用的是宏LED_BUILTIN,在大部分arduino开发板上,这个宏定义对应的是13号引脚: #define LED_BUILTIN 13以上是基本的语法,但要真正地上手Arduino,还需要学会使用Arduino的编辑器 Arduino IDE下面是Arduino中文社区给的IDE下载方法 https://www.arduino.cn/thread-5838-1-1.html 1. 配置Arduino IDE下面我用Arduino UNO开发板举例(某宝买的,十几块就能买到): 如果你要添加特殊型号的Arduino控制板,可以进入Boards Manager: 库管理器也在Tools里: 以Blink程序为例,程序写好后,点击第二行第一个图标: 等待一会后,出现这样就算成功上传了: Arduino上每一个带有数字编号的引脚,都是数字引脚,包括写有“A”编号的模拟输入引脚。使用这些引脚,可以完成输入输出数字信号的功能。 在使用输入或输出功能前,需要先通过pinMode() 函数配置引脚的模式为输入模式或输出模式: pinMode(pin, mode); pin为指定配置的引脚编号mode为指定的配置模式可使用的三种模式: INPUT 输入模式OUTPUT 输出模式INPUT_PULLUP 输入上拉模式Blink程序中使用到的pinMode(LED_BUILTIN, OUTPUT): 即是把LED_BUILTIN(13号)引脚配置为输出模式 配置成输出模式后,还需要使用digitalWrite() 让其输出高电平或者是低电平。其调用形式为: digitalWrite(pin, value); 参数pin为指定输出的引脚编号参数value为要指定输出的电平,使用HIGH指定输出高电平,或是使用LOW指定输出低电平。 2. 模拟I/O的使用在Arduino控制器中,编号前带有“A”的引脚是模拟输入引脚。Arduino可以读取这些引脚上输入的模拟值,即读取引脚上输入的电压大小 生活中接触到的大多数信号都是模拟信号,如声音、温度的变化等。模拟信号是用连续变化的物理量表示的信息,信号随时间作连续变化。在Arduino UNO上,可以接受0~5V的模拟信号 模拟输入引脚是带有ADC(Analog-to-Digital Converter,模数转换器)功能的引脚。它可以将外部输入的模拟信号转换为芯片运算时可以识别的数字信号,从而实现读入模拟值的功能 Arduino 模拟输入功能有10位精度,即可以将0~5V的电压信号转换为0~1023的整数形式表示,模拟输入功能需要使用analogRead() 函数: int value = analogRead(pin) 参数pin是指定要读取模拟值的引脚,被指定的引脚必须是模拟输入引脚。如analogRead(A0)即是读取A0引脚上的模拟值。与模拟输入功能对应的是模拟输出功能,我们使用analogWrite() 函数实现这个功能。但该函数并不是输出真正意义上的模拟值,而是以一种特殊的方式来达到输出近似模拟值的效果,这种方式叫做脉冲宽度调制(PWM,Pulse Width Modulation): analogWrite(pin,value) 参数pin是指定要输出PWM波的引脚参数value指定是PWM的脉冲宽度,范围为0~255。在Arduino UNO中,提供PWM功能的引脚为3、5、6、9、10、11。 当使用analogWrite() 函数时,指定引脚会通过高低电平的不断转换输出一个周期固定的方波,通过改变高低电平在每个周期中所占的比例(占空比),而得到近似输出不同的电压的效果。 需要注意的是,这里仅仅是得到了近似模拟值输出的效果,如果要输出真正的模拟值,还需要加上外围滤波电路。 在analogWrite() 和analogRead() 函数内部,已经完成了引脚的初始化,因此不用在Setup() 函数中进行初始化操作 3. 串口的使用Arduino与计算机通信最常用的方式就是串口通信 我们使用USB线连接Arduino Uno与计算机时,Arduino Uno会在计算机上虚拟出一个串口设备,此时两者之间便建立了串口连接。通过此连接,Arduino Uno便可与计算机互传数据。 使用串口与计算机通信,需要先使用Serial.begin() 初始化Arduino的串口通信功能: Serial.begin(speed); 参数speed是指串口通信波特率,这是设定串口通信速率的参数。串口通信的双方必须使用同样的波特率,方能正常进行通信。波特率是一个衡量通信速度的参数。它表示每秒钟传送的bit的个数。例如9600波特表示每秒发送9600bit的数据。通信双方需要使用一致的的波特率才能正常通信。Arduino串口通信通常会使用以下波特率: 300、600、1200、2400、4800、9600、14400、19200、28800、38400、57600、115200。 波特率越大,说明串口通信的速率越快。 3.1串口输出串口初始化完成后,我们便可以使用Serial.print() 或Serial.println() 向计算机发送信息了: Serial.println(val);在Blink程序的loop里加入: Serial.println("Hellow World");上传程序后打开串口监视器: 除了输出,串口同样可以接收由计算机输出的数据。接收串口数据需要使用Serial.read()函数: Serial.read();调用该语句,每次都会返回一个字节的数据,这个返回值便是当前串口读取到的数据 在Blink程序的loop里添加如下语句: char ch=Serial.read(); Serial.println(ch);上传程序并打开串口监视器: 在使用串口时,Arduino Uno会在SRAM中开辟一段大小为256 bytes的空间,串口接收到的数据都会被暂时存放进这个空间中,这个存储空间,我们称之为缓冲区。当你调用Serial.read()语句时,Arduino便会从缓冲区取出一个字节的数据 因此使用串口读取数据时,需要搭配Serial.available() 语句使用: Serial.available(); Serial.available() 的返回值便是当前缓冲区中接收到的数据字节数Serial.available() 可以搭配if 或者while使用,先检测缓冲区中是否有可读数据,如果有数据,再读取,没有数据便跳过读取或等待读取: void loop() { if(Serial.available()>0){ char ch=Serial.read(); Serial.print(ch); } }程序上传后,便没有乱码了: 另外,当串口通信时,Arduino控制器上的标有RX、TX的两LED灯会闪烁提示: 接收数据时,RX灯会点亮发送数据时,TX灯会点亮在涉及串口通信的Arduino Uno例程程序中,还会经常看到如下特殊用法: while (!Serial) {}这是在等待串口监视器开启,开启串口监视器后,!Serial将为假,即会运行该while循环后的语句 利用串口通信功能,我们可以使用计算机来控制Arduino执行特定的操作 电子元器件在学习Arduino的过程中,会使用到许多电子元件及模块。通过搭配不同的元件和模块,我们便可以制作出许多的作品 另外,同样的元件、模块,可能会有不同的型号、不同的封装形式(即不同的外观),但一般情况下原理和使用方法都是相同的 1. 面包板面包板是专为我们进行各种电子实验所设计的工具。我们可以根据自己的想法在上面搭建各种电路。众多电子元器件都可根据需要,随意插入或拔出,免去了焊接,节省了电路的组装时间。同时,免焊接使得元件都可以重复使用,避免了浪费和多次购买元件: 电阻即对电流起阻碍作用的元件 一般LED的最大能承受的电流为25mA,如若直接将LED连接到电路中,当其点亮时,如果电流过大,很容易烧毁。 我们在LED一端串联了一个电阻,这样做可以控制流过LED的电流,防止损坏LED。这个电阻我们称之为限流电阻: 在开发板的2号引脚到GND之前,连接了一个电阻: 添加这个电阻到地就是为了稳定引脚的电平,当引脚悬空时,就会识别为低电平。这种将某节点通过电阻接地的做法,叫做下拉,这个电阻叫做下拉电阻。 2.3上拉电阻同下拉电阻一样,可以稳定I/O口电平,不同的是电阻连接到VCC,将引脚稳定在高电位。这种电阻叫做上拉电阻 3. 电容电容可以理解为存储电能的容器,下图都是电容: 二极管在电路中使用广泛,作用众多,如整流、稳压、电路保护等: LED即发光二极管,可以发光的二极管: 广泛应用于信号指示、照明等领域 5. 三极管三极管是能起放大、开关等作用的元件: 内部构造有三级: 发射极(emitter,E)基极(base,B)集电极(collector,C) 6. 传感器传感器是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。 通常根据其基本感知功能分为热敏元件、光敏元件、气敏元件、力敏元件、磁敏元件、湿敏元件、声敏元件、放射线敏感元件、色敏元件和味敏元件等十大类 下图分别是seeed的光敏元件和热敏元件: 执行器是自动控制系统中必不可少的一个重要组成部分。它的作用是接受控制器送来的控制信号,改变被控介质的大小,从而将被控变量维持在所要求的数值上或一定的范围内 下图分别是seeed的蜂鸣器和红外发射器:
因此这题选右下角的:
1跟high是等价的 ,因此按下开关1时,条件成立,灯亮
|
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |