Advertisement
WachidSusilo

Pompa Air Otomatis

Jan 4th, 2020
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.22 KB | None | 0 0
  1. /*DISCLAIMER
  2.   Code by Wachid Susilo
  3.   WA 085640020041
  4.   Butuh bantuan project berkaitan dengan Arduino IDE atau Android Studio? Hubungi saya :)
  5.   Mendistribusikan code ini harus mencantumkan tulisan ini.
  6. */
  7.  
  8. #define RELAY 2
  9. #define a 3 //sensor air tinggi
  10. #define b 4 //sensor air rendah
  11. #define c 5 //sensor flow
  12. #define DELAY_POMPA_HIDUP 10 //10 detik
  13. #define DELAY_POMPA_MATI 1800 //30 menit
  14.  
  15. static int timer1 = 0;
  16. static unsigned long lastmillis = 0;
  17. unsigned long i;
  18. boolean flagA = false, flagB = true, flagC = true, flagD = false;
  19.  
  20. void setup() {
  21.   Serial.begin(9600);
  22.   pinMode(RELAY, OUTPUT);
  23.   digitalWrite(RELAY, LOW);
  24.   pinMode(a, INPUT);
  25.   pinMode(b, INPUT);
  26.   pinMode(c, INPUT);
  27. }
  28.  
  29. void loop() {
  30.   unsigned long deltamillis = 0;
  31.   unsigned long thismillis = millis();
  32.   if (thismillis != lastmillis) {
  33.     deltamillis = thismillis - lastmillis;
  34.     lastmillis = thismillis;
  35.   }
  36.  
  37.   timer1 -= deltamillis;
  38.   if (timer1 <= 0) {
  39.     timer1 += 1000;
  40.  
  41.     if (flagA || !flagB) {
  42.       i++;
  43.       if (flagD) {
  44.         Serial.println(i);
  45.       }
  46.     }
  47.   }
  48.  
  49.   //jika sensor air tinggi terdeteksi, maka pompa dimatikan
  50.   if (!flagB && !flagA && digitalRead(a) && !digitalRead(b)) {
  51.     digitalWrite(RELAY, LOW);
  52.     if (flagC) {
  53.       flagC = false;
  54.       Serial.println("pompa dimatikan");
  55.     }
  56.   }
  57.  
  58.   //jika pompa telah dihidupkan namun air tidak mengalir, maka pompa dimatikan selama 30 menit
  59.   if (!flagB && !digitalRead(c)) {
  60.     if (i <= DELAY_POMPA_MATI) {
  61.       flagD = true;
  62.       digitalWrite(RELAY, LOW);
  63.       if (flagC) {
  64.         flagC = false;
  65.         Serial.println("air tidak mengalir, mencoba lagi dalam 10 detik");
  66.       }
  67.     } else {
  68.       i = 0;
  69.       flagB = true;
  70.       flagC = true;
  71.       flagD = false;
  72.       Serial.println("mencoba menghidupkan pompa");
  73.     }
  74.   }
  75.  
  76.   //jika sensor air rendah terdeteksi, maka pompa dihidupkan
  77.   if (digitalRead(b) && !digitalRead(a)) {
  78.     if (flagB) {
  79.       if (i <= DELAY_POMPA_HIDUP) {
  80.         flagA = true;
  81.         flagD = true;
  82.         digitalWrite(RELAY, HIGH);
  83.         if (flagC) {
  84.           flagC = false;
  85.           Serial.println("pompa dihidupkan");
  86.         }
  87.       } else {
  88.         i = 0;
  89.         flagA = false;
  90.         flagB = false;
  91.         flagC = true;
  92.         flagD = false;
  93.       }
  94.     }
  95.   }
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement