实验准备:
arduino mega2560(uno、Nano及其他型号同理)
led(黄、绿、红)
电阻x3(本次选用680Ω电阻1/4w金属膜电阻,避免led灯烧坏注意电阻值不要太小)
蜂鸣器(这里我用的有源高电平触发)
水位传感器(如下)
water sensor
接线情况(后边根据提供程序接线即可)
实验程序
#define water_sensorspin A1
#define led_yellow 2
#define led_green 3
#define led_red 4
#define buzzpin 7
float ad_value=0; //深度模拟值
float deepcm=0; //实际深度
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(led_yellow,OUTPUT); //设置引脚状态
pinMode(led_green,OUTPUT);
pinMode(led_red,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
ad_value=analogRead(water_sensorspin); //A1引脚获取模拟值赋予变量
Serial.println("Water level monitoring ready");
delay(20);
Serial.println(ad_value); //打印观察模拟值变化
deepcm=(ad_value/702)*4; //经过测量,最深时模拟值约为702,测量深度4cm
Serial.print("此时水的深度为:");
Serial.print(deepcm);
Serial.println("cm");
if(deepcm<1.5) //水位低于1.5cm时
{
delay(20);
digitalWrite(led_yellow,HIGH);
digitalWrite(led_green,LOW);
digitalWrite(led_red,LOW);
digitalWrite(buzzpin,LOW);
}
else if(deepcm<3)
{
delay(20);
digitalWrite(led_yellow,LOW);
digitalWrite(led_green,HIGH);
digitalWrite(led_red,LOW);
digitalWrite(buzzpin,LOW);
}
else if(deepcm>3)
{
delay(20);
digitalWrite(led_yellow,LOW);
digitalWrite(led_green,LOW);
digitalWrite(led_red,HIGH);
digitalWrite(buzzpin,HIGH);
Serial.println("水位太高了,注意!");
}
delay(2000); //延时堵塞稍微长一些,串口刷新太快看不清
}
实验现象
水位传感器插入水中(注意最大深度不得超过4cm)
深度较浅时
适中深度
深度较深时
视频
水位led显示
蜂鸣器报警
基础:led点亮,蜂鸣器报警
给传感器接入增添其他显示