Advertisement
safwan092

Untitled

Feb 15th, 2023
16
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3. #include <SoftwareSerial.h>
  4.  
  5. #define trigPin 9
  6. #define echoPin 10
  7.  
  8.  
  9. SoftwareSerial SIM800L(3, 2);
  10. LiquidCrystal_I2C lcd(0x27, 16, 2);
  11.  
  12. bool changeFlag = 0;
  13. String message;
  14. long duration;
  15. float distanceD;
  16. float WaterPercentage, WaterPercentageOLD;
  17. unsigned long dataMillis = 0;
  18. unsigned long smsMillis = 0;
  19.  
  20. void setup() {
  21. lcd.init();
  22. lcd.init();
  23. lcd.backlight();
  24. lcd.setCursor(0, 0);
  25. lcd.print("Hello, world!");
  26. pinMode(trigPin, OUTPUT);
  27. pinMode(echoPin, INPUT);
  28. Serial.begin(9600);
  29. SIM800L.begin(9600);
  30. delay(5000);
  31. SendMessage();
  32. }
  33. void loop() {
  34. US();
  35. showData();
  36. }
  37.  
  38. void US() {
  39. digitalWrite(trigPin, LOW);
  40. delayMicroseconds(2);
  41. digitalWrite(trigPin, HIGH);
  42. delayMicroseconds(10);
  43. digitalWrite(trigPin, LOW);
  44. duration = pulseIn(echoPin, HIGH);
  45. distanceD = duration * 0.034 / 2;
  46. distanceD = constrain(distanceD, 4, 17);
  47. WaterPercentage = map(distanceD, 4, 17, 100, 1);
  48. WaterPercentage = constrain(WaterPercentage, 1, 100);
  49. // 0% 25% 50% 75% 100%
  50. //0--19
  51. if (WaterPercentage <= 19) {
  52. WaterPercentage = 0;
  53. }
  54.  
  55. //20-39
  56. else if (WaterPercentage <= 39 && WaterPercentage >= 20) {
  57. WaterPercentage = 25;
  58. }
  59.  
  60. //40-59
  61. else if (WaterPercentage <= 59 && WaterPercentage >= 40) {
  62. WaterPercentage = 50;
  63. }
  64.  
  65. //60-85
  66. else if (WaterPercentage <= 85 && WaterPercentage >= 60) {
  67. WaterPercentage = 75;
  68. }
  69.  
  70. //86-100
  71. else if (WaterPercentage >= 86) {
  72. WaterPercentage = 100;
  73. }
  74.  
  75. }
  76.  
  77. void showData() {
  78. if (millis() - dataMillis > 15000)// && WaterPercentage != WaterPercentageOLD)
  79. {
  80. changeFlag = 1;
  81. dataMillis = millis();
  82. WaterPercentageOLD = WaterPercentage;
  83. Serial.print("Distance: ");
  84. Serial.print(distanceD);
  85. Serial.print("\t Water Amount:");
  86. Serial.print(WaterPercentage);
  87. Serial.println("%");
  88. lcd.clear();
  89. lcd.setCursor(0, 0);
  90. lcd.print("Water Level:");
  91. lcd.setCursor(0, 1);
  92. lcd.print(WaterPercentage);
  93. lcd.print("%");
  94. SendMessage();
  95. }
  96. if (WaterPercentage == WaterPercentageOLD && changeFlag == 1) {
  97. changeFlag = 0;
  98. //SendMessage();
  99. }
  100. }
  101.  
  102.  
  103. void SendMessage() {
  104. //if (millis() - smsMillis > 3000)
  105. //{
  106. // smsMillis = millis();
  107. //WaterPercentageOLD = WaterPercentage;
  108. Serial.println ("Sending Message");
  109. SIM800L.println("AT+CMGF=1"); //Sets the GSM Module in Text Mode
  110. delay(1000);
  111. Serial.println ("Set SMS Number");
  112. SIM800L.println("AT+CMGS=\"+966554522247\"\r"); //Mobile phone number to send message
  113. delay(1000);
  114. Serial.println("Set SMS Content");
  115. message = "Water Level:" + String(WaterPercentage) + "%";
  116. SIM800L.println(message);// Messsage content
  117. delay(100);
  118. Serial.println("Finish");
  119. SIM800L.println((char)26);// ASCII code of CTRL+Z
  120. delay(1000);
  121. Serial.println("Message has been sent");
  122. //}
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement