//06/06/2022 16:51:37 //sketch_Water_level_ON_OFF_V3 //ELEGOO UNO R3, Classic BT using HC-06 module Elegoo #include #define rxPin 2 #define txPin 3 #define ANALOGPIN A0 SoftwareSerial HC06(rxPin, txPin); #include statistic::Statistic myStats; uint32_t ugStart; uint32_t ugStops; float fgProcessTime; float fgSEM; char cgCmd; int igSensorValue; int igWaterLevel; int igAverage; int igRange; unsigned long lgUpdateTime; void setup(void) { pinMode(rxPin, INPUT); pinMode(txPin, OUTPUT); myStats.clear(); ugStart = millis(); lgUpdateTime = millis(); Serial.begin(9600); HC06.begin(9600); } void loop(void) { if(millis() - lgUpdateTime > 400) //Loop approx every 0.007 seconds (Tweak this up if problems occur) { ugStops = millis(); lgUpdateTime = millis(); //Input from App if(HC06.available()) { //Read data from HC06 cgCmd = HC06.read(); Serial.write(cgCmd); // Run / Stop app's options if(cgCmd == "A") { Serial.println("Function is on"); } else if(cgCmd == "B") { Serial.println("Function is off"); } } //Output else { // Read the input on analog pin A0: igSensorValue = analogRead(A0); // Convert the analog reading (which goes from 0 - 1023) to the water-level (0 - 618mm): igWaterLevel = map(igSensorValue, 0, 1023, 0, 618); // Calculus of the Mean, Range, SEM (variation coefficient) and Time myStats.add(igWaterLevel); igAverage = myStats.average(); igRange = myStats.maximum() - myStats.minimum(); fgSEM = myStats.pop_stdev() / myStats.average(); fgProcessTime = (ugStops - ugStart) / 1000; //To PC Arduino Serial Monitor via USB Serial.print("Water level = "); Serial.println(igWaterLevel); Serial.print("Average = "); Serial.println(igAverage); Serial.print("Range = "); Serial.println(igRange); Serial.print("SEM = "); Serial.println(fgSEM, 4); Serial.print("time(s): "); Serial.println(fgProcessTime, 1); //To Android App via Bluetooth HC06.print(igWaterLevel); HC06.print("x"); HC06.print(igAverage); HC06.print("x"); HC06.print(igRange); HC06.print("x"); HC06.print(fgSEM,4); HC06.print("x"); HC06.print(fgProcessTime, 1); HC06.println(); } } }