Arduino基础知识,写在Arduino的创作活动之前

在Arduino实验中,创客行实验室只选用Arduino Nano作为开发板,文档【1】介绍过它的相关参数,在本文中,创客行将更详细的跟大家探讨这些参数背后的意义。

Arduino开发环境

在首次进行Arduino实验之前,先介绍一下它的开发环境。Arduino作为一种成熟的开源硬件,它提供了集成开发工具Arduino IDE。

Arduino IDE图1 Arduino IDE

Arduino IDE的最新版本请到它的官方网站https://www.arduino.cc下载,并根据提示安装。

Arduino开发环境图2 Arduino开发环境

Arduino IDE安装好后,如图2所示。动手试一试,不需要太多的说明就可以搞清楚它的使用方法。其中在“工具”菜单中需要选择当前操作的开发板和串口端口,它非常智能,能够感知到连接在电脑USB接口上的开发板类型和端口编号,我们一般只需要确认即可。如果在电脑上连接了多个开发板,则需要注意选择当前需要操作的那个。

为什么选用Arduino NANO

图3 Arduino Nano七彩灯实验

图3是使用Arduino Nano开发板在面包板上连接搭建的实验电路,相比其它的Arduino板卡来说,它更适合做面包板验证实验,同样也能够方便的自己焊接到实验板上,组成有用的电子产品。

将控制程序烧录到Arduino Nano的方法是,如图3那样,使用USB线将开发板输出接口和电脑相连接,在Arduino IDE上选择对应的USB串口,就可以对它进行编程操作了。

Arduino参数解读

基本参数:

类别:集成电路 (IC)
核心处理器:AVR
闪存容量:32KB
EEPROM存储器容量:1KB
时钟频率:20MHz
接口类型:I2C, SPI, USART
电源电压最小:1.8V 最大:5.5V
电源电压表面安装器件:表面安装
封装类型:TQFP
针脚数:32
工作温度范围:-40°C to +85°C
存储器容量, RAM:2KB
输入/输出线数:23
模数转换器输入数:8
速度:20MHz
程序存储器容量:32KB (32K x 8)
振荡器型:内部
包装:托盘

主要功能:

高性能、低功耗AVR 8位微控制器
先进的RISC体系结构
高耐力非易失性内存段
微控制器的特殊功能
上电复位和可编程布朗出检测
内部校准的振荡器
外部和内部中断源
六个睡眠模式:空闲,ADC降噪、电源保存、关闭、待机状态,和待机扩展
  • 闪存和EEPROM

在Arduino参数提到两种不同的存储设备,分别是闪存和EEPROM,它们都能够在掉电时保持数据。闪存跟U盘里的存储芯片是一样的,在这里用于存储Arduino芯片的操作程序,EEPROM则被用于储存用户数据,这些数据往往在程序运行中产生,希望掉电后还保留,例如用户对于芯片启动时间的设置等。闪存里的程序在运行过程中不能改变,而EEPROM里的数据就是通过程序运行来改变的。

  • RAM:2KB

RAM是内存,它在掉电时会失去记忆,用于存储程序产生的临时性数据。

  • 时钟频率:20MHz

单片机或其它电路CPU都是工作在时序状态,它们把运算器的运行时间分成固定刻度的时隙,然后通过分配这些时隙资源给不同的任务,让各任务能够有序的执行。相对于PC的CPU来说,Arduino十分弱小,它只是单核单(物理)线程的处理器,适合于处理普通实时控制任务,所以类似的处理器也被称为MCU(Microcontroller Unit,微控制单元)。

  • 并行和串行

当前,在使用数字电子信号中,普遍采用二进制信号来表示信息,英文采用的是ASC II编码,每个符号用八位二进制来表示。比如说符号“1”,它的二进制编号是00110001,由八个高低电平来组成。

接口类型:I2C, SPI, USART,这些都是串行接口,它们把数据组成一串电信号,从一根连接线上发送,这样就必须遵循相应的传输规则,以上的三种接口类型就是不同的串口传输协议,我们会在后面相关的作品制作中分别详细讲解;相对于串口来说,还存在并口传输方式,Arduino Nano的 D2 – D13是普通的GPIO接口,假如把它们中的8个组成一组,就可以一次性传输一个ASC II编码数据,这个会用于简单、短程而且高速的数据信号传输场合。

Arduino程序示例

void setup() {
 // put your setup code here, to run once:
}
void loop() {
 // put your main code here, to run repeatedly:
}

在Arduino IDE里新建一个项目,会出现如上代码模板。Arduino编程是基于普通C语言,并在其上进行了封装,所以我们找不到main()函数,以上两个函数就是程序入口。

  • setup()函数提供变量初始化的地方,它的执行是一次性的,在程序其它部分开始前。
  • loop()函数提供了一个循环体,它会在setup()之后循环执行。

为了让大家有更深的印象,请看一个简单示例。

打开Arduino IDE示例程序图4 打开Arduino IDE示例程序

如图4,在“文件”菜单中选择“示例”,就可以看到Arduino IDE自带的许多示例代码,我们选择“Basic”里的“BLink”,看看它所能做的功能。

// the setup function runs once when you press reset or power the board
void setup() {
 //初始化D13,设置为输出状态
 pinMode(13, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
 digitalWrite(13, HIGH); // D13引脚输出高电平
 delay(1000); // 延时1000毫秒
 digitalWrite(13, LOW); // D13引脚输出低电平
 delay(1000); 
}

它的代码如上所示,我们已经用中文进行了注释。电路图如图5,将二极管正极通过1KΩ分压电阻连接D13引脚,电源负极连接开发板地端“GND”,开发板和电脑USB接口相连,经过代码烧录后,就可以看到实验结果了,以1秒钟(1000毫秒)为间隔,LED灯被间歇的点亮和熄灭。搭建实验电路时,给LED连接一个100Ω-1KΩ范围内的分压电阻是必要的,它避免发光二极管的因承受高电平(5V)而损坏。

图5 Blink电路

图6 Blink实际电路

总结

在本文中,我们介绍了Arduino最入门的知识,它的编程语法规则和C语言相同,我们在以后的文章中就不再过多解释,希望请入门级爱好者自己勤学多练C语言,Arduino给创客们带来一个有力的单片机工具,我们会逐步揭示它的丰富功能。更多精彩内容,请查看全站目录

 

优秀科技原创内容源,欢迎添加微信公众号。

创客行淘宝店提供本网站电子制作的全部套件

创客行淘宝店地址:https://shop125908459.taobao.com/

参考文档

  1. 单片机和嵌入式系统,令创客实力大增的新工具
  2. 全站目录

发表评论

电子邮件地址不会被公开。 必填项已用*标注