Arduino 传感器控制实验+源码
Arduino 传感器控制实验+源代码 实验1 LED点灯实验+源码 实验2 温湿度传感器数据采集实验 实验3 声控灯的设计实验 实验4 红外避障传感器实验 实验5 超声波测距离实验 ### Arduino 传感器控制实验知识点详解 #### Arduino简介与特点 - **Arduino定义**: Arduino是一种开源的微控制器平台,它提供了一种易于使用的开发环境,类似于Java和C语言,非常适合初学者学习并进行各种创意项目的开发。 - **Arduino的特性**: - 开放源代码的电路设计与开发界面,用户可以根据需求进行自定义修改。 - 支持ISP下载线,允许用户自我烧录“bootloader”。 - 可以方便地与各种传感器和电子元件(例如红外线、超声波、热敏电阻、光敏电阻、伺服电机等)相连。 - 提供了丰富的I/O端口,包括0~13的数字输入/输出端和0~5的模拟输入/输出端。 - 支持USB接口协议和供电,无需额外电源。 - 具有多种功能端子,如支持ISP下载、单片机TX/RX端子、USBTX/RX端子、AREF端子以及六组PWM端子等。 - 输入电压范围广泛,可以通过USB或外部5V~9V DC输入供电。 - 输出电压为5V DC和3.3V DC。 - 采用了Atmel Atmega168V-10PI单片机。 #### Arduino板&传感器硬件准备 - **Arduino Uno兼容加强版**: - 特点是不需要焊接,可以直接购买已经装配好的版本。 - 需要安装驱动程序,通常可以在购买的网店找到相应的驱动资料。 - 对于部分简化版的Windows 7系统可能需要特别处理才能成功安装驱动,请参考资料或网络寻求解决方案。 - **Arduino Nano Mini版**: - 这个版本需要自行焊接。 - **传感器**: - 包括超声波传感器、红外传感器等,这些传感器通常可以从同一网店购买。 #### Arduino IDE编程环境 - **下载安装**: - 可以通过国内Arduino中文社区提供的链接下载最新版本的Arduino IDE。 - 安装过程简单,只需双击安装包即可完成安装。 #### Arduino基础实验项目 - **实验1: LED点灯实验** - 实验步骤: 1. 将数据线连接至主机USB接口和Arduino板。 2. 使用面包板将LED灯正极连接至数字引脚2,负极连接至GND。 3. 编写程序定义输出引脚2,实现LED灯的闪烁。 - **源代码分析**: ```c++ // led正极接2负极接GND int ledPin = 2; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); // 点亮LED delay(500); // 延时500毫秒 digitalWrite(ledPin, LOW); // 关闭LED delay(500); // 再次延时500毫秒 } ``` - 此代码中定义了一个名为`ledPin`的变量,将其设置为2,表示连接到数字引脚2。 - 在`setup`函数中设置了引脚2为输出模式。 - `loop`函数实现了LED灯的闪烁效果。 - **流水灯源代码**: ```c++ // 利用循环语句设计的流水灯 // 定义引脚2,3,4,5为输出模式,分别接4个LED灯的正极,LED负极通过面包板接GND void setup() { for (int i = 2; i < 6; i++) { pinMode(i, OUTPUT); // 配置引脚为输出模式 } } void loop() { for (int i = 2; i < 6; i++) { digitalWrite(i, HIGH); // 点亮 delay(1000); // 休眠1000毫秒 digitalWrite(i, LOW); // 关闭 } } ``` - 该程序实现了四个LED灯依次点亮再熄灭的效果。 - **实验2: 温湿度传感器数据采集实验** - 实验步骤: - 使用温湿度传感器采集模拟信号,并将其传送到Arduino Uno板的模拟A0端口。 - 需要注意的是,对于不同类型的温湿度传感器(如DS18B20TO-92和DH11),其参数转换方法可能会有所不同。 - **源代码分析**: ```c++ float temp; int tempPin = 0; // 接模拟0或A0端 void setup() { Serial.begin(9600); } void loop() { temp = analogRead(tempPin); // 从模拟A0端采集电压数据存到变量temp // temp = temp * 0.48828125; // DS18B20TO-92温度传感器的参数:电压转换成温度 temp = temp * 0.031728125; // DH11温度传感器:电压转变成湿度的参数 Serial.print("TEMPERATURE="); Serial.print(temp); // 显示温度值 } ``` - 这段代码首先定义了两个变量`temp`和`tempPin`,其中`tempPin`用于指定模拟读取的端口(即A0端口)。 - 在`setup`函数中初始化串行通信端口,速率为9600bps。 - `loop`函数实现了温湿度数据的读取与显示。 - 通过`analogRead`函数读取A0端口的数据,并根据所使用的传感器类型调整参数转换公式。 以上实验不仅帮助初学者熟悉Arduino的基本操作,同时也能够学习如何利用不同的传感器进行数据采集与处理。这些基础知识是进一步开发更复杂项目的基础。