目录:
第1章 概述
1.1 Arduino简介
1.2 Arduino内部结构
第2章 Arduino编程
2.1 Arduino开发环境
2.2 Arduino语言概述
2.3 Arduino基本函数
第3章 Arduino通信教程
3.1 SPI通信
3.2 红外通信
3.3 WiFi通信
3.4 蓝牙通信
第4章 Arduino实验
1、接收串口数据并显示
第5章 问题解决
1、Linduino One上传程序失败
------------------------------------------------------------------------------------------------------------------------
第1章 概述
1.1 Arduino简介
Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬
件(各种型号的Arduino板)和软件(Arduino IDE)。以下几个较典型的开发板。
1.1.1 Arduino Uno
Uno的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出)、6路模拟输入、一个16MHz晶体振荡器、一个USB接口、一个电源插座、一个ICSP header和一个复位按钮。
硬件端口描述,如上图。
DIGITAL - PWM~:数字口,~PWM输出口;
POWER:电源;
ANALOG IN:模拟口。
1.1.2 Arduino Mega 2560
Arduino Mega 2560是采用USB接口的核心电路板,具有54路数字输入/输出,适合需要大量I/O接口的设计。处理器核心是ATmega 2560,同时具有54路数字输入∕输出口(其中16路可作为
PWM输出)、16路模拟输入、4路UART接口、一个16MHz晶体振荡器、一个USB接口、一个电源插座、一个ICSP header和一个复位按钮。Arduino Mega 2560也能兼容为Arduino Uno设计的扩展板。
1.1.3 Arduino Nano
Arduino Nano是Arduino USB接口的微型版本,其处理器核心是Atmega 168(Nano2.x)和Atmega 328(Nano3.0),同时具有14路数字输入∕输出口(其中6路可作为PWM输出)、8路模拟输入、一个16MHz晶体振荡器、一个Mini-B USB接口、一个ICSP header和一个复位按钮。
1.1.4 Arduino Leonardo
Arduino Leonardo是基于ATmega32U4的一个微控制器板。它有20个数字输入/输出引脚(其中7个可用于PWM输出、12个可用于模拟输入)、一个16 MHz的晶体振荡器、一个Micro USB接口、一个DC接口、一个ICSP接口以及一个复位按钮。
1.1.5 Arduino扩展板
较典型的是Proto Shield原型扩展板、GPRS Shield扩展板、Arduino Ethernet W5100 R3 Shield网络扩展板、WizFi210扩展板、Arduino L298N电机驱动扩展板、Arduino传感器扩展板等。
------------------------------------------------------------
1.2 Arduino内部结构
Arduino平台的基础就是AVR指令集的单片机,因此认清Arduino之前需要了解什么是单片机。移步“单片机、PLC、PLD”专栏,不再赘述。
------------------------------------------------------------------------------------------------------------------------
第2章 Arduino编程
2.1 Arduino开发环境
Arduino集成开发环境(IDE)是一个在计算机里运行的软件,可以上传不同的程序,而Arduino的编程语言也是由Processing语言改编而来的。Arduino没有程序跳转功能、单步执行等,不好调试,推荐使用第三方工具,比如Visual Micro。
------------------------------------------------------------
每次打开串口监视器,相当于对开发板做一次软复位。
------------------------------------------------------------
2.2 Arduino语言概述
基本同C语言,移步“编程类”专栏,不再赘述。
------------------------------------------------------------
2.3 Arduino基本函数
2.3.1 I/O操作函数
1.pinMode(pin,mode),将制定的针脚配置成输出或输入,模拟I/O无需定义。注意:模拟输入脚也能当作数字脚使用。
2.digitalWrite(pin,value),给一个数字针脚写入HIGH或者LOW。注意:数字13号针脚难以作为数字输入使用,因为大部分的控制板上使用了一颗LED和一个电阻与其连接。
3.int digitalRead(pin),读取指定针脚的值,HIGH或LOW。
---------------------------------
2.3.2 模拟I/O操作函数
1.analogReference(type),设定用于模拟输入的基准电压(输入范围的最大值)。
2.analongRead(),从指定的模拟引脚读取数值。
3.analogWrite(),从一个针脚输出模拟值(脉冲宽度调整,Pulse Width Modulation,PWM),让LED以不同的亮度点亮或驱动电机以不同速度旋转。
---------------------------------
2.3.3 高级I/O
1.tone(),在一个针脚上产生一个特定频率的方波(50%占空比)。
注意:如果要在多个针脚是产生不同的音调,则要在对下一个针脚使用tone()函数前,先使用noTone()函数。
2.noTone()
3.ShiftOut(),将数据的一个字节一位一位地移出。
4.shiftIn(),将数据的一个字节一位一位地移入。
5.pulseIn(),读取一个针脚的脉冲(HIGH或LOW)。
---------------------------------
2.3.4 shiftOut(dataPin,clockPin,bitOrder,val)
shiftOut函数能够将数据通过串行的方式在引脚上进行输出,相当于一般意义上的同步串行通信。
---------------------------------
2.3.5 pulseIn(pin,state,timeout)
pulseIn函数用于读取引脚脉冲的时间长度,而脉冲可以是HIGH或LOW。
---------------------------------
2.3.6 时间函数
1.Millis(),返回Arduino开发板运行当前程序开始的毫秒数。
2.micros(),返回Arduino开发板从运行当前程序开始的微秒数,这个数字将在约70分钟后溢出(归零)。
3.delay(),程序设定的暂停时间(单位毫秒)。
4.delayMicroseconds(),使程序暂停指定的一段时间(单位ms)。
---------------------------------
2.3.7 中断函数
1.外部中断函数
attachInterrupt(interrupt,function,mode),当发生外部中断时,调用一个指定的函数。
注意:中断函数中,delay()不会生效,millis()的数值不会持续增加。当中断发生时,串口收到的数据可能会遗失。在中断函数里面使用到的全局变量应该声明为volatile变量。
detachInterrupt(interrupt),关闭给定的中断。
2.中断使能函数
interrupts(中断),重新启用中断(使用noInterrupts()命令后将被禁用)。
noInterrupts(),禁止中断。
---------------------------------
2.3.8 串口收发函数
1.Serial.begin(speed),将串行数据传输速率设置为bit/s(波特)。
2.int Serial.available(),从串口读取有效的字节数(字符)。
3.int Serial.read(),读取传入的串口的数据,read()继承自Stream类。
4.Serial.flush(),等待超出的串行数据完成传输(在1.0及以上的版本中,flush()语句的功能不再是丢弃所有进入缓存器的串行数据)。
5.Serial.print(data),以ASCII文本形式打印数据到串口输出。
6.Serial.println(data),打印数据到串行端口,输出人们可识别的ASCII码文本并回车(ASCII13,或"\r")及换行(ASCII10,或"\n")
---------------------------------
2.3.9 等比映射函数
map()可以用来将某一数值从一个区间等比映射到一个新的区间。
map (x, in_min, in_max, out_min, out_max)
---------------------------------
2.3.9 函数使用查询
全部Arduino函数参见www.arduino.cc,或者www.taichi-maker.com之Arduino开发之Arduino编程。
------------------------------------------------------------------------------------------------------------------------
第3章 Arduino通信教程
3.1 SPI通信
3.2 红外通信
3.3 WiFi通信
3.4 蓝牙通信
相关例程移步:https://download.csdn.net/download/liht_1634/86814659。
------------------------------------------------------------------------------------------------------------------------
第4章 Arduino实验
1、接收串口数据并显示
void setup()
{
Serial.begin(9600);
Serial.println("Input Data:");
}
int RecieveData; //int型数据将显示ascii码,改为char即可
void loop()
{
if(Serial.available()>0)
{
RecieveData = Serial.read();
Serial.println(RecieveData);
delay(10);
}
}
缓冲器中有“2”和“3”,返回值的数量:2,先读取第1个返回值“2”。
缓冲器中只有“3”,返回值的数量:1,读取第2个返回值“3”。
空缓冲器返回“-1”。
------------------------------------------------------------------------------------------------------------------------
第5章 问题解决
1、Linduino One上传程序失败
可知与Arduino Uno兼容,在IDE中需选择“Arduino Uno”。
------------------------------------------------------------------------------------------------------------------------