大工精机舟山有限公司
工学讲习所
讲
义
资
料
2011年
浙江大工精机舟山有限公司
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 0
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
Arduino 控制器控制器控制器控制器使用使用使用使用教程教程教程教程
DFRduino Duemilanove Compatible
北京龙凡汇众机器人科技有限公司北京龙凡汇众机器人科技有限公司北京龙凡汇众机器人科技有限公司北京龙凡汇众机器人科技有限公司
Version 1.2
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 1
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
概概概概 述述述述
什么什么什么什么是是是是 Arduino?
Arduino 是一块基与开放原始代码的 Simple i/o 平台,並且具有使用类似 java,C 语言的开发环境。让您可以快速
使用 Arduino 语言与 Flash 或 Processing…等软件,作出互动作品。Arduino 可以使用开发完成的电子元件例如 Switch
或 Sensors 或其他控制器、LED、步进电机或其他输出裝置。Arduino 也可以独立运作成为一个可以跟软件沟通的平
台,例如说:flash processing Max/MSP VVVV 或其他互动软件…
Arduino 开发IDE界面基于开放原始码原则,可以让您免费下载使用开发出更多令人惊奇的互动作品。
什么什么什么什么是是是是 Roboduino?
DFRduino 与 Arduino 完全兼容,只是在原来的基础上作了些改进。Arduino 的 IO 使用的孔座,做互动作品需要面
包板和针线搭配才能进行,而 DFRduino 的 IO 使用针座,使用我们的杜邦线就可以直接把各种传感器连接到 DFRduino
上。
特色描述特色描述特色描述特色描述
1. 开放原始码的电路图
,程式开发界面免费下载,也可依需求自己修改!!
2. DFRduino 可使用 ISP 下载线,自我將新的 IC 程序烧入「bootloader」;
3. 可依据官方电路图,简化 DFRduino 模组,完成独立云作的微处理控制器;
4. 可简单地与传感器、各式各样的电子元件连接(如:红外线,超声波,热敏电阻,光敏电阻,伺服电机等);
5. 支援多样的互动程式 如: Flash,Max/Msp,VVVV,PD,C,Processing 等;
6. 使用低价格的微处理控制器(ATMEGA168V-10PI);
7. USB 接口,不需外接电源,另外有提供 9VDC 输入接口;
8. 应用方面,利用 DFRduino,突破以往只能使用滑鼠,键盘,CCD 等输入的裝置的互动內容,可以更简单地达成单
人或多人游戏互动。
性能描述性能描述性能描述性能描述
1. Digital I/O 数字输入/输出端共 0~13。
2. Analog I/O 模拟输入/输出端共 0~5。
3. 支持 USB 接口协议及供电(不需外接电源)。
4. 支持 ISP 下载功能。
5. 支持单片机 TX/RX 端子。
6. 支持 USB TX/RX 端子。
7. 支持 AREF 端子。
8. 支持六組 PWM 端子(Pin11,Pin10,Pin9,Pin6,Pin5,Pin3)。
9. 输入电压:接上 USB 时无须外部供电或外部 5V~9V DC 输入。
10.输出电压:5V DC 输出和 3.3V DC 输出 和外部电源输入。
11.采用 Atmel Atmega168V-10PI 单片机。
12.DFRduino 大小尺寸:宽 70mm X 高 54mm。
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 2
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
第一第一第一第一课课课课 Arduino 语言语言语言语言
Arduino 语言是建立在 C/C++基础上的,其实也就是基础的 C 语言,Arduino 语言只不过把 AVR 单片机(微控制
器)相关的一些寄存器参数设置等都函数化了,不用我们去了解他的底层,让不太了解 AVR 单片机(微控制器)的
朋友也能轻松上手。
那么这里就简单的注释一下 Arduino 语言。
/*************基础 C 语言*************/
关键字关键字关键字关键字::::
• if
• if...else
• for
• switch case
• while
• do... while
• break
• continue
• return
• goto
语法符号语法符号语法符号语法符号::::
• ;
• {}
• //
• /* */
运算符运算符运算符运算符::::
• =
• +
• -
• *
• /
• %
• ==
• !=
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 3
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
• <
• >
• <=
• >=
• &&
• ||
• !
• ++
• --
• +=
• -=
• *=
• /=
数据类型数据类型数据类型数据类型::::
• boolean 布尔类型
• char 字符类型
• byte 字节类型
• int 整数类型
• unsigned int 无符号整型
• long 长整型
• unsigned long 无符号长整型
• float 实数类型
• double
• string
• array
• void
数据类型转换数据类型转换数据类型转换数据类型转换::::
• char()
• byte()
• int()
• long()
• float()
常量常量常量常量::::
• HIGH | LOW 表示数字 IO 口的电平,HIGH 表示高电平(1),LOW 表示低电平(0)。
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 4
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
• INPUT | OUTPUT 表示数字 IO 口的方向,INPUT 表示输入(高阻态),OUTPUT 表示输出(AVR 能提供
5V 电压 40mA 电流)。
• true | false true 表示真(1),false 表示假(0)。
/**************************************/
以上为基础 c 语言的关键字和符号,有 c 语言基础的都应该了解其含义,这里也不作过多的解释。
/*************Arduino 语言*************/
结构结构结构结构
• void setup() 初始化变量,管脚模式,调用库函数等
• void loop() 连续执行函数内的语句
功能功能功能功能
数字数字数字数字 I/O
• pinMode(pin, mode) 数字 IO 口输入输出模式定义函数,pin 表示为 0~13, mode 表示为 INPUT 或 OUTP
UT。
• digitalWrite(pin, value) 数字 IO 口输出电平定义函数,pin 表示为 0~13,value 表示为 HIGH 或 LOW。比
如定义 HIGH 可以驱动 LED。
• int digitalRead(pin) 数字 IO 口读输入电平函数,pin 表示为 0~13,value 表示为 HIGH 或 LOW。比如可以
读数字传感器。
模拟模拟模拟模拟 I/O
• int analogRead(pin) 模拟 IO 口读函数,pin 表示为 0~5(Arduino Diecimila 为 0~5,Arduino nano 为 0~7)。
比如可以读模拟传感器(10 位 AD,0~5V 表示为 0~1023)。
• analogWrite(pin, value) - PWM 数字 IO 口 PWM 输出函数,Arduino 数字 IO 口标注了 PWM 的 IO 口可使
用该函数,pin 表示 3, 5, 6, 9, 10, 11,value 表示为 0~255。比如可用于电机 PWM 调速或音乐播放。
扩展扩展扩展扩展 I/O
• shiftOut(dataPin, clockPin, bitOrder, value) SPI 外部 IO 扩展函数,通常使用带 SPI 接口的 74HC595 做 8 个
IO 扩展,dataPin 为数据口,clockPin 为时钟口,bitOrder 为数据传输方向(MSBFIRST 高位在前,LSBFIR
ST 低位在前),value 表示所要传送的数据(0~255),另外还需要一个 IO 口做 74HC595 的使能控制。
• unsigned long pulseIn(pin, value) 脉冲长度记录函数,返回时间参数(us),pin 表示为 0~13,value 为 HI
GH 或 LOW。比如 value 为 HIGH,那么当 pin 输入为高电平时,开始计时,当 pin 输入为低电平时,停止计
时,然后返回该时间。
时间函数时间函数时间函数时间函数
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 5
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
• unsigned long millis() 返回时间函数(单位 ms),该函数是指,当程序运行就开始计时并返回记录的参数,
该参数溢出大概需要 50 天时间。
• delay(ms) 延时函数(单位 ms)。
• delayMicroseconds(us) 延时函数(单位 us)。
数学函数数学函数数学函数数学函数
• min(x, y) 求最小值
• max(x, y) 求最大值
• abs(x) 计算绝对值
• constrain(x, a, b) 约束函数,下限 a,上限 b,x 必须在 ab 之间才能返回。
• map(value, fromLow, fromHigh, toLow, toHigh) 约束函数,value 必须在 fromLow 与 toLow 之间和 fromHi
gh 与 toHigh 之间。
• pow(base, exponent) 开方函数,base 的 exponent 次方。
• sq(x) 平方
• sqrt(x) 开根号
三角函数三角函数三角函数三角函数
• sin(rad)
• cos(rad)
• tan(rad)
随机数函数随机数函数随机数函数随机数函数
• randomSeed(seed) 随机数端口定义函数,seed 表示读模拟口 analogRead(pin)函数 。
• long random(max) 随机数函数,返回数据大于等于 0,小于 max。
• long random(min, max) 随机数函数,返回数据大于等于 min,小于 max。
外部中断函数外部中断函数外部中断函数外部中断函数
• attachInterrupt(interrupt, , mode) 外部中断只能用到数字 IO 口 2 和 3,interrupt 表示中断口初始 0 或 1,表
示一个功能函数,mode:LOW 低电平中断,CHANGE 有变化就中断,RISING 上升沿中断,FALLING
下降沿中断。
• detachInterrupt(interrupt) 中断开关,interrupt=1 开,interrupt=0 关。
中断使能函数中断使能函数中断使能函数中断使能函数
• interrupts() 使能中断
• noInterrupts() 禁止中断
串口收发函数串口收发函数串口收发函数串口收发函数
• Serial.begin(speed) 串口定义波特率函数,speed 表示波特率,如 9600,19200 等。
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 6
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
• int Serial.available() 判断缓冲器状态。
• int Serial.read() 读串口并返回收到参数。
• Serial.flush() 清空缓冲器。
• Serial.print(data) 串口输出数据。
• Serial.println(data) 串口输出数据并带回车符。
/************Arduino 语言库文件************/
官方库文件官方库文件官方库文件官方库文件 下载地下载地下载地下载地址址址址::::http://arduino.cc/en/Reference/Libraries
• EEPROM - EEPROM 读写程序库
• Ethernet - 以太网控制器程序库
• LiquidCrystal - LCD 控制程序库
• Servo - 舵机控制程序库
• SoftwareSerial - 任何数字 IO 口模拟串口程序库
• Stepper - 步进电机控制程序库
• Wire - TWI/I2C 总线程序库
• Matrix - LED 矩阵控制程序库
• Sprite - LED 矩阵图象处理控制程序库
/******************************************/
第二第二第二第二课课课课 Arduino 的的的的数字数字数字数字、、、、模拟模拟模拟模拟端端端端口口口口
Arduino 控制器内带 Bootloader 程序,是系统上电后运行的第一段代码,就好比 PC 机 BIOS 中的程序,启动就进
行自检,配置端口等等,当然单片机就是靠烧写熔丝位来设定上电从 boot 区启动的,使用这个程序就可以直接把从串
口发来的程序存放到 flash 区中。我们在使用 Arduino 编译环境下载程序时,就先让单片机复位,启动 Bootloader 程序
引导串口发过来的程序顺利写入 flash 区中,flash 可以重复烧写,因此想更新软件就是这么的方便。下面我来简单的
介绍一下驱动的安装和编译环境的使用。首先连接下载程序用的下载线。
首先将数据线的圆口一端插在 Arduino328 板子上如图:
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 7
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
·将数据线的扁口一端插在电脑的 USB 接口上,如下图所示:
·插好后,Arduino328 控制板上的电源指示灯会被点亮,电脑上会出现一个对话框如图:
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 8
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
·选择从列表或指定位置安装,点击下一步,出现如下图:
·然后点击浏览,在出现的浏览文件夹对话框中点击光盘,在光盘下找到 arduino0018 文件夹,点击打开,会看见有
drivers 文件夹如下图所示:
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 9
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
·点击 drivers 文件夹,会看到 FTDI USB Drivers 文件夹,如图:
·然后点击这个文件夹,接着点击确定,点击下一步,会出现如图对话框:
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 10
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
·这时我们只要等待即可,稍后会出现如下图对话框:
·点击完成,这样驱动就安装好了,下次再将数据线插到电脑就不会出现安装驱动对话框了,插上数据线就可以下载
程序了。
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 11
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
然后下载最新的编译软件 Arduino0018,解压后就可以直接使用,接下来我们就可以开始练手了,打开 Arduino0
018。
Arduino 0018 开发编译环境很简洁,各个功能键功能描述如下:
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 12
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
接下来点 Tools->Board 选择开发板型号,
这里我们使用的是 Arduino Duemilanove 328,然后点 Tools->Serisl Port 选择串口,即 USB 映射的串口地址,
前面的工作做好后,我们就可以进入实验阶段了。
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 13
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
Arduino 语言是以 setup()开头,loop()作为主体的一个程序构架。官方网站是这样描述 setup()的:用来初始化
变量,管脚模式,调用库函数等等,此函数只运行一次。loop()函数是一个循环函数,函数内的语句周而复始的循环
执行,功能类似 c 语言中的“main();”。
Digital Output 数字输数字输数字输数字输出出出出实验实验实验实验
功能功能功能功能::::使 PIN13 脚上的 LED 闪烁。
int ledPin = 13; // 设定控制 LED 的数字 IO 脚
void setup()
{
pinMode(ledPin, OUTPUT); // 设定数字 IO 口的模式,OUTPUT 为输出
}
void loop()
{
digitalWrite(ledPin, HIGH); // 设定 PIN13 脚为 HIGH = 4V
delay(1000); // 设定延时时间,1000 = 1 秒
digitalWrite(ledPin, LOW); // 设定 PIN13 脚为 LOW = 0V
delay(1000); //设定延时时间
}
功能功能功能功能::::PWM 使 PIN11 脚上的 LED 逐渐变亮逐渐变暗。
int ledPin = 11; // 设定控制 LED 的数字 IO 脚
int val; //定义一个变量
void setup()
{
pinMode(ledPin, OUTPUT); // 设定数字 IO 口的模式,OUTPUT 为输出
}
void loop()
{
for(val=0;val<255;val++) //变量循环+1
{
analogWrite(ledPin, val); //PWM 输出
delay(50); //设定延时时间
}
for(val=255;val>0;val--) //变量循环-1
{
analogWrite(ledPin, val);
delay(50);
}
}
Digital Input 数字输数字输数字输数字输入入入入实验实验实验实验
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 14
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
功能功能功能功能::::闭合开关 SW,PIN13 脚上的 LED 亮,断开开关 SW,PIN13 脚上的 LED 灭。
int ledPin = 13; // 设定控制 LED 的数字 IO 脚
int switchPin = 7; // 设定开关的数字 IO 脚
int val = 0; //定义一个变量
void setup()
{
pinMode(ledPin, OUTPUT); // 设定数字 IO 口的模式,OUTPUT 为输出
pinMode(switchPin, INPUT); // 设定数字 IO 口的模式,INPUT 为输入
}
void loop()
{
val = digitalRead(switchPin); //读数字 IO 口上的状态
if (HIGH == val) digitalWrite(ledPin, LOW); // 如果开关断开,LED 灭
else digitalWrite(ledPin, HIGH); // 如果开关闭合,LED 亮
}
Analog Input 模拟输模拟输模拟输模拟输入入入入实验实验实验实验
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 15
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
功能功能功能功能::::调节电位器 RPot,使输入模拟量的变化来改变 LED 闪烁的频率。
int ledPin = 13; // 设定控制 LED 的数字 IO 脚
int RPotPin = 5; // 设定模拟输入 IO 脚
int val = 0; //定义一个变量
void setup()
{
pinMode(ledPin, OUTPUT); // 设定数字 IO 口的模式,OUTPUT 为输出
}
void loop()
{
val = analogRead(RPotPin); //读模拟 IO 口上的数据
digitalWrite(ledPin, HIGH); // 设定 PIN13 脚为 HIGH = 4V
delay(value); // 延时时间为模拟输入的值
digitalWrite(ledPin, LOW); // 设定 PIN13 脚为 LOW
delay(value); // 延时时间为模拟输入的值
}
第三课第三课第三课第三课 Arduino 的串的串的串的串口口口口通讯通讯通讯通讯
Arduino 不但有 14 个数字接口和 6 个模拟接口外,还有 1 个更为常用的串口接口。在实际应用中串口以只需要少
量的几根线就能和其他串口设备通讯的优势被广应用。
串行接口按
被分为 RS-232、RS-422、RS-485。RS-232 是在 1962 年发布的,也是目前 PC 机与通信工业中应用
最广泛的一种串行接口,RS-232 采取不平衡传输方式,即所谓单端通讯。典型的 RS-232 信号在正负电平之间摆动,
在发送数据时,发送端驱动器输出正电平在+5~+15V,负电平在-5~-15V 电平。我们的单片机使用的是 TTL 电平的串
行协议,因此单片机与 pc 通讯时需要进行 RS-232 电平和 TTL 电平的转换,最常用的电平转换芯片是 MAX232,单片机
与单片机通讯时则可以直接连接。
USB 版本的 Arduino 则是通过 USB 转成 TTL 串口下载程序的,数字口 PIN 0 和 PIN 1 就是 TTL 串口 RX 和 TX。
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 16
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
串口通讯中最重要的一点就的通讯协议,一般串口通讯协议都会有波特率、数据位、停止位、校验位等参数。大
家不会设置也不用怕,Arduino 语言中 Serial.begin()函数就能使大家轻松完成设置,我们只需要改变该函数的参数
即可,例如 Serial.begin(9600),则表示波特率为 9600bit/s(每秒比特数 bps),其余参数默认即可。
Arduino 语言中还提供了 Serial.available() 判断串口缓冲器状态、Serial.read()读串口、Serial.print()串
口发送及 Serial.println()带换行符串口发送四个函数。
下面我们用一段代码来演示这些函数的用途。实验无须外围电路,只需要将下载的 USB 线连接即可。
char word;
void setup()
{
Serial.begin(9600); // 打开串口,设置波特率为 9600 bps
}
void loop()
{
if (Serial.available() > 0) //判断串口缓冲器是否有数据装入
{
word = Serial.read(); //读取串口
if(word=='a') //判断输入的字符是否为 a
{
Serial.print("DFRobot "); //从串口发送字符串
Serial.println("is NO.1"); //从串口发送字符串并换行
}
}
}
编译下载完程序后,点红圈里的按钮,打开串口监视器;
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 17
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
选择串口监视器的波特率为 9600bps,在发送框里填上字母 a,点 send 发送,下面的显示框里就会显示返回的数
据,如果发送其他字母,则无返回值。
第第第第四四四四课课课课 Arduino 的的的的 I2C/TWI 通讯通讯通讯通讯
什么的 I2C 呢?I2C 即 Inter-Integrated Circuit 串行总线的缩写,是 PHILIPS 公司推出的芯片间串行传输总
线。它以 1 根串行数据线(SDA)和 1 根串行时钟线(SCL)实现了双工的同步数据传输。具有接口线少,控制方式简
化,器件封装形式小,通信速率较高等优点。在主从通信中,可以有多个 I2C 总线器件同时接到 I2C 总线上,通过地
址来识别通信对象。
幸运的是,Arduino 已经为我们提供了 I2C 的库函数(Wire.h),这样我们就可以很轻松的玩 IIC 通讯了 。
这里使用 Arduino Diecimila 做主机,2 个 Arduino Nano 做从机(不一定非要 nano 做从机,Arduino Diecimil
a、Mini 甚至其他 IIC 器件都可以。如果 IIC 总线上挂了多个从机,那么就要在总线上加上拉电阻。),Arduino Nan
o 是 Arduino 家族中的新成员,估计大家还不太熟悉吧,这里我就简单介绍一下。
Arduino Nano 实际和 Arduino Diecimila 差不多,但 Arduino Nano 与 Arduino Diecimila 相比较,Arduino Nan
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 18
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
o 在体积上占很大优势,并且具有 8 个模拟口,比 Arduino Diecimila 还多 2 个,还具有 USB 电源和外接电源自动切
换功能,12 版的编译环境支持 nano 硬件。
I2C 总线也是主从方式通讯,I2C 总线允许连接多个微控制器,显然不能同时存在两个主器件,先控制总线的器件
成为主器件,这就是总线竞争。在竞争过程中数据不会被破坏、丢失。数据只能在主、从器件中传送,结束后,主、
从器件将释放总线,退出主、从器件角色。
下面我们就做个简单的 I2C 通讯实验,通过编译环境的串口监视器向主机发送指令,主机收到后,再通过 I2C 总
线发送给地址匹配的从机,然后从机驱动 LED 点亮。代码分主从部分,主机部分写入 Arduino Diecimila,从机部分
写入 Arduino Nano。
实验实物图:
Arduino 使用教程 http://www.dfrobot.com DreamFactoryDreamFactoryDreamFactoryDreamFactory
http:// www.dfrobot.cn 19
Arduino 使用教程使用教程使用教程使用教程 北京龙凡汇众机器人科技有限公司
梦工厂梦工厂梦工厂梦工厂 E_mail: service@dfrobot.com
在上代码之前,我们先了解一下 IIC 的库函数 Wire.h 里面的常用函数。
• begin() //初始化 Wire 库,和设置 IIC 总线主从机
• begin(address) //带地址参数就是从机,不带就是主机
• requestFrom(address, count) //在启动 IIC 总线后,可以继续访问另一个地址,和访问次数
• beginTransmission(address) //开始给从机发送地址
• endTransmission() //结束本次 IIC 通讯,与上条函数成对使用
• send() //发送数据
• byte available() //用于判断数据是否有效,有效才开始接收
• byte receive() //接收数据
• onReceive(handler) //从机接收主机发来的数据
• onReq