Advertisement
safwan092

Untitled

Feb 18th, 2023
27
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.24 KB | None | 0 0
  1. #include <SoftwareSerial.h>
  2.  
  3. #define redLed 8
  4. #define yellowLED 9
  5. #define greenLED 10
  6. #define WaterLevelLow A2
  7. #define WaterLevelMed A1
  8. #define WaterLevelHigh A0
  9. #define flowsensor 2
  10. #define rxPin 3
  11. #define txPin 4
  12.  
  13. SoftwareSerial ss(rxPin, txPin);
  14.  
  15. int waterlevelvalue = 116;
  16. float var1;
  17. int var2;
  18. int waterLevel = 0;
  19. int WaterLevelLowValue = 0;
  20. int WaterLevelMedValue = 0;
  21. int WaterLevelHighValue = 0;
  22. double flow; //Water flow L/Min
  23. unsigned long currentTime;
  24. unsigned long lastTime;
  25. unsigned long pulse_freq;
  26.  
  27. void pulse () { // Interrupt function
  28. pulse_freq++;
  29. }
  30.  
  31. void setup() {
  32. pinMode(redLed, OUTPUT);
  33. pinMode(yellowLED, OUTPUT);
  34. pinMode(greenLED, OUTPUT);
  35. pinMode(WaterLevelLow, INPUT);
  36. pinMode(WaterLevelMed, INPUT);
  37. pinMode(WaterLevelHigh, INPUT);
  38. pinMode(flowsensor, INPUT);
  39. digitalWrite(redLed, HIGH);
  40. digitalWrite(yellowLED, LOW);
  41. digitalWrite(greenLED, LOW);
  42. Serial.begin(9600);
  43. ss.begin(9600);
  44. attachInterrupt(0, pulse, RISING); // Setup Interrupt
  45. currentTime = millis();
  46. lastTime = currentTime;
  47. }
  48.  
  49. void loop () {
  50. WaterLevelLowValue = analogRead(WaterLevelLow);
  51. WaterLevelMedValue = analogRead(WaterLevelMed);
  52. WaterLevelHighValue = analogRead(WaterLevelHigh);
  53. if (WaterLevelLowValue < waterlevelvalue && WaterLevelMedValue < waterlevelvalue && WaterLevelHighValue < waterlevelvalue) {
  54. waterLevel = 0;//tank is @ 0% Empty
  55. digitalWrite(redLed, HIGH);
  56. digitalWrite(yellowLED, LOW);
  57. digitalWrite(greenLED, LOW);
  58. }
  59. else if (WaterLevelLowValue > waterlevelvalue && WaterLevelMedValue < waterlevelvalue && WaterLevelHighValue < waterlevelvalue) {
  60. waterLevel = 30;//tank is @ 30%
  61. digitalWrite(redLed, LOW);
  62. digitalWrite(yellowLED, HIGH);
  63. digitalWrite(greenLED, LOW);
  64. }
  65. else if (WaterLevelLowValue > waterlevelvalue && WaterLevelMedValue > waterlevelvalue && WaterLevelHighValue < waterlevelvalue) {
  66. waterLevel = 60;//tank is @ 60%
  67. digitalWrite(redLed, LOW);
  68. digitalWrite(yellowLED, LOW);
  69. digitalWrite(greenLED, HIGH);
  70. }
  71. else if (WaterLevelLowValue > waterlevelvalue && WaterLevelMedValue > waterlevelvalue && WaterLevelHighValue > waterlevelvalue) {
  72. waterLevel = 100;//tank is @ 100% Full
  73. digitalWrite(redLed, LOW);
  74. digitalWrite(yellowLED, LOW);
  75. digitalWrite(greenLED, HIGH);
  76. }
  77. currentTime = millis();
  78. // Every second, calculate and print L/Min
  79. if (currentTime >= (lastTime + 1000))
  80. {
  81. lastTime = currentTime;
  82. // Pulse frequency (Hz) = 7.5Q, Q is flow rate in L/min.
  83. flow = (pulse_freq / 7.5);
  84. pulse_freq = 0; // Reset Counter
  85. Serial.print(flow, DEC);
  86. Serial.println(" L/Min");
  87. Serial.println("______________________");
  88. Serial.print("Water Level: ");
  89. Serial.println(waterLevel);
  90. Serial.println("______________________");
  91. Serial.print("LowValue: ");
  92. Serial.println(WaterLevelLowValue);
  93. Serial.print("MedValue: ");
  94. Serial.println(WaterLevelMedValue);
  95. Serial.print("HighValue: ");
  96. Serial.println(WaterLevelHighValue);
  97. var1 = flow;
  98. var2 = waterLevel;
  99. ss.print(var1, 2);
  100. ss.print("A");
  101. ss.print(var2);
  102. ss.print("B");
  103. ss.print("\n");
  104. }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement