/*
Forum: https://forum.arduino.cc/t/uno-analog-to-digital-data-conversion/1446441
Wokwi: https://wokwi.com/projects/465468745125615617
2026/05/30
ec2021
*/
constexpr byte ledPin {10};
constexpr byte analogPin {A0};
constexpr byte digitalPin {2};
constexpr uint16_t threshold {512};
constexpr unsigned long interval {1000}; // Check the water level every second (1000 ms)
unsigned long lastCheck;
byte ledState;
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
pinMode(digitalPin, INPUT_PULLUP);
Serial.println("Start");
ledOff();
}
void loop() {
if (millis() - lastCheck >= interval) {
lastCheck = millis();
checkWaterLevel();
}
}
void ledOn() {
digitalWrite(ledPin, HIGH);
ledState = HIGH;
}
void ledOff() {
digitalWrite(ledPin, LOW);
ledState = LOW;
}
void checkWaterLevel() {
boolean digitalAlert = !digitalRead(digitalPin);
boolean analogAlert = (analogRead(analogPin) > threshold); // or < threshold depending on realization
if (digitalAlert || analogAlert) {
if (ledState == LOW) {
Serial.println("Water Level LOW");
}
ledOn();
} else {
if (ledState == HIGH) {
Serial.println("Water Level HIGH");
}
ledOff();
}
}