(1)本书有国内资深的Arduino开发者、Arduino中文社区创始人陈吕洲编写,体系结构清晰,由浅入深,适合初学者学习,亦适合开发者查阅。
(2)在Arduino中文社区(www.arduino.cn/)网站上提供本书相关问题的线上解答,让你学习无忧。
(3)Genuino01是一个极具特色的Arduino开发板,使用它可以完成一些传统单片机或者Arduino难以胜任的工作,制作更为惊艳的作品;借助intelCurie模组上的模式匹配引擎,甚至还可以进行机器学习操作。
Genuino01是一个极具特色的Arduino开发板,它基于IntelCurie模组,不仅有着和ArduinoUNO一样的特性和外设,还集成了低功耗蓝牙(BLE)和六轴姿态传感器(IMU)功能,借助IntelCurie模组上模式匹配引擎,甚至可以进行机器学习操作。因此,使用Genuino01可以完成一些传统单片机或者Arduino难以胜任的工作,制作更为惊艳的作品。
本书以清晰的结构讲述Genuino01开发基础,内容涵盖Arduino编程基础知识和Genuino01高级API的使用。
全书共9章,第1章简述Arduino与Genuino01的历史、软硬件及开发环境使用方法;第2~4章讲解Arduino核心API的使用方法;第5~9章讲解Genuino01独有的CurieAPI和u8g2驱动显示设备的方法。完成本书的学习后,可以具备大多数常见项目的开发能力。
本书主要针对大学生、研究生和开发者编写,适合入门学习。
第3章I/O的高级应用
掌握数字I/O和模拟I/O的基本操作方法后,就可以完成很多Arduino制作了。除此之外,Arduino还提供了一些I/O口的高级操作。
3.1调声函数
调声函数tone()主要用于Arduino连接蜂鸣器或扬声器发声,其实质是输出一个频率可调的方波,以此驱动蜂鸣器或扬声器振动发声。
tone()
可以让指定引脚产生一个占空比为50%的指定频率的方波。
语法
tone(pin,frequency)
tone(pin,frequency,duration)
参数
pin:需要输出方波的引脚。
frequency:输出的频率,unsignedint型。
duration:方波持续的时间,单位为毫秒。如果没有该参数,Arduino将持续发出设定的音调,直到改变发声频率或者使用noTone()函数停止发声。
返回值
无。
tone()和analogWrite()函数都可以输出方波,不同的是tone()函数输出方波的占空比固定(50%),调节的是方波的频率;而analogWrite()函数输出的频率固定(约490Hz),调节的是方波的占空比。
需要注意的是,同一时间tone()函数仅能作用一个引脚,如果有多个引脚需要使用tone()函数,那必须先使用noTone()函数停止之前已经使用了tone()函数的引脚,再使用tone()函数开启下一个指定引脚的方波输出。
noTone()
停止指定引脚上的方波输出。
语法
noTone(pin)
参数
pin:需要停止方波输出的引脚。
返回值
无。
下面将使用tone()函数驱动蜂鸣器播放曲子。
3.1.1蜂鸣器发声
无源蜂鸣器模块(图31)是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、报警器、电子玩具等电子设备中。
无源蜂鸣器发声需要有外部振荡源,即一定频率的方波。不同频率的方波输入,会产生不同的音调。接下来我们要利用这种特性,用tone()函数输出不同的频率的方波,实现Arduino播放简单的曲子。
如果使用的是蜂鸣器模块,则直接连接到扩展板即可;如果使用的是独立的扬声器或者蜂鸣器,可按图32所示方式连接。
在示例程序中使用了两个数组melody[]和noteDurations[]记录整个曲谱,然后遍历这两个数组实现输出曲子的功能。
可以在ArduinoIDE菜单“文件→示例→02.Digital→toneMelody”打开以下程序:
图31蜂鸣器模块
图32蜂鸣器模块使用连接示意图
/*
melody
Playsamelody
Thisexamplecodeisinthepublicdomain.
http://arduino.cc/en/Tutorial/Tone
*/
#include"pitches.h"
//记录曲子的音符
intmelody[]={
NOTE_C4,NOTE_G3,NOTE_G3,NOTE_A3,NOTE_G3,0,NOTE_B3,NOTE_C4};
……
第1章Arduino与IntelCurie
1.1什么是Arduino
1.2为什么使用Arduino作为开发平台
1.3Genuino101与IntelCurie
1.4配置Genuino101开发环境
1.5认识ArduinoIDE
1.6添加Genuino101支持
1.7Blink——Arduino的HelloWorld
第2章Arduino编程基础
2.1Arduino语言
2.2C/C++语言基础
2.2.1数据类型
2.2.2运算符
2.2.3表达式
2.2.4数组
2.2.5字符串
2.2.6注释
2.2.7用流程图来表示程序
2.2.8顺序结构
2.2.9选择结构
2.2.10循环结构
2.3电子元件和扩展模块
2.4Arduino扩展板的使用
2.5数字I/O的使用
2.5.1数字信号
2.5.2流水灯实验
2.5.3按键控制LED实验
2.6模拟I/O的使用
2.6.1模拟信号
2.6.2呼吸灯实验
2.6.3光敏电阻检测环境光实验
2.7数字传感器与模拟传感器的使用
2.8与计算机交流——串口的使用
2.8.1串口输出
2.8.2串口输入
2.8.3串口开关LED实验
2.9时间函数
2.9.1运行时间函数
2.9.2延时函数
2.9.3RTC函数
第3章I/O的高级应用
3.1调声函数
3.1.1蜂鸣器发声
3.1.2简易电子琴
3.2脉冲宽度测量函数
3.3外部中断
3.3.1外部中断的使用
3.3.2外部中断触发蜂鸣器警报实验
第4章使用和编写类库
4.1通过库管理器添加库
4.2手动添加库并使用
4.3编写Arduino类库
4.3.1编写函数
4.3.2编写头文件与源文件
4.3.3关键字高亮
4.3.4建立示例程序
4.3.5类库优化与发布
第5章定时器
5.1定时器中断
5.2定时器输出PWM
第6章串口进阶
6.1串行与并行通信
6.2硬件串口
6.3print和write输出方式的差异
6.4HardwareSerial类成员函数
6.5read和peek输入方式的差异
6.6串口读取字符串
6.7串口事件
6.8串口缓冲区
6.9实验:串口控制RGBLED调光
6.10软件模拟串口通信——SoftwareSerial库的使用
6.10.1SoftwareSerial类成员函数
6.10.2建立软串口通信
6.10.3同时使用多个软串口
第7章显示篇
7.1认识显示设备
7.1.1I2C设备
7.1.2SPI设备
7.2u8g2标准库
7.2.1新建设备对象
7.2.2初始化与缓冲区操作
7.2.3文本显示
7.2.4数据显示
7.2.5中文显示
7.2.6绘制图形
7.2.7图片显示
第8章CurieIMU库的使用
8.1配置IMU及获取数据
8.2解算AHRS姿态
8.3姿态数据可视化
8.4IMU中断检测
8.5神经元与机器学习
第9章存储篇
9.1EEPROM的使用
9.1.1写数据
9.1.2读数据
9.1.3擦除数据
9.2SPIFlash的使用
9.2.1新建文件并写入
9.2.2列出文件
9.2.3读取文件
9.2.4擦除数据
附录AArduino/Genuino101数据手册
附录BASCII码对照表
附录C串口通信可用config配置
附录DZephyr简介
后记
参考文献
温馨提示:请使用宁波大学园区图书馆的读者帐号和密码进行登录