Facebook
From Ungracious Armadillo, 4 Months ago, written in C++.
This paste is a reply to Re: PODLEWANIE from Mustard Dove - view diff
Embed
Download Paste or View Raw
Hits: 217
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3. LiquidCrystal_I2C lcd(0x3f, 16, 2);
  4. #define zawor 10
  5. unsigned long aktualnyCzas = 0;
  6. unsigned long roznicaCzasu = 0;
  7. unsigned long zapamietanyCzaswartosc_A0 = 0;
  8. unsigned long zapamietanyCzaswartosc_A1 = 0;
  9. unsigned long zapamietanyCzaszawor = 0;
  10. unsigned long zapamietanyCzasnastaw1 = 0;
  11. unsigned long zapamietanyCzasnastaw2 = 0;
  12. unsigned long zapamietanyCzasnastaw3 = 0;
  13. unsigned long zapamietanyCzasnastaw4 = 0;
  14. unsigned long zapamietanyCzasnastaw5 = 0;
  15. unsigned long zapamietanyCzasprogram = 0;
  16. unsigned long zapamietanyCzaszwloka1 = 0;
  17. unsigned long zapamietanyCzaszwloka2 = 0;
  18. unsigned long zapamietanyCzaszwloka3 = 0;
  19. unsigned long zapamietanyCzaszwloka4 = 0;
  20. unsigned long zapamietanyCzaszwloka5 = 0;
  21. unsigned long zapamietanyCzaszwloka_zawor = 0;
  22. int zwloka_zawor = 0;
  23. int nastaw1 = 0; int nastaw2 = 0; int nastaw3 = 0; int nastaw4 = 0; int nastaw5 = 0;
  24. int zwloka1 = 0; int zwloka2 = 0; int zwloka3 = 0; int zwloka4 = 0; int zwloka5 = 0;
  25. int nastaw = 0;
  26. int program = 0;
  27. int sensor_A0 = A0;
  28. int wartosc_A0 = 0;
  29. int poc = A1;
  30. int odczytanawartosc_A0 = 0;
  31. void setup() {
  32.   Serial.begin(9600);
  33.   pinMode (zawor, OUTPUT);
  34.   digitalWrite(zawor, HIGH);
  35.   lcd.begin();
  36.   lcd.noBlink();
  37.   lcd.noCursor();
  38. }
  39. class lccd
  40. {
  41.   public:
  42.     void wyswietlacz();
  43.     void zakres();
  44. };
  45. class czujniki
  46. {
  47.   public:
  48.     void pomiar();
  49. };
  50. class zawor1
  51. {
  52.   public:
  53.     void ustaw();
  54. };
  55. void loop()  {
  56.   aktualnyCzas = millis();
  57.   if (aktualnyCzas -  zapamietanyCzasprogram >= 20UL) {
  58.     zapamietanyCzasprogram = aktualnyCzas;
  59.     lccd opis;
  60.     opis.wyswietlacz();
  61.     opis.zakres();
  62.     czujniki gleba;
  63.     gleba.pomiar();
  64.     zawor1 wybor;
  65.     wybor.ustaw();
  66.   }
  67. }
  68. void lccd::wyswietlacz()
  69. {
  70.   lcd.backlight();
  71.   lcd.setCursor(0, 0);
  72.   lcd.print("WILGO: ");
  73.   lcd.setCursor(6, 0);
  74.   lcd.print(wartosc_A0);
  75.   lcd.print("    ");//likwiduje migotanie
  76.   lcd.setCursor(10, 0);
  77.   lcd.print("PROG:");
  78.   lcd.setCursor(15, 0);
  79.   lcd.print(nastaw);
  80.   lcd.print("    ");
  81.  
  82. }
  83. void lccd::zakres()
  84. {
  85.   if (nastaw == 1) {
  86.     lcd.backlight();
  87.     lcd.setCursor(4, 1);
  88.     // lcd.scrollDisplayLeft();
  89.     lcd.print("20 --> 40");
  90.     lcd.print("    ");
  91.   }
  92.   if (nastaw == 2) {
  93.     lcd.backlight();
  94.     lcd.setCursor(4, 1);
  95.     // lcd.scrollDisplayLeft();
  96.     lcd.print("40 --> 60");
  97.     lcd.print("    ");
  98.   }
  99.   if (nastaw == 3) {
  100.     lcd.backlight();
  101.     lcd.setCursor(4, 1);
  102.     // lcd.scrollDisplayLeft();
  103.     lcd.print("60 --> 80");
  104.     lcd.print("    ");
  105.   }
  106.   if (nastaw == 4) {
  107.     lcd.backlight();
  108.     lcd.setCursor(4, 1);
  109.     // lcd.scrollDisplayLeft();
  110.     lcd.print("80 --> 100");
  111.     lcd.print("    ");
  112.   }
  113.   if (nastaw == 5) {
  114.     lcd.backlight();
  115.     lcd.setCursor(4, 1);
  116.     // lcd.scrollDisplayLeft();
  117.     lcd.print("100 --> XXX");
  118.     lcd.print(" ");
  119.   }
  120. }
  121. void czujniki::pomiar()
  122. {
  123.   aktualnyCzas = millis();
  124.   if (aktualnyCzas -  zapamietanyCzaswartosc_A0 >= 2000UL) {
  125.     zapamietanyCzaswartosc_A0 = aktualnyCzas;
  126.     wartosc_A0 = analogRead(sensor_A0);
  127.     wartosc_A0 = map(wartosc_A0, 0, 1023, 100, 0);
  128.     Serial.println(wartosc_A0);
  129.   }
  130. }
  131.  
  132. void zawor1::ustaw()
  133. {
  134.   aktualnyCzas = millis();
  135.   if (aktualnyCzas -  zapamietanyCzaswartosc_A1 >= 10UL) {
  136.     zapamietanyCzaswartosc_A1 = aktualnyCzas;
  137.     nastaw = analogRead(poc);
  138.     nastaw = map(nastaw, 0, 1023, 1, 6);
  139.   }
  140.   // ZATRZYMANIE ODCZYTU CZUJNIKA
  141.   if (aktualnyCzas -  zapamietanyCzaszwloka_zawor >= 50000UL) {
  142.     zapamietanyCzaszwloka_zawor = aktualnyCzas;
  143.     if (nastaw == 1) {
  144.       if (aktualnyCzas -  zapamietanyCzasnastaw1 >= 100UL) {
  145.         zapamietanyCzasnastaw1 = aktualnyCzas;
  146.         if (wartosc_A0 <= 20) {
  147.           digitalWrite(zawor, LOW);
  148.         }
  149.       }
  150.       //CZAS OTWARCIA ZAWORU
  151.       if (aktualnyCzas -  zapamietanyCzaszwloka1 >= 60000UL) {
  152.         zapamietanyCzaszwloka1 = aktualnyCzas; {
  153.           digitalWrite(zawor, HIGH);
  154.         }
  155.       } if (wartosc_A0 >= 20) {
  156.         digitalWrite(zawor, HIGH);
  157.       }
  158.     }
  159.     if (nastaw == 2) {
  160.  
  161.       if (aktualnyCzas -  zapamietanyCzasnastaw2 >= 100UL) {
  162.         zapamietanyCzasnastaw2 = aktualnyCzas;
  163.         if (wartosc_A0 <= 40) {
  164.           digitalWrite(zawor, LOW);
  165.         }
  166.       }
  167.       if (aktualnyCzas -  zapamietanyCzaszwloka2 >= 60000UL) {
  168.         zapamietanyCzaszwloka2 = aktualnyCzas; {
  169.           digitalWrite(zawor, HIGH);
  170.         }
  171.       }
  172.       if (wartosc_A0 >= 40) {
  173.         digitalWrite(zawor, HIGH);
  174.       }
  175.     }
  176.     if (nastaw == 3) {
  177.       if (aktualnyCzas -  zapamietanyCzasnastaw3 >= 100UL) {
  178.         zapamietanyCzasnastaw3 = aktualnyCzas;
  179.         if (wartosc_A0 <= 60) {
  180.           digitalWrite(zawor, LOW);
  181.         }
  182.       }
  183.       if (aktualnyCzas -  zapamietanyCzaszwloka3 >= 60000UL) {
  184.         zapamietanyCzaszwloka3 = aktualnyCzas; {
  185.           digitalWrite(zawor, HIGH);
  186.         }
  187.       }
  188.       if (wartosc_A0 >= 60) {
  189.         digitalWrite(zawor, HIGH);
  190.       }
  191.     }
  192.     if (nastaw == 4) {
  193.       if (aktualnyCzas -  zapamietanyCzasnastaw4 >= 100UL) {
  194.         zapamietanyCzasnastaw4 = aktualnyCzas;
  195.         if (wartosc_A0 <= 80) {
  196.           digitalWrite(zawor, LOW);
  197.         }
  198.       }
  199.       if (aktualnyCzas -  zapamietanyCzaszwloka4 >= 60000UL) {
  200.         zapamietanyCzaszwloka4 = aktualnyCzas; {
  201.           digitalWrite(zawor, HIGH);
  202.         }
  203.       }
  204.       if (wartosc_A0 >= 80) {
  205.         digitalWrite(zawor, HIGH);
  206.       }
  207.     }
  208.     if (nastaw == 5) {
  209.       if (aktualnyCzas -  zapamietanyCzasnastaw5 >= 100UL) {
  210.         zapamietanyCzasnastaw5 = aktualnyCzas;
  211.         if (wartosc_A0 <= 100) {
  212.           digitalWrite(zawor, LOW);
  213.         }
  214.       }
  215.       if (aktualnyCzas -  zapamietanyCzaszwloka5 >= 60000UL ) {
  216.         zapamietanyCzaszwloka5 = aktualnyCzas; {
  217.           digitalWrite(zawor, HIGH);
  218.         }
  219.       }
  220.       if (wartosc_A0 >= 100)  {
  221.         digitalWrite(zawor, HIGH);
  222.       }
  223.     }
  224.   }
  225. }