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); ///延迟堵塞稍长,串口刷新太快,看不清楚 }
实验现象
水位传感器插入水中(注意最大深度不超过4)cm)
深度较浅时
适中深度
深度较深时
视频
水位led显示
蜂鸣器报警
基础:led点亮,蜂鸣器报警
添加其他显示器供传感器接入