1.Arduino是什么
开始讲之前跟大家普及一个知识点,Arduino是一个意大利品牌。Arduino是一个开放源码电子原型平台,拥有灵活、易用的硬件(各种开发板)和软件(arduino IDE也就是编程器)。吉安优创电子科技有限公司作为arduino国内为数不多的正版授权公司,坚持正版。打击抵制各类盗版,改版,兼容版的侵权行为,也奉劝广大消费者不要去购买,以免带来不必要的麻烦。Arduino专为设计师,工艺美术人员,业余爱好者,以及对开发互动装置或互动式开发环境感兴趣的人而设的。
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器 对Arduino的编程是利用 Arduino编程语言 (基于 Wiring)和Arduino开发环境(based on Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。
Arduino UNO 是 Arduino 入门的最佳选择,在编著本书时,其最新的版本为 UNO R3,本书大部分内容都是基于Arduino UNO R3写成的。Arduino UNO的详细组成信息如下图所示。
1. 电源(Power)
Arduino UNO有三种供电方式:
● 通过USB接口供电,电压为5V;
● 通过DC电源输入接口供电,电压要求7~12V;
● 通过电源接口处5V或者VIN端口供电,5V端口处供电必须为5V,VIN端口处供电为7~12V。
2.指示灯(LED)
Arduino UNO带有4个LED指示灯,作用分别是:
● ON,电源指示灯。当Arduino通电时,ON灯会点亮。
● TX,串口发送指示灯。当使用USB连接到计算机且Arduino向计算机传输数据时,TX灯会点亮。
● RX,串口接收指示灯。当使用USB连接到计算机且Arduino接收计算机传来的数据时,RX灯会点亮。
● L,可编程控制指示灯。该LED通过特殊电路连接到Arduino的13号引脚,当13号引脚为高电平或高阻态时,该LED会点亮;当为低电平时,不会点亮。因此可以通过程序或者外部输入信号来控制该LED的亮灭。
3.复位按键(Reset Button)
按下该按键可以使Arduino重新启动,从头开始运行程序。
4.存储空间(Memory)
Arduino的存储空间即是其主控芯片所集成的存储空间。也可以通过使用外设芯片的方式来扩展Arduino的存储空间。Arduino UNO的存储空间分三种:
● Flash,容量为32KB。其中0.5KB作为BOOT区用于储存引导程序,实现通过串口下载程序的功能;另外的31.5KB作为用户储存的空间。相对于现在动辄几百 GB的硬盘,可能觉得32KB太小了,但是在单片机上,32KB已经可以存储很大的程序了。
● SRAM,容量为2KB。SRAM相当于计算机的内存,当CPU进行运算时,需要在其中开辟一定的存储空间。当Arduino断电或复位后,其中的数据都会丢失。
● EEPROM,容量为1KB。EEPROM的全称为电可擦写的可编程只读存储器,是一种用户可更改的只读存储器,其特点是在Arduino断电或复位后,其中的数据不会丢失。
5.输入/输出端口(Input/Output Port)
如图1-20所示,Arduino UNO有14个数字输入/输出端口,6个模拟输入端口。其中一些带有特殊功能,这些端口如下:
● UART通信,为0(RX)和1(TX)引脚,被用于接收和发送串口数据。这两个引脚通过连接到ATmega16U2来与计算机进行串口通信。
● 外部中断,为2和3引脚,可以输入外部中断信号。
● PWM输出,为3、5、6、9、10和11引脚,可用于输出PWM波。
● SPI通信,为10(SS)、11(MOSI)、12(MISO)和13(SCK)引脚,可用于SPI通信。
● TWI通信,为A4(SDA)、A5(SCL)引脚和TWI接口,可用于TWI通信,兼容IIC通信。
● AREF,模拟输入参考电压的输入端口。
● Reset,复位端口。接低电平会使Arduino复位。当复位键被按下时,会使该端口接到低电平,从而使Arduino复位。
● GND 电源负极。
在开始使用 Arduino 之前,需要在电脑上安装 Arduino 的集成开发环境(此后简称IDE)。建议下载最新 zip 解压即可使用,大约 185M大小。
解压好官方的 IDE 以后打开文件夹找到 Arduino IDE.exe,将其右键发送到桌面快捷方式。电脑桌面或出现这个图标,以后编写代码都是打开这个图标进行的哦。双击桌面的软件图标,进入 Arduino IDE 之后。如下图所示
在工具栏上找到 file(文件)-> Preference(首选项)->Language(语言)选为简体中文,并勾选 Show verbose output during compile or upload(在编译或上传期间显示详细输出)。
把开发板接上电脑,一定要带数据传输功能的USB接口哦。这个时候系统会自动安装驱动文件的,在电脑的右下角会有一个安装驱动的提示。大概几秒钟不到就会安装好的。安装好后在电脑的设备管理器页面会出现下图所示:
先来练习一个不需要其他辅助元件,只需要一块Arduino 和一根下载线的简单实验,让我们的Arduino 说出“Hello World!”,这是一个让Arduino和PC 机通信的实验,这也是一个入门试验,希望可以带领大家进入Arduino 的世界。
int val; //定义变量val
int ledpin = 13; //定义数字接口13
void setup() {
Serial.begin(9600); //设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。
pinMode(ledpin, OUTPUT); //设置数字13 口为输出接口,Arduino 上我们用到的I/O 口都要进行类似这样的定义。
}
void loop() {
val = Serial.read(); //读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val
if (val == 'R') { //判断接收到的指令或字符是否是“R”。
digitalWrite(ledpin, HIGH); //点亮数字13 口LED。
delay(500);
digitalWrite(ledpin, LOW); //熄灭数字13 口LED
delay(500);
Serial.println("Hello World!"); //显示“Hello World!”字符串
}
}
依次点击验证,上传会看到板子在接收程序时 RX 灯会闪一下。
打开串口监视器,在串口监视器内输入“R” 开发板上的 13 号 LED 灯会闪一下; 串口监视器会收到来自 Arduino 的信息 Hello World
程序扩展
上面我们已经学会用串口发送指令让板载的LED灯亮,这里我们也可以用相同的方法控制LED灯灭。
int val; //定义变量val
int ledpin = 13; //定义数字接口13
void setup() {
Serial.begin(9600); //设置波特率为9600,这里要跟软件设置相一致。当接入特定设备(如:蓝牙)时,我们也要跟其他设备的波特率达到一致。
pinMode(ledpin, OUTPUT); //设置数字13 口为输出接口,Arduino 上我们用到的I/O 口都要进行类似这样的定义。
}
void loop() {
val = Serial.read(); //读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val
if (val == 'R') { //判断接收到的指令或字符是否是“R”。如果接收到的是“R”字符
digitalWrite(ledpin, HIGH); //点亮数字13 口LED。
Serial.println("Hello World!"); //显示“Hello World!”字符串
} else if (val == 'G') { //读取PC 机发送给Arduino 的指令或字符,并将该指令或字符赋给val
digitalWrite(ledpin, LOW); //熄灭数字13 口LED
Serial.println("Bye World!"); //显示“ World!”字符串
}
}
在串口监视器内输入“R”
开发板上的13号LED灯常亮;
串口监视器会收到来自Arduino的信息Hello World
在串口监视器内输入“G”
开发板上的13号LED灯常灭;
串口监视器会收到来自Arduino的信息Bye World
2.LED灯闪烁实验
面包板是实验重用于搭接电路的重要工具,熟练掌握面包板的使用方法是提高实现效率,减少实验故障的几率的重要基础之一。面包板可以分为 Mine、400 孔和 860 孔的面包板,下面就面包板的结构和使用方法做简单的介绍。
电源区上下两行之间电气不连通,分别用来接 VCC 和 GND,每 5 个插孔为一组(通常称为“孤岛”),通常面包板上有 10 组。这 10 组“孤岛”一般有 3 种内部结构,这种①左边 5 组内部电气 连通,右边 5 组内部电气连通,但左右两边之间不连通,这种结构通常称为 5-5 结构。②左边 3 组内 部电气连通,中间 4 组内部电气连通,右边 3 组内部电气连通,但左边 3 组、中间 4 组以及右边 3 组之间是 d 不连通的,这种结构通常称为 3-4-3 结构。③还有一种结构是 10 组“孤岛”都连通,这种结构最简单。
中原器件区是由中间一条隔离凹槽和上下各 5 行的插针构成,在同一列中的 5 个插针是相互连通的,列和列之间以及凹槽上下两部分则是不连通的。
led灯:发光二极管(Light Emitting Diode),简称LED发光二极管在电路中用文字符号VD表示,其图形符号如图所示。
发光二极管正负极容易区分。长引脚为正极,短引脚为负极。引脚相同的情况下,LED管体内极小的金属为正极,大块的为负极。贴片式发光二极管,一般都有一个小凸点区分正负极,有特殊标记为负极,无特殊标记为正极。
发光二极管简称为LED。由含镓(Ga)、砷(As)、磷(P)、氮(N)等的化合物制成。
当电子与空穴复合时能辐射出可见光,因而可以用来制成发光二极管。在电路及仪器中作为指示灯,或者组成文字或数字显示。砷化镓二极管发红光,磷化镓二极管发绿光,碳化硅二极管发黄光,氮化镓二极管发蓝光。
普通发光二极管的工作电压一般为2~2.5V,在电路中使用时一般串联一个220Ω~1k的电阻。
电阻主要职能就是阻碍电流流过,应用于限流、分流、降压、分压、负载与电容配合作滤波器及阻匹配等.数字电路中功能有上拉电阻和下拉电阻。在物理学中,用电阻(resistance)来表示导体对电流阻碍作用的大小。导体的电阻越大,表示导体对电流的阻碍作用越大。不同的导体,电阻一般不同,电阻是导体本身的一种性质.电阻元件是对电流呈现阻碍作用的耗能元件。
电阻的单位是欧姆(ohm),简称欧,符号是Ω(希腊字母,音译成拼音读作 ōu mì gǎ ),1Ω=1V/A。比较大的单位有千欧(kΩ)、兆欧(MΩ)(兆=百万,即100万)。
实验器件: ■ Led 灯:1 个 ■ 220 欧的电阻:1 个 ■ 多彩面包板和实验跳绳:若干
1.将发光二极管插入面包板
2.用杜邦线将发光二极管的短脚连接到开发板的GND接口
3.将电阻的一端连接到发光二极管的长脚
4.将电阻的另外一端用杜邦线连接到10引脚
将代码上传到开发板。
int LED = 10; //定义数字接口10,对应
void setup() {//循环前执行
pinMode(LED, OUTPUT); //设置数字10 口为输出接口,Arduino 上我们用到的I/O 口都要进行类似这样的定义。
}
void loop() { //循环执行体
digitalWrite(LED, HIGH); //IO 口10 设置为高电平,点亮数字10 口LED
delay(500); //延时500MS
digitalWrite(LED, LOW); //IO 口10 设置为低电平,熄灭数字10 口LED
delay(500); //延时500MS
}
最终 led 灯闪烁,通过控制 delay 的参数控制闪烁的频率。
程序拓展
前面我们已经点亮LED灯了,这里我们可以发挥一下想象力,例如我们做个呼吸灯要怎样实现代码呢?
void setup() {
pinMode(10, OUTPUT); //设置数字10 口为输出接口,Arduino 上我们用到的I / O 口都要进行类 似这样的定义。
}
void loop() {
for (int a = 0; a <= 255; a++) { //循环语句,控制PWM亮度的增加
analogWrite(10, a);
delay(8); //当前亮度级别维持的时间,单位毫秒
}
for (int a = 255; a >= 0; a--) { //循环语句,控制PWM亮度减小
analogWrite(10, a);
delay(8); //当前亮度的维持的时间,单位毫秒
}
delay(800); //完成一个循环后等待的时间,单位毫秒
}
LED渐亮,然后再渐灭,模仿呼吸状态。
3.LED流水灯实验
电流、电压和电阻之间的关系可以通过欧姆定律来描述。欧姆定律的公式为:
V=I×R
其中:
- V是电压(单位:伏特,V)
- I是电流(单位:安培,A)
- R是电阻(单位:欧姆,Ω)
根据这个公式,我们可以得出以下几点:
-
电压与电流的关系:在电阻R固定的情况下,电压V和电流I成正比。也就是说,电压越高,电流也会随之增加,反之亦然。
-
电流与电阻的关系:在电压V固定的情况下,电流II和电阻R成反比。也就是说,电阻越大,电流越小,反之亦然。
-
电压与电阻的关系:在电流I固定的情况下,电压V和电阻R成正比。
电阻器通常分为三类:固定电阻器、可调电阻器及特殊电阻器。