本书主要通过了解,学习,使用Arduino开源模块,让读者在实战过程中学习并掌握基于AVR8位单片机的项目开发技巧。
封面图
目录
- 前言
- 第一篇 基础篇
- 第1章 初识Arduino2
- 1.1 Arduino的历史2
- 1.2 Arduino的家族3
- 1.3 Arduino的资源6
- 1.4 Arduino的开发环境9
- 1.5 添加新硬件及设置开发环境9
- 1.6 Arduino开发环境的应用14
- 第2章 编写Arduino程序16
- 2.1 绘制流程图16
- 2.1.1 流程图基本符号16
- 2.1.2 流程图的三种基本结构17
- 2.2 C语言的标识符与关键字18
- 2.2.1 标识符18
- 2.2.2 关键字18
- 2.2.3 运算符19
- 2.2.4 分隔符21
- 2.2.5 常量21
- 2.2.6 注释符21
- 2.3 控制语句21
- 2.3.1 if语句21
- 2.3.2 switch语句22
- 2.3.3 while语句23
- 2.3.4 do-while语句24
- 2.3.5 for语句25
- 2.3.6 break语句26
- 2.3.7 continue语句26
- 2.3.8 goto语句26
- 2.4 程序结构27
- 第3章 Arduino的基本函数29
- 3.1 数字I/O30
- 3.1.1 pinMode(pin,mode)30
- 3.1.2 digitalWrite(pin,value)31
- 3.1.3 digitalRead(pin)32
- 3.2 模拟I/O33
- 3.2.1 analogReference(type)33
- 3.2.2 analogRead(pin)33
- 3.2.3 analogWrite(pin, value)34
- 3.3 高级I/O37
- 3.3.1 shiftOut(dataPin,clockPin, bitOrder,val)37
- 3.3.2 pulseIn(pin,state,timeout)38
- 3.4 时间函数39
- 3.4.1 millis( )39
- 3.4.2 delay(ms)40
- 3.4.3 delayMicroseconds(us)40
- 3.5 数学库41
- 3.5.1 min(x,y)41
- 3.5.2 max(x,y)41
- 3.5.3 abs(x)41
- 3.5.4 constrain(amt,low,high)41
- 3.5.5 map(x,in_min,in_max,out_min, out_max)41
- 3.5.6 三角函数42
- 3.6 随机数42
- 3.6.1 randomSeed(seed)42
- 3.6.2 random(howsmall,howbig)42
- 3.7位操作43
- 3.8中断函数43
- 3.8.1interrupts( )和noInterrupts( )43
- 3.8.2attachInterrupt(interrupt,function,mode)43
- 3.9 串口通信45
- 3.10 SPI接口48
- 3.10.1 SPI接口概述48
- 3.10.2 SPI接口数据传输48
- 3.10.3 SPI类及其成员函数49
- 第4章 Arduino硬件平台52
- 4.1 Arduino的原理图52
- 4.2 串行通信口的使用55
- 4.2.1 实例功能56
- 4.2.2 硬件电路56
- 4.2.3 程序设计56
- 4.3 数字I/O口的使用58
- 4.3.1 实例功能59
- 4.3.2 硬件电路59
- 4.3.3 程序设计59
- 4.4 模拟I/O口的使用61
- 4.4.1 实例功能61
- 4.4.2 硬件电路61
- 4.4.3 程序设计62
- 4.5 烧写引导程序62
- 4.5.1 下载器AVRISP63
- 4.5.2 AVR Studio64
- 4.5.3 烧写引导程序65
- 第二篇 模块篇
- 第5章 Arduino基本扩展模块68
- 5.1 L293 Motor Shield68
- 5.1.1 直流电机的工作原理68
- 5.1.2 H桥驱动电路70
- 5.1.3 线性放大调速原理71
- 5.1.4 PWM调速原理72
- 5.1.5 L293 Motor Shield的原理72
- 5.1.6 L293 Motor Shield的应用74
- 5.1.7 程序设计75
- 5.1.8 程序分析76
- 5.1.9 程序的精练77
- 5.2 Input Shield78
- 5.2.1 Input Shield原理图79
- 5.2.2 Input Shield的实例79
- 5.2.3 程序设计80
- 5.2.4 程序分析81
- 5.2.5 使用摇杆控制直流电机转速81
- 5.3 LCD Keypad Shield83
- 5.3.1 液晶显示原理83
- 5.3.2 标准1602液晶模块83
- 5.3.3 1602液晶模块控制方式84
- 5.3.4 LCD Keypad Shield原理图87
- 5.3.5 LCD Keypad Shield应用实例89
- 5.3.6 程序设计89
- 5.3.7 程序分析92
- 5.3.8 Arduino的液晶控制方式93
- 5.3.9 “hello Arduino!”94
- 5.4 Ethernet Shield97
- 5.4.1 Ethernet Shield原理图97
- 5.4.2 W5100芯片介绍97
- 5.4.3 W5100芯片的寄存器101
- 5.4.4 W5100芯片的使用105
- 5.4.5 Ethernet Shield应用实例105
- 5.4.6 程序设计106
- 5.5 I/O扩展板109
- 5.5.1 Xbee传感器扩展板V5109
- 5.5.2 伺服电机控制110
- 5.5.3 伺服电机应用实例111
- 5.5.4 Interface shield114
- 5.5.5 RGB LED Module114
- 5.5.6 RGB LED Module应用实例118
- 5.5.7 程序的精练123
- 第6章 Arduino的扩展库126
- 6.1 Arduino扩展库介绍126
- 6.1.1 Arduino扩展库的作用126
- 6.1.2 Arduino扩展库的应用126
- 6.2 对象和类130
- 6.2.1 类的定义130
- 6.2.2 对象的创建及成员函数的调用131
- 6.2.3 对象的初始化和构造函数132
- 6.2.4 函数的重载133
- 6.2.5 析构函数133
- 6.3 LiquidCrystal库134
- 6.3.1 构造函数136
- 6.3.2 command( )和write( )139
- 6.3.3 begin( )140
- 6.3.4 clear( )142
- 6.3.5 home( )142
- 6.3.6 setCursor( )142
- 6.3.7 noDisplay( )和display( ) 143
- 6.3.8 cursor( )和noCursor( )143
- 6.3.9 blink( )和noBlink( )143
- 6.3.10 autoscroll( )和
- noAutoscroll( )144
- 6.3.11 scrollDisplayLeft( )和scrollDisplayRight( )144
- 6.3.12 print( )145
- 6.4 Ethernet库146
- 6.4.1 EthernetClass类定义146
- 6.4.2 Server类定义148
- 6.4.3 Server类构造函数148
- 6.4.4 Server类成员函数148
- 6.4.5 Client类定义152
- 6.4.6 Client类构造函数152
- 6.4.7 Client类成员函数153
- 6.5 SoftwareSerial库158
- 6.5.1 构造函数159
- 6.5.2 begin( )160
- 6.5.3 read( )160
- 6.5.4 print( )和println( )161
- 6.5.5 使用限制164
- 6.6 EEPROM库165
- 6.6.1 read( )165
- 6.6.2 write( )166
- 6.7 Wire库166
- 6.7.1 IIC总线概述166
- 6.7.2 TwoWire类定义167
- 6.7.3 begin( )168
- 6.7.4 requestFrom( )168
- 6.7.5 available ( )169
- 6.7.6 receive( )169
- 6.7.7 beginTransmission( )170
- 6.7.8 endTransmission( )170
- 6.7.9 send( )171
- 6.7.10 onReceive( )172
- 6.7.11 onRequest( )173
- 6.8 Servo库174
- 6.8.1 构造函数175
- 6.8.2 attach()176
- 6.8.3 write( )177
- 6.8.4 writeMicroseconds( )177
- 6.8.5 read( )178
- 6.8.6 readMicroseconds( )178
- 6.8.7 attached( )178
- 6.8.8 detach( )179
- 6.9 Stepper库179
- 6.9.1 步进电机概述179
- 6.9.2 步进电机的基本参数180
- 6.9.3 步进电机的优缺点181
- 6.9.4 步进电机的工作原理181
- 6.9.5 步进电机的控制电路183
- 6.9.6 Stepper类定义185
- 6.9.7 构造函数186
- 6.9.8 setSpeed( )188
- 6.9.9 step( )188
- 6.10 TLC5940库189
- 6.10.1 Tlc5940类的定义190
- 6.10.2 init( )191
- 6.10.3 update( )192
- 6.10.4 set( )193
- 6.10.5 get( )194
- 6.10.6 setAll( )194
- 6.10.7 clear( )195
- 6.11 OneWire库195
- 6.11.1 单总线的结构195
- 6.11.2 单总线控制方式195
- 6.11.3 单总线信号形式196
- 6.11.4 OneWire类198
- 6.11.5 构造函数200
- 6.11.6 reset( )200
- 6.11.7 write_bit( )201
- 6.11.8 read_bit( )202
- 6.11.9 write( )202
- 6.11.10 read( )203
- 6.11.11 select( )203
- 6.11.12 skip( )204
- 6.12 XBee库204
- 6.12.1 XBee类定义204
- 6.12.2 构造函数205
- 6.12.3 begin( )206
- 6.12.4 readPacket( )206
- 6.12.5 send( )209
- 6.13 创建自己的库210
- 6.13.1 库的功能—Morse210
- 6.13.2 MorseCode类的定义213
- 6.13.3 MorseCode类的成员函数214
- 6.13.4 MorseCode库的使用222
- 6.13.5 关键字的定义223
- 第7章 无线模块的应用224
- 7.1 APC220224
- 7.1.1 APC220性能指标224
- 7.1.2 模块引脚定义226
- 7.1.3 模块的使用226
- 7.1.4 注意事项227
- 7.2 DFduino wireless228
- 7.2.1 DFduino wireless性能指标228
- 7.2.2 模块引脚定义229
- 7.2.3 模块的使用229
- 7.3 Bluetooth V3231
- 7.3.1 Bluetooth V3性能指标231
- 7.3.2 模块引脚定义232
- 7.3.3 模块的使用232
- 7.4 XBee和XBee PRO234
- 7.4.1 XBee及XBee PRO性能指标235
- 7.4.2 模块引脚定义235
- 7.4.3 模块的使用236
- 7.4.4 程序设计236
- 第三篇 应用篇
- 第8章 打造自己的遥控履带车242
- 8.1 履带车的驱动242
- 8.1.1 实现功能242
- 8.1.2 所需器材242
- 8.1.3 硬件连接243
- 8.1.4 程序设计246
- 8.1.5 MotorCar类251
- 8.1.6 类的应用255
- 8.2 添加感知器件257
- 8.2.1 实现功能257
- 8.2.2 所需器材257
- 8.2.3 器材介绍257
- 8.2.4 硬件连接258
- 8.2.5 程序设计258
- 8.3 添加无线模块261
- 8.3.1 实现功能261
- 8.3.2 所需器材261
- 8.3.3 硬件连接261
- 8.3.4 程序设计262
- 8.4 制作遥控器264
- 8.4.1 实现功能264
- 8.4.2 所需器材265
- 8.4.3 硬件连接265
- 8.4.4 程序设计265
- 8.5 履带车遥控调速267
- 8.5.1 实现功能267
- 8.5.2 程序设计267
- 8.6 添加无线摄像头272
- 8.6.1 实现功能272
- 8.6.2 所需器材272
- 8.6.3 器材介绍272
- 8.6.4 硬件连接273
- 8.6.5 程序设计277
- 8.7 环境信息获取器件283
- 8.7.1 实现功能283
- 8.7.2 所需器材284
- 8.7.3 器材介绍284
- 8.7.4 硬件连接285
- 8.7.5 程序设计286
- 第9章 仿生机器人295
- 9.1 遥控机械臂295
- 9.1.1 实例功能295
- 9.1.2 器材列表295
- 9.1.3 搭建硬件环境296
- 9.1.4 安装控制部分298
- 9.1.5 Wii游戏手柄298
- 9.1.6 机械臂程序设计300
- 9.2 双足机器人304
- 9.2.1 实例功能304
- 9.2.2 器材列表304
- 9.2.3 搭建硬件环境305
- 9.2.4 双足机器人程序设计307
- 9.2.5 PC调试软件编写310
- 9.2.6 双足机器人的调试317
- 附录A Arduino引脚与AVR单片机管脚对应关系319
- 附录B Arduino扩展板320
- 附录C 其他可扩展模块322