5.9 水位監視システム
5.9.1 水位センサー
水位センサーは、一連の露出した平行線が統合されており、水の量と水滴を測定します。

注意:検出エリアを除き、センサーは防水ではありません。他のエリアに水をこぼすと、ショートする可能性があります。
Arduino IDEで5.9.1Water-Level-Sensorコードを開きます。
#define WaterLevelPin 33
void setup() {
Serial.begin(9600);
pinMode(WaterLevelPin,INPUT);
}
void loop() {
int ReadValue = analogRead(WaterLevelPin);
Serial.println(ReadValue);
delay(500);
}
ESP32 Dev ModuleボードとCOMポートを選択し、コードをアップロードします。

テスト結果:
シリアルモニターを開きます。センサーの検出エリアを濡れた指で触れると、現在検出された値がモニターに表示されます(範囲:0〜4095)。

5.9.2 水位監視システム
Arduino IDEで5.9.2Water-Level-Testing-Systemコードを開きます。
#include <LiquidCrystal_I2C.h>
#define BuzzerPin 16
#define WaterLevelPin 33
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
//Initialize the serial port
Serial.begin(9600);
//Set the water level pin to input mode
pinMode(WaterLevelPin,INPUT);
//Initialize LCD
lcd.init();
//turn on the LCD backlight
lcd.backlight();
//clear displays on LCD
lcd.clear();
ledcAttachChannel(BuzzerPin,1000,8,4);
}
void loop() {
//Read the value of water level sensor
int ReadValue = analogRead(WaterLevelPin);
//Set the display position of cursor
lcd.setCursor(0, 0);
//Set the display position of characters
lcd.print("WaterLevel:");
lcd.setCursor(6, 1);
lcd.print(ReadValue);
//When the detected value exceeds the threshold, the buzzer starts to alarm
if(ReadValue >= 2000)
{
ledcWriteTone(BuzzerPin,659);
delay(100);
ledcWriteTone(BuzzerPin,532);
delay(100);
ledcWriteTone(BuzzerPin,659);
delay(100);
ledcWriteTone(BuzzerPin,0); //Stop alarming
}
delay(500);
lcd.clear();
}
ESP32 Dev ModuleボードとCOMポートを選択し、コードをアップロードします。

テスト結果:
LCDには水位のリアルタイム値が表示されます。水位センサーが水位が200より低いことを検出すると、ブザーが鳴り始めます。
