文章目录
- Arduino 学习
- 硬件认识
- Arduino UNO 主要元器件
- Arduino 端口
- 软件认识
- Arduino IDE
- Arduino 程序架构
- 程序基础内容简述
-
- 扩展电子部件控制
- LED发光二极管
-
- 按键及蜂鸣器控制
-
- 数码管控制
- 电位器与PWM控制
- 光敏电阻与火焰传感器
-
- 抢答器与温度报警器
- 超声波发射器
-
- LCD
Arduino 学习
硬件认识
Arduino UNO 主要元器件
- 接口类,包括外部电源插座、USB接口、TCSP下载接口与各种端口,负责信号与电源的输入输出
- 芯片类,包括USB接口芯片与AVR单片机(主处理器),负责驱动与计算功能的实现
- 指示灯类,包括数字门13的LED、TX和RX指示灯和电源指示灯,指示连接和通信状态
- 其它元器件,包括复位开关、晶体振荡器、CV稳压表和电容等
Arduino 端口
-
数字 I/O端口
输入和输出数字信号,有高电平和低电平两种形式
-
模拟 I/O端口
输入模拟信号和数字信号,不能输出模拟信号,可以测量端口连接的电压以供程序使用
-
电源接口
- IOREF:使盾板适配主板提供不同电压
- RESET:复位端口,功能与复位按钮相同
- 3.3V和5V:两种规格的电压输出
- GND:接地
- Vin:当外部直流电源接入电源插座时,可以通过Vin向外部供电;也可以通过此引脚向UNO直接供电
软件认识
Arduino IDE
Arduino 程序架构
-
声明变量及接口名称、定义宏
int val;
int ledPin = 13;
#define Do 262
-
setup()
——函数在程序开始时使用,可以初始化变量、接口模式、启用库等
pinMode(ledPin,OUTPUT);
-
loop()
——位于初始化之后,主函数部分,让你的程序在Arduino循环运行
-
此外还可定义其它函数
程序基础内容简述
数据类型
格式:数据类型名(储存空间占用字节数,取值范围)
-
数据流
-
单字符
- char (1,-128[-28]~127[27-1])
- unsigned char (1,0~255)
-
词
-
整数
- int (2,-32768[-215]~32767[215-1])
- long (4,-2 147 483 648~2 147 483 647)
- short (2,-32768~32767)
- unsigned int (2,0~65535)
- unsigned long (4,0~4 294 967 296)
-
浮点数
- float (4,-3.4028235E+36~3.4028235E+36)
- double (4,-3.4028235E+36~3.4028235E+36)
-
布尔值
-
数据结构
-
标识符
sign是首位的数据标志位,代表数据的正负
时间控制⏲
计时函数
延时函数
-
delay(ms)
-
delayMicroseconds(us)
串口通信📞
端口间通信的类型
- 并行通信
- 串行通信
- 单工通信(仅单向通信)
- 半双工通信(异时双向通信)
- 双工通信(同时双向通信)
Arduino 串口通信
Arduino通过HardwareSerial
类来实现串口通信,在头文件HardwareSerial.h
中定义了一个该类的对象Serial
,直接使用类的成员函数就可简单地实现串口通信
-
Serial.begin(Baudrate);
设置串行波特率(每秒钟传送的二进制位数),位于setup()
-
Serial.available();
判断串口是否收到数据,返回值为int型,无参数
-
Serial.read(pin);
读串口并返回收到的数据,若串口缓冲区有数据则读取1Byte数据,否则返回-1
-
Serial.print(data,encoding);
从串行端口输出数据data,encoding为编码格式,可以取值DEC(十进制,默认)、HEX(十六进制)、OCT(八进制)和BIN(二进制)
-
Serial.println(data,encoding);
同上一函数,不同在于输出数据会自动换行
-
Serial.write();
输出字符或字符串时与print无区别,但是输出数值时,write输出数据本身,而print则会将其转化为可显示的ASCII字符
扩展电子部件控制
LED发光二极管
LED工作原理与连接电路
应用实例
BLINK
电路连接
单一LED灯按前述方式连接
程序设置
int ledPin = 11;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
digitalWrite(ledPin,HIGH);
delay(100);
digitalWrite(ledPin,LOW);
delay(100);
}
呼吸灯
电路连接
单一LED灯按前述方式连接
程序设置
int ledPin = 10;
void setup() {
pinMode(ledPin,OUTPUT);
}
void loop() {
for(int i=0;i<=255;i++)
{
analogWrite(ledPin,i);
delay(20);
}
走马灯
交通灯
按键及蜂鸣器控制
按键
应用实例
开关电路
手电筒电路
按键消抖
蜂鸣器
应用实例
简单蜂鸣效果
手动报警器
输出基本音阶
演奏乐曲
数码管控制
电位器与PWM控制
光敏电阻与火焰传感器
光敏电阻
抢答器与温度报警器
超声波发射器
工作原理及操作时序
超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时,具体来说过程可以分解为:
-
使用Arduino采用数字引脚给SR04的Trig引脚至少10μs的高电平信号,触发SR04模块测距功能
-
触发后,模块会自动发送8个40KHz的超声波脉冲,并自动检测是否有信号返回
-
如有信号返回,Echo引脚会输出高电平,高电平持续的时间就是超声波从发射到返回的时间。此时使用pulseIn()
函数获取到测距的结果,并计算出距被测物的实际距离。
时序图如下:
超声波测距实验
测距函数
pulseIn(pin, value, timeout)
用于检测引脚输出的高低电平的脉冲宽度
SR04与Arduino接线示意图
编程
const int trigPin = 9;
const int echoPin = 7;
float distance;
void setup()
{
Serial.begin(9600);
pinMode(trigPin,OUTPUT);
pinMode(echoPin,INPUT);
}
void loop()
{
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
distance = pulseIn(echoPin,HIGH)/58.00;
Serial.print("Distance is ");
Serial.print(distance);
Serial.println("cm.");
delay(300);
}
LCD
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)