Arduino教程:认识Arduino控制板
Arduino教程:认识Arduino控制板
万全网站制作公司哪家好,找成都创新互联公司!从网页设计、网站建设、微信开发、APP开发、自适应网站建设等网站项目制作,到程序开发,运营维护。成都创新互联公司2013年开创至今到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联公司。
1.1 课程说明
认识Arduino控制板的各个部分,
1.2 器材
名称 | 数量 | 规格 |
---|---|---|
Arduino uno控制板 | 1 | R3 |
1.3 UNO电路:
UNO参数
名称 | 参数说明 |
---|---|
工作电压: | 5V |
输入电压: | 接上USB时无须外部供电或外部7V~12V DC输入 |
输出电压: | 5V DC输出和3.3V DC输出 和外部电源输入 |
微处理器: | ATmega328 |
Bootloader: | Arduino Uno |
时钟频率: | 16 MHz |
输入电压(推荐): | 7-12V |
输入电压(限制): | 6-20V |
支持USB接口协议及供电(不需外接电源) | |
支持ISP下载功能 | |
数字I/O端口: | 14(6个PWM输出口) |
模拟输入端口: | 6 |
直流电流 I/O端口: | 40mA |
直流电流 3.3V端口: | 50mA |
Flash 内存: | 32 KB (ATmega328) (0.5 KB用于引导程序) |
SRAM : | 2 KB (ATmega328) |
EEPROM: | 1 KB (ATmega328) |
尺寸: | 75x55x15mm |
1.4 详细内容:
我们将了解Arduino板上的不同组件。将学习Arduino UNO板,因为它是Arduino板系列中最受欢迎的。此外,它是开始使用电子和编码的最佳板。有些板看起来与下面给出的有些不同,但多数Arduino中的这些组件大部分是共同的。
引脚 | 说明 |
---|---|
1.Power USB | Arduino板可以通过使用计算机上的USB线供电。你需要做的是将USB线连接到USB接口。 |
2.Barrel Jack | 电源(桶插座);Arduino板可以通过将其连接到电影插口直接从交流电源供电。 |
3.Voltage | Regulator 稳压器;稳压器的功能是控制提供给Arduino板的电压,并稳定处理器和其他元件使用的直流电压。 |
4.Crystal | Oscillator 晶体振荡器;晶振帮助Arduino处理时间问题。Arduino如何计算时间?答案是,通过使用晶体振荡器。在Arduino晶体顶部打印的数字是16.000H9H。它告诉我们,频率是16,000,000赫兹或16MHz。 |
5、17.Arduino Reset | Arduino重置;;你可以重置你的Arduino板,例如从一开始就启动你的程序。可以通过两种方式重置UNO板。首先,通过使用板上的复位按钮(17)。其次,你可以将外部复位按钮连接到标有RESET(5)的Arduino引脚。 |
6、7、8、9.Pins | 引脚(3.3,5,GND,Vin) |
- | • 3.3V(6) - 提供3.3输出电压 |
- | • 5V(7) - 提供5输出电压 |
- | • 使用3.3伏和5伏电压,与Arduino板一起使用的大多数组件可以正常工作。 |
- | • GND(8)(接地) -Arduino上有几个GND引脚,其中任何一个都可用于将电路接地。 |
- | • Vin(9) -此引脚也可用于从外部电源(如交流主电源)为Arduino板供电。 |
10.Analog pins 模拟引脚 | Arduino UNO板有六个模拟输入引脚,A0到A5。这些引脚可以从模拟传感器(如湿度传感器或温度传感器)读取信号,并将其转换为可由微处理器读取的数字值。 |
11.Main microcontroller 微控制器 | 每个Arduino板都有自己的微控制器(11)。你可以假设它作为板的大脑。Arduino上的主IC(集成电路)与板对板略有不同。微控制器通常是ATMEL公司的。在从Arduino IDE加载新程序之前,你必须知道你的板上有什么IC。此信息位于IC顶部。有关IC结构和功能的更多详细信息,请参阅数据表。 |
12.ICSP pin ICSP引脚 | 大多数情况下,ICSP(12)是一个AVR,一个由MOSI(Master Output,Slave Input),MISO(Master Input, Slave Output),SCK(Serial Clock),RESET,VCC和GND组成的Arduino的微型编程头。 它通常被称为SPI(Serial Peripheral Interface,串行外设接口),可以被认为是输出的“扩展”。实际上,你是将输出设备从属到SPI总线的主机。SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM、FLASH、实时时钟、AD转换器,还有数字信号处理器和数字信号解码器之间。SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,低位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。 |
13.Power LED indicator 电源LED指示灯 | 当你将Arduino插入电源时,此LED指示灯应亮起,表明你的电路板已正确通电。如果这个指示灯不亮,那么连接就出现了问题。 |
14.TX and RX LEDs TX和RX LED | 在你的板上,你会发现两个标签:TX(发送)和RX(接收)。它们出现在Arduino UNO板的两个地方。首先,在数字引脚0和1处,指示引脚负责串行通信。其次,TX和RX LED(13)。发送串行数据时,TX LED以不同的速度闪烁。闪烁速度取决于板所使用的波特率。RX在接收过程中闪烁。 |
15.Digital I/O 数字I/O | Arduino UNO板有14个数字I/O引脚(15)(其中6个提供PWM(脉宽调制)输出),这些引脚可配置为数字输入引脚,用于读取逻辑值(0或1);或作为数字输出引脚来驱动不同的模块,如LED,继电器等。标有“〜”的引脚可用于产生PWM。 |
16.AREF AREF | AREF代表模拟参考。它有时用于设置外部参考电压(0至5伏之间)作为模拟输入引脚的上限。 |
1.5 板载LED闪烁实验
arduino上有一个名称为L的led发光二级管,这个led其实是连接在13号引脚上的,所以我们通过控制13号引脚就能够控制此led灯闪烁。 下面我们来看程序源码
/*
作者:智芯坊
时间: 年 月 日
发表地址:
程序说明:
使一个Led亮一秒,灭一秒,如此往复。
*/
void setup() {
// 初始化数字引脚,使其为输出状态。
// 大部分Arduino控制板上,数字13号引脚都有一颗Led。
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH); // 使Led亮
delay(1000); // 持续1秒钟
digitalWrite(13, LOW); // 使Led灭
delay(1000); // 持续1秒钟。
}
程序说明
- 首先打开Arduino IDE,我们把代码输入。
- 然后选择控制板型号,本次实验使用的是arduino兼容控制板,选择为arduino uno即可。
- 然后选择端口号,本次实验为COM7端口,一般为列表最后一个。
- 然后点击编译,编译完成后,会在左下方提示。编程成功后,就可以点击下载了。下载完成后,也会在左下方提示。
Ps:
- 所有Arduino程序都是由参数设置(setup)和循环(loop)两个函数组成,函数名后面一定跟着小括号;大括号({})用于界定程序区块的范围
- 若要指挥Arduino控制某个数字引脚的元器件,必须先把引脚设置成“输出(output)”模式,若是要接收来自传感器的输入值,则要把该引脚设置成“输入(input)”模式。Arduino的每个数字和模拟引脚都能输出“高电位”和低电位信号
- 注释(comment):是程序中的说明文字,语法: //: 放在说明文字的前方;单行注释 / …… /:多行注释。
1.6 补充阅读相关知识:
1.6.1 模拟引脚
本文是对于Arduino芯片上模拟引脚的介绍。上面所说的Arduino芯片主要包括(Atmega8, Atmega168,Atmega328或Atmega1280)。
- 数模转换电路 Arduino中使用的Atmega控制器都配有一个板载6通道数模转换器,这个转换器的精度为10bit,能够返回0-1023的整数。尽管模拟引脚的主要功能是读取模拟信号,但是实际上和0-13号数字引脚一样,模拟引脚也可以进行INPUT、OUTPUT操作(GPIO)。因此,如果你在做项目时需要更多的数字引脚,那么模拟引脚也可用作GPIO操作。
- 引脚编号 A0、A1、A2、A3……就是模拟引脚的编号。你可以用这个编号让模拟引脚输出高电平或低电平。下面的例子会将A0口设置为输出模式,并且输出高电平:
pinMode(A0, OUTPUT);
digitalWrite(A0, HIGH);
- 上拉电阻 模拟引脚也有和数字引脚一样的内置上拉电阻。通过下列代码激活模拟引脚内部的上拉电阻。 digitalWrite(A0, HIGH); // 将上拉电阻激活。(这与普通的输入引脚有点区别) 但是激活了上拉电阻后,再用analogRead()的话,读出的值会受到影响。
- 一些额外需注意的细节 如果一个引脚已经被设置成为OUTPUT模式,analogRead函数就不能够正常工作。因此,如果要将模拟引脚当做数字引脚并且设置了OUTPUT模式,请在调用analogRead前将这个模拟引脚重新定义为INPUT模式。 如上所述,如果你将模拟引脚定为输出模式并且输出了HIGH,那么它内部的上拉电阻就会被激活。如果这时候再转为INPUT,那么上拉电阻将依然工作着。(因此,你需要先设置为LOW,再转换为INPUT,才能够获得正确结果。) 从Atmega的数据手册中,我们可以知道:如果要在模拟引脚上进行快速的电平切换,会导致电子噪声。这会给模电转换模块带来“抖动”,从而影响到其他引脚上的模拟信号值读取。因此,你需要在将模拟引脚进行电平操作切换后使用后用delay函数进行一小段时间的延迟,然后再使用analogRead()去读取其他引脚上的模拟信号。
1.6.2. 数字引脚
Arduino上的引脚可以被设置为输入模式(INPUT)或输出模式(OUTPUT)。甚至很多Arduino (Atmega单片机)上的模拟引脚也可以被当做数字引脚使用。本篇文章将介绍引脚在两种不同模式(INPUT和OUTPUT)下的功能。
- INPUT模式 Arduino (Atmega) 引脚默认是输入模式(INPUT)因此在程序中一般你不需要特别指定为INPUT模式。处在INPUT模式的引脚将处于高阻抗状态(high-impedance)(相当于引脚串接了一个100兆欧的电阻),因而它对于电路几乎没有任何影响。数字引脚可以被用来读取触碰开关、把LED当做以光电二极管读取,或者使用RCTime来读取模拟信号传感器。 然而,使用pinMode(pin, INPUT)配置的引脚在没连接到任何电路上时(处于悬空状态),从引脚读出的结果可能会“乱跳”。这是因为引脚收到了电子噪声的干扰,或者由于电容耦合读取了附近引脚的值。
- INPUT模式引脚的上拉电阻 一般来说,我们希望在输入引脚悬空时保持一个稳定的状态。这可以通过加一个上拉电阻(上拉到+5V)或加一个下拉电阻(下拉到GND)来实现。上拉电阻或下拉电阻一般选用10kΩ电阻比较合适。
- 使用INPUT_PULLUP对输入引脚进行配置 在Atmega芯片中每个输入引脚都对应着一个20kΩ的上拉电阻,你可以通过代码去使这些内置上拉电阻发挥作用(只需在pinMode函数中传入INPUT_PULLUP函数作为参数即可) 。使用上拉电阻会“反转”读取结果,当读取到HIGH的时候说明引脚上为低电压,当读取到LOW时说明引脚上是高电压。 不同微控制器内置上拉电阻的阻值大小也不尽相同。在大多数AVR板中,上拉电阻用的是20kΩ到50kΩ。而在Arduino Due中,上拉电阻用的是50kΩ到150kΩ。如果你想知道你板子上内置上拉电阻的确切阻值,请参阅微控制器的数据手册。 当传感器连接到用INPUT_PULLUP常量配置的引脚时,传感器的另一端应该被连接到GND。假如你将一个开关连接到这个引脚上,当开关断开时将会读到HIGH,闭合时读到LOW。 上拉电阻的电流足够让LED微微亮起,所以如果你发现在自己的项目中,LED虽然在工作,但是亮度很微弱,一般就说明你将引脚错误地设置为了INPUT模式。 在单片机内部,上拉电阻是用一个寄存器(单片机的一块记忆区域)控制的,这个寄存器又同时控制引脚是高电平(HIGH)还是低电(LOW)。基于这个原因,如果你将一个INPUT_PULLUP的输入引脚重新配置成OUTPUT的话,它会立即输出高电平。相反,如果你将一个正在输出高电平的OUTPUT引脚重新配置为INTPUT,它会自动将上拉电阻打开。 在Arduino 1.0.1之前可以用以下代码配置内部上拉电阻:
pinMode(pin, INPUT); // 将引脚设置为INPUT模式
digitalWrite(pin, HIGH); // 打开引脚的上拉电阻
而目前应该这样写
pinMode(pin,INPUT_PULLUP);
特别提示: 13号引脚相比其他引脚来说不适宜配置为INPUT模式,因为在绝大多数板上,它连着一个板载LED。如果你激活13号引脚上的上拉电阻,它只能拉到1.7V而非你所期望的5V,因为LED分走了电压。而由于一直不满5V,从13号引脚上读出的结果总是LOW。如果你非要将13号引脚设置为INPUT模式,请外加一个下拉电阻。 4. OUTPUT模式 OUTPUT模式的引脚在工作时是低阻抗的,也就是说OUTPUT模式的引脚能够给外部电路提供可靠的电流支持。Atmega引脚最高可以为外部设备提供40mA的电流。这个电流完全足够点亮LED(别忘记串接电阻,否则甚至会烧掉你的LED)或者驱动绝大多数传感器。不过别指望用它去直接驱动大多数继电器、螺线管或者电机。 让Arduino的引脚短路,或者让大电流通过都可能会损坏内部晶体管或损坏Atmega芯片。如果第一种情况发生,你会发现虽然Arduino貌似工作正常,但是那个损坏的引脚已经无法工作了。因此,最好在外围串接470Ω到1kΩ的电阻,来确保外电路总电流小于等于40mA,除非如果你的电路确实需要比较高的电流,否则就最好进行限流。
1.7 wiki:
- void: 只用在函数声明中。它表示该函数将不会被返回任何数据到它被调用的函数中。
- setup():当Arduino板起动时setup()函数会被调用。用它来初始化变量,引脚模式,开始使用某个库,等等。该函数在Arduino板的每次上电和复位时只运行一次。
- loop():可以用它来实时控制arduino板。
- pinMode(): void pinMode (uint8_t pin, uint8_t mode) 设置引脚模式 配置引脚为输出或输出模式。 参数: pin 引脚编号 mode: INPUT, OUTPUT, 或 INPUT_PULLUP。 例子:
- pinMode(ledPin, OUTPUT); // sets the digital pin as output 注解: 模拟引脚也可以当作数字引脚使用, 编号为14(对应模拟引脚0)到19(对应模拟引脚5). digitalWrite() void digitalWrite (uint8_t pin, uint8_t value) 写数字引脚 写数字引脚, 对应引脚的高低电平. 在写引脚之前, 需要将引脚设置为OUTPUT模式. 参数: pin 引脚编号 value HIGH 或 LOW 用法:
- digitalWrite(ledPin, HIGH); // 点亮LED 注解: 模拟引脚也可以当作数字引脚使用, 编号为14(对应模拟引脚0)到19(对应模拟引脚5). delay(ms) void delay (unsigned long ms)
延时(毫秒) 延时, 单位毫秒(1秒有1000毫秒). 警告: 参数为unsigned long, 因此在延时参数超过32767(int型最大值)时, 需要用"UL"后缀表示为无符号 长整型, 例如: delay(60000UL);. 同样在参数表达式, 切表达式中有int类型时, 需要强制转换为 unsigned long类型, 例如: - delay((unsigned long)tdelay * 100UL);
分享题目:Arduino教程:认识Arduino控制板
文章分享:http://pwwzsj.com/article/jeshgj.html