文档库 最新最全的文档下载
当前位置:文档库 › Arduino学习手册V1.0

Arduino学习手册V1.0

Arduino学习手册修订历史

1.ARDUINO简介

1.1什么是ARDUINO?

Arduino是一个能够用来感应和控制现实物理世界的一套工具。它由一个基于单片机并且开放源码的硬件平台,和一套为Arduino板编写程序的开发环境组成。

Arduino可以用来开发交互产品,比如它可以读取大量的开关和传感器信号,并且可以控制各式各样的电灯、电机和其他物理设备。Arduino项目可以是单独的,也可以在运行时和你电脑中运行的程序(例如:Flash,Processing,MaxMSP)进行通讯。Arduino板你可以选择自己去手动组装或是购买已经组装好的;Arduino开源的IDE可以免费下载得到。

Arduino的编程语言就像似在对一个类似于物理的计算平台进行相应的连线,它基于处理多媒体的编程环境。

1.2 为什么要选择ARDUINO?

有很多的单片机和单片机平台都适合用做交互式系统的设计。例如:Parallax Basic Stamp,Netmedia’s BX-24,Phidgets,MIT’s Handyboard 和其它等等提供类似功能的。所有这些工具,你都不需要去关心单片机编程繁琐的细节,提供给你的是一套容易使用的工具包。Arduino同样也简化了同单片机工作的流程,但同其它系统相比Arduino在很多地方更具有优越性,特别适合老师,学生和一些业余爱好者们使用:

便宜-和其它平台相比,Arduino板算是相当便宜了。最便宜的Arduino版本可以自己动手制作,即使是组装好的成品,其价格也不会超过200元。

跨平台-Arduino软件可以运行在Windows,Macintosh OSX,和Linux操作系统。大部分其它的单片机系统都只能运行在Windows上。

简易的编程环境-初学者很容易就能学会使用Arduino编程环境,同时它又能为高级用户提供足够多的高级应用。对于老师们来说,一般都能很方便的使用Processing 编程环境,所以如果学生学习过使用Processing 编程环境的话,那他们在使用Arduino开发环境的时候就会觉得很相似很熟悉。

软件开源并可扩展-Arduino软件是开源的,对于有经验的程序员可以对其进行扩展。Arduino 编程语言可以通过C++库进行扩展,如果有人想去了解技术上的细节,可以跳过Arduino语言而直接使用AVR C 编程语言(因为Arduino语言实际上是基于AVR C的)。类似的,如果你需要的话,你也可以直接往你的Arduino程序中添加AVR-C 代码。

硬件开源并可扩展-Arduino板基于Atmel 的ATMEGA8 和ATMEGA168/328 单片机。Arduino 基于Creative Commons 许可协议,所以有经验的电路设计师能够根据需求设计自己的模块,可以对其扩展或改进。甚至是对于一些相对没有什么经验的用户,也可以通过制作试验板来理解Arduino是怎么工作的,省钱又省事。

1.3 ARDUINO最流行的版本UNO的配置

Arduino基于AVR平台,对AVR库进行了二次编译封装,把端口都打包好了,寄存器啦、地址指针之类的基本不用管。大大降低了软件开发难度,适宜非专业爱好者使用。优点和缺点并存,因为是二次编译封装,代码不如直接使用AVR代码编写精练,代码执行效率与代码体积都弱于AVR直接编译。

基本性能配置:

?Digital I/O 数字输入/输出端口0—13。

?Analog I/O 模拟输入/输出端口0-5。

?支持ICSP下载,支持TX/RX。

?输入电压:USB接口供电或者5V-12V外部电源供电。

?输出电压:支持3.3V/5V DC输出。

?处理器:使用Atmel Atmega168/328处理器,因其支持者众多,已有公司开发出来32位的MCU 平台支持arduino。

2ARDUINO开发板的初次使用

2.1 ARDUINO开发环境简介

Arduino的开发环境地址:

?在Arduino独家整理资料包\1.开发环境\ arduino-1.0.5-windows.exe找到

?在Arduino官网下载最新开发环境,地址https://www.wendangku.net/doc/ff12662167.html,/en/Main/Software

2.2ARDUINO开发

环境安装

第一步:打开安装包arduino-1.0.5-windows.exe

第二步:点击I Agree

第三步:点击NEXT

第四步:选择自己的安装路径,点击Install

第五步:等待安装完成

第六步:点击Close

2.3ARDUINO驱动程序安装

第一步:使用配套的USB线连接电脑和Arduino开发板。

