/********* Pleasedontcode.com ********** Pleasedontcode thanks you for automatic code generation! Enjoy your code! - Terms and Conditions: You have a non-exclusive, revocable, worldwide, royalty-free license for personal and commercial use. Attribution is optional; modifications are allowed, but you're responsible for code maintenance. We're not liable for any loss or damage. For full terms, please visit pleasedontcode.com/termsandconditions. - Project: Flow Management - Source Code NOT compiled for: Arduino Uno - Source Code created on: 2024-08-22 21:58:47 ********* Pleasedontcode.com **********/ /****** SYSTEM REQUIREMENTS *****/ /****** SYSTEM REQUIREMENT 1 *****/ /* detect leakage between two flowmeters and if */ /* detected stop the pump */ /****** END SYSTEM REQUIREMENTS *****/ /****** DEFINITION OF LIBRARIES *****/ #include // https://github.com/hafidhh/FlowSensor-Arduino #include // https://github.com/honvl/Seeed-Xiao-NRF52840-Battery /****** FUNCTION PROTOTYPES *****/ void setup(void); void loop(void); /***** DEFINITION OF DIGITAL INPUT PINS *****/ const uint8_t Sam_YF_S401_OUT_PIN_D2 = 2; // Corrected pin naming convention const uint8_t Sam_YF_S401_OUT_PIN_D3 = 3; // Pin for second flow sensor (for leakage detection) const uint8_t Pump_PIN = 4; // Pin to control the pump /****** DEFINITION OF LIBRARIES CLASS INSTANCES *****/ #define type YFS401 // Define the sensor type FlowSensor Sensor(type, Sam_YF_S401_OUT_PIN_D2); // Initialize FlowSensor object for the first sensor FlowSensor Sensor2(type, Sam_YF_S401_OUT_PIN_D3); // Initialize FlowSensor object for the second sensor unsigned long timebefore = 0; // Variable to track time for flow rate reading unsigned long reset = 0; // Variable to track time for volume reset /****** FUNCTION DEFINITIONS *****/ void count() { Sensor.count(); // Count pulses from the first sensor Sensor2.count(); // Count pulses from the second sensor } void setup(void) { Serial.begin(115200); // Start serial communication at 115200 baud rate Sensor.begin(count); // Initialize the first sensor with the count function Sensor2.begin(count); // Initialize the second sensor with the count function pinMode(Sam_YF_S401_OUT_PIN_D2, INPUT); // Set the first sensor pin as input pinMode(Sam_YF_S401_OUT_PIN_D3, INPUT); // Set the second sensor pin as input pinMode(Pump_PIN, OUTPUT); // Set the pump control pin as output digitalWrite(Pump_PIN, HIGH); // Start with the pump turned on } void loop(void) { // Read flow rate and volume every second if (millis() - timebefore >= 1000) { Sensor.read(); // Read the first sensor data Sensor2.read(); // Read the second sensor data Serial.print("Flow rate (L/minute) : "); Serial.println(Sensor.getFlowRate_m()); // Print flow rate of the first sensor Serial.print("Volume (L) : "); Serial.println(Sensor.getVolume()); // Print volume of the first sensor // Check for leakage between the two flowmeters if (Sensor.getFlowRate_m() != Sensor2.getFlowRate_m()) { Serial.println("Leak detected! Stopping the pump."); digitalWrite(Pump_PIN, LOW); // Stop the pump if a leak is detected } timebefore = millis(); // Update time tracker } // Reset volume every 60 seconds if (millis() - reset >= 60000) { Sensor.resetVolume(); // Reset the volume of the first sensor Sensor2.resetVolume(); // Reset the volume of the second sensor reset = millis(); // Update reset time tracker } } /* END CODE */