如何使用Arduino连接蜂鸣器与温度传感器

您所在的位置:网站首页 arduino温度传感器实验 如何使用Arduino连接蜂鸣器与温度传感器

如何使用Arduino连接蜂鸣器与温度传感器

2024-02-05 04:47| 来源: 网络整理| 查看: 265

实验概述

本实验根据温度传感器的温度变化,利用蜂鸣器播放歌曲 当温度超过30度时,自动播放歌曲葫芦娃

实验所需硬件组件 - 无源蜂鸣器 - 温度传感器(DS18B20) - Arduino UNO开发板 - 公母线 - USB线

蜂鸣器分为有源蜂鸣器和无源蜂鸣器,这里采用的是无源蜂鸣器 无源蜂鸣器 温度传感器(DS18B20) 在这里插入图片描述

Arduino UNO开发板 开发板 公母线 公母线

实验步骤 1. 硬件组装

连线 连线

无源蜂鸣器与Arduino UNO开发板的连接

GND —— GNDI/O —— 引脚9VCC —— 3.3V

温度传感器与Arduino UNO开发板的连接

GND —— GNDDQ —— 引脚7VCC —— 5V

最后用USB线将Arduino UNO开发板与电脑连接

2. 下载arduino开发软件

链接:https://downloads.arduino.cc/arduino-1.8.9-windows.zip

3. 下载源码

链接:https://github.com/zwj-state/Arduino-Uno.git 描述: 源码文件:Active.ino 库:Arduino-Temperature-Control-Library-master.zip 库:OneWire.zip

4. 导入代码以及库

导入源码:文件-打开 导入库(上一步骤中的库):项目-加载库-添加.zip库

5. 编译、上传

编译 上传 在下方见到“编译成功”、“上传成功”字样即完成本步骤

6. 查看串口监视器

通过对温度传感器的操作,改变温度,使得蜂鸣器播放/不播放音乐 串口监视器

在这里插入图片描述

源码

这里是引用

#include #include #define ONE_WIRE_BUS 7 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); float tempC = 0; #define NOTE_D0 -1 #define NOTE_D1 262 #define NOTE_D2 293 #define NOTE_D3 329 #define NOTE_D4 349 #define NOTE_D5 392 #define NOTE_D6 440 #define NOTE_D7 494 #define NOTE_DL1 147 #define NOTE_DL2 165 #define NOTE_DL3 175 #define NOTE_DL4 196 #define NOTE_DL5 221 #define NOTE_DL6 248 #define NOTE_DL7 278 #define NOTE_DH1 523 #define NOTE_DH2 586 #define NOTE_DH3 658 #define NOTE_DH4 697 #define NOTE_DH5 783 #define NOTE_DH6 879 #define NOTE_DH7 987 //以上部分是定义是把每个音符和频率值对应起来,这里用NOTE_D+数字表示音符,NOTE_DH+数字表示上面有点的那种音符,NOTE_DL+数字表示下面有点的那种音符。 #define WHOLE 1 #define HALF 0.5 #define QUARTER 0.25 #define EIGHTH 0.25 #define SIXTEENTH 0.625 //这部分是用英文对应拍子 int tune[] = { NOTE_DH1,NOTE_D6,NOTE_D5,NOTE_D6,NOTE_D0, NOTE_DH1,NOTE_D6,NOTE_D5,NOTE_DH1,NOTE_D6,NOTE_D0,NOTE_D6, NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D6,NOTE_D0,NOTE_D6, NOTE_DH1,NOTE_D6,NOTE_D5,NOTE_DH1,NOTE_D6,NOTE_D0, NOTE_D1,NOTE_D1,NOTE_D3, NOTE_D1,NOTE_D1,NOTE_D3,NOTE_D0, NOTE_D6,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D6, NOTE_D5,NOTE_D1,NOTE_D3,NOTE_D0, NOTE_DH1,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D6, NOTE_D5,NOTE_D1,NOTE_D2,NOTE_D0, NOTE_D7,NOTE_D7,NOTE_D5,NOTE_D3, NOTE_D5, NOTE_DH1,NOTE_D0,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D5,NOTE_D6,NOTE_D6, NOTE_D0,NOTE_D5,NOTE_D1,NOTE_D3,NOTE_D0, NOTE_DH1,NOTE_D0,NOTE_D6,NOTE_D6,NOTE_D5,NOTE_D5,NOTE_D6,NOTE_D6, NOTE_D0,NOTE_D5,NOTE_D1,NOTE_D2,NOTE_D0, NOTE_D3,NOTE_D3,NOTE_D1,NOTE_DL6, NOTE_D1, NOTE_D3,NOTE_D5,NOTE_D6,NOTE_D6, NOTE_D3,NOTE_D5,NOTE_D6,NOTE_D6, NOTE_DH1,NOTE_D0,NOTE_D7,NOTE_D5, NOTE_D6, }; //这部分就是整首曲子的音符部分,用了一个序列定义为tune,整数 float duration[]= { 1,1,0.5,0.5,1, 0.5,0.5,0.5,0.5,1,0.5,0.5, 0.5,1,0.5,1,0.5,0.5, 0.5,0.5,0.5,0.5,1,1, 1,1,1+1, 0.5,1,1+0.5,1, 1,1,0.5,0.5,1, 0.5,1,1+0.5,1, 0.5,0.5,0.5,0.5,1+1, 0.5,1,1+0.5,1, 1+1,0.5,0.5,1, 1+1+1+1, 0.5,0.5,0.5+0.25,0.25,0.5+0.25,0.25,0.5+0.25,0.25, 0.5,1,0.5,1,1, 0.5,0.5,0.5+0.25,0.25,0.5+0.25,0.25,0.5+0.25,0.25, 0.5,1,0.5,1,1, 1+1,0.5,0.5,1, 1+1+1+1, 0.5,1,0.5,1+1, 0.5,1,0.5,1+1, 1+1,0.5,0.5,1, 1+1+1+1 }; //这部分是整首曲子的节拍部分,也定义个序列duration,浮点(数组的个数和前面音符的个数是一样的,一一对应) int length;//这里定义一个变量,后面用来表示共有多少个音符 int tonePin=9;//蜂鸣器的pin void setup() { pinMode(tonePin,OUTPUT);//设置蜂鸣器的pin为输出模式 length = sizeof(tune)/sizeof(tune[0]);//这里用了一个sizeof函数,可以查出tone序列里有多少个音符 ensors.begin();//启动单总线 Serial.begin(9600);//波特率设置为9600 } void loop() { sensors.requestTemperatures();//获取温度值 tempC = sensors.getTempCByIndex(0);//将温度的值赋给tempC delay(1000);//等待5秒后 Serial.println(tempC);//输出温度值 if(tempC>30)//当温度超过30度,蜂鸣器开始播放葫芦娃 { for(int x=0;x


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3