水位传感器(water sensor),顾名思义,就是测试水位的。通过代码读取模拟值来判断水位高低。输出值范围通常为 480~710(具体取决于传感器)。值越大,水位越高(部分传感器可能相反,需实测校准)
水位传感器有三个引脚,连线方式如下:
- VCC → Arduino 5V
- GND → Arduino GND
- OUT → 模拟输出引脚:连到 Arduino模拟输入引脚(如 A0)
Arduino 代码示例
基础代码(直接读取模拟值)
#define SENSOR_PIN A0 // 水位传感器连接至 A0
void setup() {
Serial.begin(9600); // 初始化串口
}
void loop() {
int sensorValue = analogRead(SENSOR_PIN); // 读取模拟值(0~1023)
Serial.print("Water Level: ");
Serial.println(sensorValue);
delay(1000); // 每秒读取一次
}
进阶代码(控制继电器/水泵)
应用场景:自动鱼缸水位控制
#define SENSOR_PIN A0
#define RELAY_PIN 4 // 继电器控制水泵
#define WATER_LOW 550 // 低水位阈值
#define WATER_HIGH 640 // 高水位阈值
void setup() {
Serial.begin(9600);
pinMode(RELAY_PIN, OUTPUT);
}
void loop() {
int level = analogRead(SENSOR_PIN);
Serial.print("Water Level: ");
Serial.println(level);
if (level < WATER_LOW) {
digitalWrite(RELAY_PIN, HIGH); // 水位过低,启动水泵
Serial.println("Pump ON - Adding Water");
} else if (level > WATER_HIGH) {
digitalWrite(RELAY_PIN, LOW); // 水位过高,关闭水泵
Serial.println("Pump OFF - Water Level OK");
}
delay(1000);
}
校准与注意事项
校准:将传感器浸入不同水位,记录对应的 analogRead 值,调整阈值(如 WATER_LOW 和 WATER_HIGH)。
延长传感器寿命:
仅在读取时供电(通过数字引脚控制 VCC)。
避免腐蚀:
不要让 PCB 长期浸泡在水中。
补充参考示例
LED 亮度随水位变化:
int outputValue = map(sensorValue, 570, 800, 0, 255); // 映射到 PWM 范围
analogWrite(ledPin, outputValue); // 控制 LED 亮度
物联网水位监测:结合树莓派或 OBLOQ 模块上传数据。
如果需要更复杂的逻辑(如多级报警或云平台集成),可进一步扩展代码。