推荐学习资料:
- 官网参考资料 https://www.arduino.cc/reference/en/
- Arduino公开课 http://ardui.co/basic
- 一个内容非常丰富的网站 https://randomnerdtutorials.com/projects-arduino/
目录
项目1:Arduino基本输入输出电路(任务序号 1)
项目2:PWM实现变色LED灯 (任务序号 2)
项目3:用电位器实现调光LED灯 (任务序号 3)
项目4:用模拟温度传感器LM35实现温度测量(任务序号 4)
项目5:用光敏电阻实现手机的自动屏幕亮度效果(任务序号 5)
项目6:用蜂鸣器演奏简单的乐曲(任务序号 6、7)
项目7:利用一位数码管实现0-9数字的显示(任务序号 8、9)
项目8:利用四位数码管实现动态扫描显示(任务序号 10、11)
项目9:利用MAX7219点阵模块实现形状符号显示(任务序号 12)
项目10:利用数字温度传感器18B20+四位数码管显示温度值(任务序号 13)
项目11:利用数字温湿度传感器DHT11+四位数码管显示温湿度值(任务序号 14)
项目12:按键消抖(任务序号 15)
项目13:Arduino外部中断(任务序号 16)
项目14:定时器中断(任务序号 17)
项目15:实时时钟 + 四位数码管显示时间 + 按键调表 (任务序号 18、19、20)
项目1. Arduino基本输入输出电路(任务序号 1)
(由一个小组独立完成)
图文教程详细目录
- Arduino的基本输入输出函数
(详细介绍pinMode、digitalWrite、digitalRead三个函数的参数及用法)- 上拉电阻在输入电路中的作用
(结合pinMode函数的参数介绍何谓上拉电阻、在读取按键输入时,分别使用无上拉、内置上拉和外置上拉,编程演示其异同)- 限流电阻在输出电路中的作用
(查资料了解Arduino GPIO端口能够输入和输出的最大电流是多少,查资料了解红、绿、蓝三色LED正常工作的电流范围是多少,说明在GPIO端口接LED为何要串接限流电阻,一般串接多大阻值的限流电阻)- 大电流驱动电路
(由于Arduino GPIO端口输出电流有限,不能直接驱动电机、继电器等需要较大电流的设备,因此需要使用三极管或场效应管设计驱动电路,画出三极管或场效应管驱动继电器的电路图,并说明其工作原理)
项目2. PWM实现变色LED灯 (任务序号 2)
(由一个小组独立完成)
要求:使用Arduino Nano + 三色LED模块,实现从串口输入RGB值,LED显示对应的颜色,如串口输入255,0,0,LED为纯红色,输入255,255,0,LED为黄色。
图文教程详细目录:
- 什么是PWM?有何用途?
- Arduino 产生PWM信号的两种方式
2.1 适用于所有GPIO的纯软件编程方式
(讲解此方式需给出一个用PWM信号控制板载LED灯亮度变化的示例代码)
2.2 仅适用于6个端口的硬件方式
(讲解此方式重点介绍AnalogWrite函数的用法)
3 串口输入输出的基本方法(给出最简单的代码示例)
4 串口控制变色灯的实现(Fritzing绘制的电路图、工作原理的说明、包含完整注释的源代码、map函数的用法)
项目3. 用电位器实现调光LED灯(任务序号 3)
(由一个小组独立完成)
要求:通过旋转电位器(可变电阻)改变一个外接LED灯的亮度
- Arduino 模数转换函数 AnalogRead的用法
(在哪些引脚上可用,给出一个以可变电阻分压为输入,从串口输出模数转换数值的例程)
2.1 用电位器实现调光LED灯(使用AanlogWrite函数,即项目2中的2.2方式)
(Fritzing绘制的电路图、工作原理的说明,包含完整注释的源代码)
2.2 用电位器实现调光LED灯(使用软件编程的方法,即项目2中的2.1方式)
(工作原理的说明,包含完整注释的源代码,与2.1代码的比较)
项目4. 用模拟温度传感器LM35实现温度测量(任务序号 4)
(由一个小组独立完成)
要求:使用LM35传感器,从串口输出当前环境温度
图文教程详细目录
- 如何通过https://www.alldatasheet.com/网站检索LM35的datasheet(说明书)
- 如何对照datasheet来分辨LM35的引脚和了解工作原理
- 用万用表测量LM35电压输出引脚的电压并手动换算温度
(不接Arduino的情况下,用万用表测量LM35输出引脚的电压并手动换算温度,改变LM35所处环境的温度,观察电压的变化,此节的目的是理解原理)- 实现温度测量 (Fritzing绘制的电路图、工作原理的说明、包含完整注释的源代码、map函数的用法)
项目5. 光敏电阻实现手机的自动屏幕亮度效果(任务序号 5)
(由一个小组独立完成)
要求:在光线强的地方,自动增强LED的亮度,在光线弱的地方,自动增强LED的亮度
图文教程详细目录
- 5506型光敏电阻的主要参数及其在测光电路中的接法
(参数主要介绍亮电阻和暗电阻,可参考购买的网店页面介绍 https://detail.tmall.com/item.htm?spm=a1z10.3-b.w4011-3660415149.42.621365aerMcRtl&id=574358540746&rn=91d85a52ccf5c88842b7a54e9754504a&abbucket=19)- 用万用表测量光敏电阻的阻值,观察其阻值随光线强弱的变化情况
此节的目的是理解原理)- 实现亮度测量(将光敏电阻的分压值进行模数转换,并通过串口输出) (Fritzing绘制的电路图、工作原理的说明、包含完整注释的源代码)
- 实现手机的自动屏幕亮度效果(Fritzing绘制的电路图、工作原理的说明、包含完整注释的源代码)
项目6. 用蜂鸣器演奏简单的乐曲(任务序号 6、7)
(两个小组合作完成,自主分工)
图文教程详细目录
- 什么是无源蜂鸣器和有源蜂鸣器(有什么特点,适用于什么场景)
- 写一个用旋转电位器连续改变蜂鸣器音调的程序
(Fritzing绘制的电路图、工作原理的说明、包含完整注释的源代码)- Arduino中与音调有关的两个函数(tone 和 noTune)
- 写一个连续播放7个音符,每个音符时长1秒的程序 (包含完整注释的源代码)
- 把乐谱转换为播放程序的基本方法(需要哪些变量,以什么方式存储)
- 编程实现播放《两只老虎》(包含完整注释的源代码)
- 微动开关(按键)的结构、引脚及电路连接方法
- 实现7键电子琴 (Fritzing绘制的电路图、工作原理的说明、包含完整注释的源代码)
项目7. 利用一位数码管实现0-9数字的显示(任务序号 8、9)
(两组合作,一组完成1-4,另一组完成5-7)
图文教程详细目录
- 一位数码管的结构原理
(何谓共阴、共阳?在电路连接和软件编程方面有何区别)- 一位数码管与Arduino的连接电路
- 设计0-9数字显示用的字形表
(如何设计?共阴和共阳有何区别?如何在程序中存储?能显示哪些英文字母?)- 编写三个例程(包含完整注释的源代码)
4.1 串口输入数字n,则显示数字n
4.2 0-9循环显示,每个数字显示1秒
4.3 连接一个微动开关(按键),按一下,显示一个数字,0-9循环。(Friting绘制电路图)- 74HC595的引脚及其功能
(下载74HC595的datasheet,了解其引脚和功能)- 74HC595实现串入并出
(不用Arduino,用微动开关(按键)+8个LED+1片74HC595,实现一个按键驱动的移位亮灯,目的是理解74HC595的基本工作原理)- 用74HC595实现4.2程序
(使用Arduino的shiftOut函数,重点介绍函数用法、电路连接,Fritzing绘出电路图)
项目8. 利用四位数码管实现动态扫描显示(任务序号 10、11)
(两个小组完成,共同完成1-2,分别完成3、4)
图文教程详细目录
- 探究视觉暂留效应与扫描现实刷新速率
(用4个LED串接470欧限流电阻后接到Arduino板相邻的四个口线上,编写简单的“流水灯”程序,改变每个LED点亮的时间,确定人眼看上去四个LED同时亮且感觉不到闪烁的点亮时间是多少)- 四位数码管的电路结构与显示原理
(什么是位选、什么是段选、共阴与共阳的区别、显示4位数字,需要多少条口线?显示n位数字呢?)- Arduino直接连接四位数码管实现四位阿拉伯数字显示
(Friting绘制电路图(注意每个段都要加470欧姆限流电阻),程序原理说明,包含完整注释的源代码)- Arduino + 74HC595 + 四位数码管实现动态扫描显示
(Friting绘制电路图(注意每个段都要加470欧姆限流电阻),程序原理说明,包含完整注释的源代码,可参考项目6的相关代码)
项目9. 利用MAX7219点阵模块实现形状符号显示(任务序号 12)
图文教程详细目录
- MAX7219显示驱动芯片的功能特性
(从http://www.alldatasheet.com检索并下载MAX7219说明书,介绍:芯片主要功能、性能参数、引脚、工作原理等)- 8x8LED点阵屏的内部结构与原理(与项目8第2节的内容相类比,本质上是一样的)
- Arduino + MAX7219 + 8x8点阵的硬件电路连接
(分别画出连接1片8x8点阵的电路和多个MAX7219+8x8点阵级联的情况)- 显示8x8点阵图形的程序实现(包含完整注释的源代码)
(顺便介绍一下取字模软件的用法)
项目10:利用数字温度传感器DS18B20+四位数码管显示温度值(任务序号 13)
Guide for DS18B20 Temperature Sensor with Arduino | Random Nerd Tutorials https://randomnerdtutorials.com/guide-for-ds18b20-temperature-sensor-with-arduino/
图文教程详细目录
- DS18B20 数字温度传感器的功能特性
(从http://www.alldatasheet.com检索并下载DS18B20说明书,介绍:芯片主要功能、性能参数、引脚、典型电路连接方法等)- DS18B20所需的OneWire库和DallasTemperature库的安装与使用
2.1 在Arduino IDE中安装库的方法(“项目”—“添加库”—“管理库”)
2.2 通过网络下载手动安装库的方法
(OneWire库下载地址:https://github.com/PaulStoffregen/OneWire)
(DallasTemperature库下载地址:https://github.com/milesburton/Arduino-Temperature-Control-Library)- DS18B20+四位数码管显示温度值
(硬件电路图、包含注释的完整代码)- 在3的基础上实现温度报警功能
(硬件电路图、包含注释的完整代码,当温度高于或低于某设定值时,蜂鸣器发出报警声)
项目11:利用数字温湿度传感器DHT11+四位数码管显示温湿度值(任务序号 14)
图文教程详细目录
- DHT11 数字温度传感器的功能特性
(从http://www.alldatasheet.com检索并下载DHT11说明书,介绍:芯片主要功能、性能参数、引脚、典型电路连接方法等)- DHT11 Arduino库的安装与使用
2.1 在Arduino IDE中安装库的方法(“项目”—“添加库”—“管理库”)
2.2 通过网络下载手动安装库的方法
(该库下载地址:https://github.com/adafruit/DHT-sensor-library)- DHT11+四位数码管显示温度值
(硬件电路图、包含注释的完整代码)- 在3的基础上实现温湿度报警功能
(硬件电路图、包含注释的完整代码,当温湿度高于或低于某设定值时,蜂鸣器发出报警声)
项目12:按键消抖(任务序号 15)
参考资料:https://blog.csdn.net/tigerrui/article/details/82735721
图文教程详细目录
- 按键抖动及消抖的基本原理介绍
(按键抖动的危害(给出一个简单的示例程序),软件消抖与硬件消抖的基本原理)- 常用软件消抖方法
2.1 纯手工编程实现软件消抖(分别讨论按下消抖、弹起消抖的实现,完整示例程序)
2.2 利用Bounce2函数库实现按键消抖(库的下载安装及完整示例程序)- 硬件消抖电路及其原理
(画出电路图,说明原理)
项目13:Arduino外部中断(任务序号 16)
参考资料:
https://blog.csdn.net/c80486/article/details/52622035
https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/
图文教程详细目录
- 中断的概念、分类及其用途
(内部中断与外部中断的区别,在Arduino中的具体体现)- Arduino中的外部中断
2.1 支持外部中断输入的引脚
2.2 Arduino中断相关函数及其用法 (attachInterrupt() 与 detachInterrupt() )
(重点介绍 attachInterrupt函数及其参数,编程演示不同的中断触发类型(LOW、CHANGE、RISING、FALLING))- 中断应用示例程序
3.1 编写一个手动方式实现PWM十档调光的程序(不使用AnalogWrite函数,手工编写代码生成PWM信号(可参考项目2的2.1节),外接一个按键,每按一下键,亮度在1-10档间循环,用查询的方式检测按键)
3.2 改为用中断的方式检测按键,其他均同上,比较两者的差别(编程复杂度方面,实际使用效果方面)
项目14:定时器中断(任务序号 17)
参考资料:
https://blog.csdn.net/c80486/article/details/52622035
https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/
图文教程详细目录
- 中断的概念、分类及其用途
(内部中断与外部中断的区别,在Arduino中的具体体现)- Arduino中的定时器中断
2.1 Arduino 定时器中断的基本使用方法与注意事项
2.2 Arduino 定时器中断函数库 MsTimer2的安装与使用
(下载地址:https://github.com/PaulStoffregen/MsTimer2)
2.3 利用Arduino定时器中断来检测按键时长
(外接一个按键,设置一个时长为1ms的定时器中断,按下按键后,统计中断发生的次数,直至按键弹起,此时的次数即是以ms为单位的按键时长,从串口输出)- 综合应用案例
(在2.3的基础上,完成一个进阶的案例:反应时间检测。外接一个按键一个LED等,按下按键后,随机等待10-20秒,LED灯熄灭,当按键者看到LED熄灭时,立即松手让按键弹起,从LED熄灭,到按键弹起,即为人的反应时间,从串口输出,精确到1ms)
项目15:实时时钟 + 四位数码管显示时间 + 按键调表 (任务序号 18、19、20)
图文教程详细目录
- DS3231实时时钟芯片功能与特性
(从http://www.alldatasheet.com检索并下载DS3231说明书,介绍:芯片主要功能、性能参数、封装形式与引脚、工作原理、典型电路连接方法等)- I2C通信方式原理与应用
(I2C是各类传感器与模块与Arduino通信的最常用方式之一,重点介绍I2C的特点、Arduino的相关引脚、相关库的安装与使用)- DS3231实时时钟模块的原理图
(检索DS3231实时时钟模块的电路图,说明电路各部分的功能,说明模块各引脚的功能)- DS3231实时时钟的基本实现
(利用I2C库和DS3231库实现从串口每隔1S输出一次年月日星期时分秒信息,实现从串口输入“YYYYMMDDHHMMSS”格式的信息后,实现调表功能,写出包含完整注释的代码)- DS3231 + 四位数码管显示
(画出电路图,写出包含完整注释的代码,MM.DD 与 MM:SS分别显示5S。)- DS3231 + 四位数码管显示 + 按键调表
(画出电路图,写出包含完整注释的代码,连接几个按键,实现从运行状态到调表状态切换、年月日时分秒字段的切换、数值的增减等)