Untitled
unknown
plain_text
13 days ago
2.1 kB
4
Indexable
#include <Wire.h> #include <NewPing.h> #include <LiquidCrystal_I2C.h> #define TdsSensorPin A0 // Analog pin for TDS sensor #define VREF 5.0 // Reference voltage (5V for Arduino Uno) #define SCOUNT 30 // Number of samples for averaging #define TRIG_PIN 9 // Ultrasonic sensor trigger pin #define ECHO_PIN 10 // Ultrasonic sensor echo pin LiquidCrystal_I2C lcd(0x27, 16, 2); int analogBuffer[SCOUNT]; // Store analog readings int analogBufferIndex = 0; float averageVoltage = 0; float tdsValue = 0; float distance = 0; void setup() { Serial.begin(9600); lcd.init(); lcd.backlight(); pinMode(TRIG_PIN, OUTPUT); pinMode(ECHO_PIN, INPUT); pinMode(TdsSensorPin, INPUT); } void loop() { // Read and store multiple samples for better accuracy long sum = 0; for (int i = 0; i < SCOUNT; i++) { analogBuffer[i] = analogRead(TdsSensorPin); sum += analogBuffer[i]; delay(10); // Small delay between readings } // Calculate average voltage averageVoltage = (sum / SCOUNT) * (VREF / 1024.0); // Convert to voltage // Convert voltage to TDS value tdsValue = (averageVoltage - 0.5) * 500; if (tdsValue < 0) tdsValue = 0; // Avoid negative values // Ultrasonic sensor distance measurement digitalWrite(TRIG_PIN, LOW); delayMicroseconds(2); digitalWrite(TRIG_PIN, HIGH); delayMicroseconds(10); digitalWrite(TRIG_PIN, LOW); distance = pulseIn(ECHO_PIN, HIGH) * 0.034 / 2; // Convert to cm // Display values on LCD lcd.clear(); lcd.setCursor(0, 0); lcd.print("TDS: "); lcd.print(tdsValue); lcd.print(" ppm"); lcd.setCursor(0, 1); lcd.print("Water Lvl: "); lcd.print(distance); lcd.print(" cm"); // Debugging Output in Serial Monitor Serial.print("TDS Value: "); Serial.print(tdsValue); Serial.println(" ppm"); Serial.print("Water Level: "); Serial.print(distance); Serial.println(" cm"); delay(1000); // Wait before next reading }
Editor is loading...
Leave a Comment