Advertisement
safwan092

Untitled

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