第二步:选择从列表或指定位置安装(高级),点击下一步

第三步:选择 在搜索中包括这个位置 ,选择Arduino 开发环境安装目录下的drivers 点击 下一步

第四部:点击 完成 结束安装。

2.4 开发环境使用

1) 打开桌面上的Arduino 开发环境快捷方式

2)

选择file 菜单下的

Preferenced

3)选择简体中文开发环境,点OK

4)关闭开发环境,重新打开,切换到中文界面,是不是舒服多了?(*^__^*) 嘻嘻……

5) 在 工具 菜单下找到 板卡 ,选择自己的板子 ARDUINO UNO 6)

选择串口,串口可以在 我的电脑 右键 设备管理器 查看,

7)

我的电脑是COM22,在 工具 菜单 串口 中选择COM22 右下角出现

Arduino Uno on COM22

8)打开一个例程测试板子是否运转正常

文件–> 示例-> 01.Basics -> Blink

9)点击编译点击下载,

看开发板上的LED以1秒的频率闪烁。(恭喜您开发板的初步操作已经掌握)

您可以去测试其它的系统自带例程,或者我们提供的例程了!

下载

编译

3ARDUINO例程讲解

例程讲解声明:

1.软件源程序存放在Arduino独家整理资料包\3.例程内,本手册不再一一粘贴出来,浪费篇幅增

加大家观看教程难度。

2.实验原理/代码讲解部分把小编认为程序最有看点或者最重要的部分载录出来重点讲解,其他部

分请查看代码中文注释。所有代码注释均采用中文,让大家看程序更容易。

3.实验原理图和连接图使用Fritzing(Arduino独家整理资料包\5.Arduino面包板连线绘图软件\

fritzing.2013.07.27.pc.zip)绘制。

4.绘制好的电路连接底图存放在Arduino独家整理资料包\6.例程连线图原理图源文件中,公开开

放给大家,可以用Fritzing软件打开观看高清图纸。

5.例程不断更新增加,请经常光顾我们店铺或者我们提供的下载链接,下载最新的实验手册。

3.1 LESSON1 HELLO WORLD

做为程序员编写所有程序的第一课,Hello World!是必须的一个环节,这一讲我们讲解一下如何使用Arduino的串口编写一句“Hello World!”,然后用Arduino发送给PC机。

后缀名为ino的为Arduino的项目文件,例如LESSON1.ino双击打开即可。

理论学习:

该程序中用到Arduino程序里面最常见的几个函数:

?void setup() 该函数用于编写Arduino的初始化内容,本例程内设置通讯波特率就放在这里,对于通讯的设置只许设置一次就可以了,所以把Serial.begin(9600) 放在这里。

?Serial.begin(9600) 用于设置串口通讯的波特率,这里设置为9600

?void loop() 该函数是Arduino的主程序部分,编写Arduino的核心代码。

这里通过串口向电脑发送一个字符串,字符串内容为“Hello World!”

?Serial.println("Hello World!") 用于填写需要发送的字符串的内容。

?delay(1000); 这是毫秒延时函数,延时1000毫秒,即1秒

串口监视器

图3.1.1 代码示例

把程序烧录进Arduino 板子后,点击右上方的串口监视器,设置监视器的波特率为9600(在监控界面右下角),

我们发现每过1秒钟接收到一条Hello World!

图3.1.2串口显示界面

3.2LED闪烁实验

本实验来自小编对系统自带实验Blink的优化。

实验现象:板载LED 1秒钟闪烁。

理论学习:

实验用到的新函数:

?#define led 13 //用于设置板子上的13引脚的名字为led

//比用系统源程序里面的int led = 13,少了2个字节的开销

?pinMode(led, OUTPUT); //用于设置LED引脚为输出引脚

?digitalWrite(led, HIGH); //设置LED引脚输出高电平,点亮LED

?digitalWrite(led, LOW); //设置LED引脚输出低电平,熄灭LED

图3.2.1 代码示例

3.3 按键控制LED 亮灭

实验现象:本实验通过一个按键来控制一个发光二极管的亮灭。按键按一下LED 点亮,再按一下LED 熄灭。

备注:LED 长引脚为正极,短引脚为负极。

理论学习: 该实验主要难点: 如何扫描按键的状态?

如何防抖动? 原理讲解:

? 按键检测原理:通过把Arduino 的数字IO 设置为输入状态来监控按键是否按下,当按

键未按下时候因为有上拉电阻存在,读到的电平为 HIGH ,当按键按下时候因为按键引脚接地,所以读回来的电平为LOW ,由此判断按键是否按下。

