Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <SoftwareSerial.h>
- #define redLed 8
- #define yellowLED 9
- #define greenLED 10
- #define WaterLevelLow A2
- #define WaterLevelMed A1
- #define WaterLevelHigh A0
- #define flowsensor 2
- #define rxPin 3
- #define txPin 4
- SoftwareSerial ss(rxPin, txPin);
- float var1;
- int var2;
- int waterLevel = 0;
- int WaterLevelLowValue = 0;
- int WaterLevelMedValue = 0;
- int WaterLevelHighValue = 0;
- double flow; //Water flow L/Min
- unsigned long currentTime;
- unsigned long lastTime;
- unsigned long pulse_freq;
- void pulse () { // Interrupt function
- pulse_freq++;
- }
- void setup() {
- pinMode(redLed, OUTPUT);
- pinMode(yellowLED, OUTPUT);
- pinMode(greenLED, OUTPUT);
- pinMode(WaterLevelLow, INPUT);
- pinMode(WaterLevelMed, INPUT);
- pinMode(WaterLevelHigh, INPUT);
- pinMode(flowsensor, INPUT);
- digitalWrite(redLed, HIGH);
- digitalWrite(yellowLED, LOW);
- digitalWrite(greenLED, LOW);
- Serial.begin(9600);
- ss.begin(9600);
- attachInterrupt(0, pulse, RISING); // Setup Interrupt
- currentTime = millis();
- lastTime = currentTime;
- }
- void loop () {
- WaterLevelLowValue = analogRead(WaterLevelLow);
- WaterLevelMedValue = analogRead(WaterLevelMed);
- WaterLevelHighValue = analogRead(WaterLevelHigh);
- if (WaterLevelLowValue < 100 && WaterLevelMedValue < 100 && WaterLevelHighValue < 100) {
- waterLevel = 0;//tank is @ 0% Empty
- digitalWrite(redLed, HIGH);
- digitalWrite(yellowLED, LOW);
- digitalWrite(greenLED, LOW);
- }
- else if (WaterLevelLowValue > 100 && WaterLevelMedValue < 100 && WaterLevelHighValue < 100) {
- waterLevel = 30;//tank is @ 30%
- digitalWrite(redLed, LOW);
- digitalWrite(yellowLED, HIGH);
- digitalWrite(greenLED, LOW);
- }
- else if (WaterLevelLowValue > 100 && WaterLevelMedValue > 100 && WaterLevelHighValue < 100) {
- waterLevel = 60;//tank is @ 60%
- digitalWrite(redLed, LOW);
- digitalWrite(yellowLED, LOW);
- digitalWrite(greenLED, HIGH);
- }
- else if (WaterLevelLowValue > 100 && WaterLevelMedValue > 100 && WaterLevelHighValue > 100) {
- waterLevel = 100;//tank is @ 100% Full
- digitalWrite(redLed, LOW);
- digitalWrite(yellowLED, LOW);
- digitalWrite(greenLED, HIGH);
- }
- currentTime = millis();
- // Every second, calculate and print L/Min
- if (currentTime >= (lastTime + 1000))
- {
- lastTime = currentTime;
- // Pulse frequency (Hz) = 7.5Q, Q is flow rate in L/min.
- flow = (pulse_freq / 7.5);
- pulse_freq = 0; // Reset Counter
- Serial.print(flow, DEC);
- Serial.println(" L/Min");
- Serial.println("______________________");
- Serial.print("Water Level: ");
- Serial.println(waterLevel);
- Serial.println("______________________");
- Serial.print("LowValue: ");
- Serial.println(WaterLevelLowValue);
- Serial.print("MedValue: ");
- Serial.println(WaterLevelMedValue);
- Serial.print("HighValue: ");
- Serial.println(WaterLevelHighValue);
- var1 = flow;
- var2 = waterLevel;
- ss.print(var1, 2);
- ss.print("A");
- ss.print(var2);
- ss.print("B");
- ss.print("\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement