#define TRIG_PIN 5 // ขา Trigger
#define ECHO_PIN 18 // ขา Echo
#define WIDTH 0.30 // ความกว้างของพื้นที่สี่เหลี่ยม (เมตร)
#define HEIGHT 0.40 // ความสูงของพื้นที่สี่เหลี่ยม (เมตร)
void setup() {
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
}
void loop() {
float duration, distance, flowRate;
// ส่งสัญญาณ Trigger
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// อ่านเวลาของ Echo
duration = pulseIn(ECHO_PIN, HIGH);
// คำนวณระยะทาง
distance = duration * 0.034 / 2; // ระยะทางเป็นเซนติเมตร
// คำนวณ Flow rate (ใช้ความเร็วที่คำนวณจากการเปลี่ยนแปลงระยะทาง)
float velocity = distance / (duration / 1000000.0); // ความเร็ว m/s
float area = WIDTH * HEIGHT; // พื้นที่หน้าตัดสี่เหลี่ยม
flowRate = area * velocity; // Flow rate เป็น m^3/s
Serial.print("Flow Rate: ");
Serial.print(flowRate);
Serial.println(" m^3/s");
delay(1000); // ทำการวัดทุกๆ 1 วินาที
}