利用水位检测模块(使用数字量输出功能)和蜂鸣器实现水位检测,当水位升高至设定位置时,蜂鸣器发出声响,起到警报作用。 说明:采用有源和无源两种蜂鸣器报警,用串口监视器看到水位值变化。 选做:采用水位检测模块模拟量输出功能读取液位值,采用1602模块显示的程序
时间: 2024-02-13 22:03:50 浏览: 16
好的,以下是实现上述功能的 Arduino 代码:
```C++
// 引入 LiquidCrystal 库
#include <LiquidCrystal.h>
// 定义液晶屏的引脚
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// 定义水位检测模块的数字输出引脚
const int waterLevelPin = 7;
// 定义有源蜂鸣器的数字输出引脚
const int activeBuzzerPin = 8;
// 定义无源蜂鸣器的数字输出引脚
const int passiveBuzzerPin = 9;
// 定义水位警报值
const int waterLevelThreshold = 500;
void setup() {
// 初始化液晶屏
lcd.begin(16, 2);
// 设置水位检测模块的数字输出引脚为输入模式
pinMode(waterLevelPin, INPUT);
// 设置有源蜂鸣器的数字输出引脚为输出模式
pinMode(activeBuzzerPin, OUTPUT);
// 设置无源蜂鸣器的数字输出引脚为输出模式
pinMode(passiveBuzzerPin, OUTPUT);
}
void loop() {
// 读取水位检测模块的数字输出值
int waterLevel = digitalRead(waterLevelPin);
// 将水位值显示在串口监视器上
Serial.println(waterLevel);
// 如果水位超过警报值,有源蜂鸣器发出声音
if (waterLevel > waterLevelThreshold) {
digitalWrite(activeBuzzerPin, HIGH);
} else {
digitalWrite(activeBuzzerPin, LOW);
}
// 如果水位超过警报值,无源蜂鸣器发出声音
if (waterLevel > waterLevelThreshold) {
tone(passiveBuzzerPin, 1000);
} else {
noTone(passiveBuzzerPin);
}
// 读取水位检测模块的模拟量输出值
int analogWaterLevel = analogRead(waterLevelPin);
// 将水位值显示在液晶屏上
lcd.setCursor(0, 0);
lcd.print("Water level:");
lcd.setCursor(0, 1);
lcd.print(analogWaterLevel);
lcd.print(" ");
// 等待一段时间后重复执行
delay(500);
}
```
希望这个程序能够帮助您完成水位检测和显示的功能!