?

按键去抖动原理

:因为人手的机械动作使按键按下时候会产生大概20ms 左右的按键抖动,如果Arduino 在这20ms 内去检测IO 口的电平很可能会检测出来不稳定的信号。 因此,在检测到低电平后延迟20ms 再次检测可以起到软件去抖动的作用。 程序中用到的 delay(20); 就是这个作用

松手检测原理:所谓的松手检测原理更简单,就是程序无限循环等待按键松开,即让程序不停的去检测IO 状态,如果恢复了HIGH 就跳出循环。 程序中这样写的 while(digitalRead(KEY) == 0);

3.3.1原理图和连接图

3.3.2实际效果图

3.4 广告流水灯模块实验

实验现象:按照自己的想法让LED 模块显示各种效果。本程序4种流水效果,其它流水效果大家可以发挥自己的想象编写。

正极

负极

理论学习:

?LED模块相当于8个LED的一个组合体,带文字的一面是阳极,另外一面是阴极。

?本实验采用共阳极,IO控制阴极模式。

3.4.1原理图

3.4.2连接图

3.4.3 实物效果图

3.5 RGB LED 七彩跳变

实现现象:本实验使用UNO 驱动一颗RGB 三基色LED 产生七色光的变化。

备注:引脚最长的为共阳的正极,剩下3个分别为红色、绿色、蓝色。

理论学习:三基色组合七色光原理:

红色+绿色=黄色 绿色+蓝色

=青色 红色+蓝色=紫色 红色+绿色+蓝色=白色

总共由3种基色“红绿蓝”组合出来七色光“红绿蓝青紫黄白”。

大家明白了三基色的原理就很容易的去编写这个例程了。我们想让哪个颜色LED 点亮就把对应控制引脚的IO 设置为LOW 就可以了。(因为这个LED 是共阳极的哦!)

试验中使用switch语句来选择颜色

enum{Color_R,Color_G,Color_B,Color_RG,Color_RB,Color_GB,Color_RGB}; //枚举所有颜色//红,绿,蓝,黄,紫,青,白

void Change_Color(unsigned char data_color) //选择颜色函数

{

switch(data_color)

{

case Color_R: //红色

digitalWrite(LED_R,LOW);

digitalWrite(LED_G,HIGH);

digitalWrite(LED_B,HIGH);

break;

case Color_G: //绿色

digitalWrite(LED_R,HIGH);

digitalWrite(LED_G,LOW);

digitalWrite(LED_B,HIGH);

break;

case Color_B: //蓝色

digitalWrite(LED_R,HIGH);

digitalWrite(LED_G,HIGH);

digitalWrite(LED_B,LOW);

break;

case Color_RG: //黄色

digitalWrite(LED_R,LOW);

digitalWrite(LED_G,LOW);

digitalWrite(LED_B,HIGH);

break;

case Color_RB: //紫色

digitalWrite(LED_R,LOW);

digitalWrite(LED_G,HIGH);

digitalWrite(LED_B,LOW);

break;

case Color_GB: //青色

digitalWrite(LED_R,HIGH);

digitalWrite(LED_G,LOW);

digitalWrite(LED_B,LOW);

break;

case Color_RGB: //白色

digitalWrite(LED_R,LOW);

digitalWrite(LED_G,LOW);

digitalWrite(LED_B,LOW);

break;

default:

break;

}

}

3.5.1

原理图和连接图

3.5.2 实际效果图(七彩跳变)

3.5.3 实际效果图(七彩跳变)

3.6通过按键切换LED颜色

实验现象:按键每次按下LED切换一种颜色,依次为红,绿,蓝,黄,紫,青,白;

理论学习:

?学会枚举语句的应用

enum{Color_R,Color_G,Color_B,Color_RG,Color_RB,Color_GB,Color_RGB};

相当于Color_R = 0,Color_G = 1,……Color_RGB = 6,使用枚举语句使程序更易懂,阅读起

来更简单舒服。

这样在选择颜色时候,例如选择白色Change_Color(Color_RGB);就可以了,如果写

Change_Color(6)当然也能看懂,但是需要花费很大的精力。

?因为要0-6这7种颜色循环切换,因此当切换到白色时候要跳回红色。

程序中使用以下语句切换:

Color_Value++; //颜色变量+1

if(Color_Value == Color_RGB+1) //当颜色变量== 7

{

Color_Value = Color_R; //颜色变量清零,切换为红色

}

3.6.1 原理图和连接图

3.6.2 实际效果图

相关文档
相关文档 最新文档