Facebook
From Ungracious Armadillo, 4 Years ago, written in C++.
This paste is a reply to Re: PODLEWANIE from Mustard Dove - go back
Embed
Viewing differences between Re: PODLEWANIE and Re: Re: PODLEWANIE
#include 
#include 
LiquidCrystal_I2C lcd(0x3f, 16, 2);
#define zawor 10
unsigned long aktualnyCzas = 0;
unsigned long roznicaCzasu = 0;
unsigned long zapamietanyCzaswartosc_A0 = 0;
unsigned long zapamietanyCzaswartosc_A1 = 0;
unsigned long zapamietanyCzaszawor = 0;
unsigned long zapamietanyCzasnastaw1 = 0;
unsigned long zapamietanyCzasnastaw2 = 0;
unsigned long zapamietanyCzasnastaw3 = 0;
unsigned long zapamietanyCzasnastaw4 = 0;
unsigned long zapamietanyCzasnastaw5 = 0;
unsigned long zapamietanyCzasprogram = 0;
unsigned long zapamietanyCzaszwloka1 = 0;
unsigned long zapamietanyCzaszwloka2 = 0;
unsigned long zapamietanyCzaszwloka3 = 0;
unsigned long zapamietanyCzaszwloka4 = 0;
unsigned long zapamietanyCzaszwloka5 = 0;
unsigned long zapamietanyCzaszwloka_zawor = 0;
int zwloka_zawor = 0;
int nastaw1 = 0; int nastaw2 = 0; int nastaw3 = 0; int nastaw4 = 0; int nastaw5 = 0;
int zwloka1 = 0; int zwloka2 = 0; int zwloka3 = 0; int zwloka4 = 0; int zwloka5 = 0;
int nastaw = 0;
int program = 0;
int sensor_A0 = A0;
int wartosc_A0 = 0;
int poc = A1;
int odczytanawartosc_A0 = 0;
void setup() {
  Serial.begin(9600);
  pinMode (zawor, OUTPUT);
  digitalWrite(zawor, HIGH);
  lcd.begin();
  lcd.noBlink();
  lcd.noCursor();
}
class lccd
{
  public:
    void wyswietlacz();
    void zakres();
};
class czujniki
{
  public:
    void pomiar();
};
class zawor1
{
  public:
    void ustaw();
};
void loop()  {
  aktualnyCzas = millis();
  if (aktualnyCzas -  zapamietanyCzasprogram >= 20UL) {
    zapamietanyCzasprogram = aktualnyCzas;
    lccd opis;
    opis.wyswietlacz();
    opis.zakres();
    czujniki gleba;
    gleba.pomiar();
    zawor1 wybor;
    wybor.ustaw();
  }
}
void lccd::wyswietlacz()
{
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("WILGO: ");
  lcd.setCursor(6, 0);
  lcd.print(wartosc_A0);
  lcd.print("    ");//likwiduje migotanie
  lcd.setCursor(10, 0);
  lcd.print("PROG:");
  lcd.setCursor(15, 0);
  lcd.print(nastaw);
  lcd.print("    ");

}
void lccd::zakres()
{
  if (nastaw == 1) {
    lcd.backlight();
    lcd.setCursor(4, 1);
    // lcd.scrollDisplayLeft();
    lcd.print("20 --> 40");
    lcd.print("    ");
  }
  if (nastaw == 2) {
    lcd.backlight();
    lcd.setCursor(4, 1);
    // lcd.scrollDisplayLeft();
    lcd.print("40 --> 60");
    lcd.print("    ");
  }
  if (nastaw == 3) {
    lcd.backlight();
    lcd.setCursor(4, 1);
    // lcd.scrollDisplayLeft();
    lcd.print("60 --> 80");
    lcd.print("    ");
  }
  if (nastaw == 4) {
    lcd.backlight();
    lcd.setCursor(4, 1);
    // lcd.scrollDisplayLeft();
    lcd.print("80 --> 100");
    lcd.print("    ");
  }
  if (nastaw == 5) {
    lcd.backlight();
    lcd.setCursor(4, 1);
    // lcd.scrollDisplayLeft();
    lcd.print("100 --> XXX");
    lcd.print(" ");
  }
}
void czujniki::pomiar()
{
  aktualnyCzas = millis();
  if (aktualnyCzas -  zapamietanyCzaswartosc_A0 >= 2000UL) {
    zapamietanyCzaswartosc_A0 = aktualnyCzas;
    wartosc_A0 = analogRead(sensor_A0);
    wartosc_A0 = map(wartosc_A0, 0, 1023, 100, 0);
    Serial.println(wartosc_A0);
  }
}

void zawor1::ustaw()
{
  aktualnyCzas = millis();
  if (aktualnyCzas -  zapamietanyCzaswartosc_A1 >= 10UL) {
    zapamietanyCzaswartosc_A1 = aktualnyCzas;
    nastaw = analogRead(poc);
    nastaw = map(nastaw, 0, 1023, 1, 6);
  }
  // ZATRZYMANIE ODCZYTU CZUJNIKA
  if (aktualnyCzas -  zapamietanyCzaszwloka_zawor >= 50000UL) {
    zapamietanyCzaszwloka_zawor = aktualnyCzas;
    if (nastaw == 1) {
      if (aktualnyCzas -  zapamietanyCzasnastaw1 >= 100UL) {
        zapamietanyCzasnastaw1 = aktualnyCzas;
        if (wartosc_A0 <= 20) {
          digitalWrite(zawor, LOW);
        }
      }
      //CZAS OTWARCIA ZAWORU
      if (aktualnyCzas -  zapamietanyCzaszwloka1 >= 60000UL) {
        zapamietanyCzaszwloka1 = aktualnyCzas; {
          digitalWrite(zawor, HIGH);
        }
      } if (wartosc_A0 >= 20) {
        digitalWrite(zawor, HIGH);
      }
    }
    if (nastaw == 2) {

      if (aktualnyCzas -  zapamietanyCzasnastaw2 >= 100UL) {
        zapamietanyCzasnastaw2 = aktualnyCzas;
        if (wartosc_A0 <= 40) {
          digitalWrite(zawor, LOW);
        }
      }
      if (aktualnyCzas -  zapamietanyCzaszwloka2 >= 60000UL) {
        zapamietanyCzaszwloka2 = aktualnyCzas; {
          digitalWrite(zawor, HIGH);
        }
      }
      if (wartosc_A0 >= 40) {
        digitalWrite(zawor, HIGH);
      }
    }
    if (nastaw == 3) {
      if (aktualnyCzas -  zapamietanyCzasnastaw3 >= 100UL) {
        zapamietanyCzasnastaw3 = aktualnyCzas;
        if (wartosc_A0 <= 60) {
          digitalWrite(zawor, LOW);
        }
      }
      if (aktualnyCzas -  zapamietanyCzaszwloka3 >= 60000UL) {
        zapamietanyCzaszwloka3 = aktualnyCzas; {
          digitalWrite(zawor, HIGH);
        }
      }
      if (wartosc_A0 >= 60) {
        digitalWrite(zawor, HIGH);
      }
    }
    if (nastaw == 4) {
      if (aktualnyCzas -  zapamietanyCzasnastaw4 >= 100UL) {
        zapamietanyCzasnastaw4 = aktualnyCzas;
        if (wartosc_A0 <= 80) {
          digitalWrite(zawor, LOW);
        }
      }
      if (aktualnyCzas -  zapamietanyCzaszwloka4 >= 60000UL) {
        zapamietanyCzaszwloka4 = aktualnyCzas; {
          digitalWrite(zawor, HIGH);
        }
      }
      if (wartosc_A0 >= 80) {
        digitalWrite(zawor, HIGH);
      }
    }
    if (nastaw == 5) {
      if (aktualnyCzas -  zapamietanyCzasnastaw5 >= 100UL) {
        zapamietanyCzasnastaw5 = aktualnyCzas;
        if (wartosc_A0 <= 100) {
          digitalWrite(zawor, LOW);
        }
      }
      if (aktualnyCzas -  zapamietanyCzaszwloka5 >= 60000UL ) {
        zapamietanyCzaszwloka5 = aktualnyCzas; {
          digitalWrite(zawor, HIGH);
        }
      }
      if (wartosc_A0 >= 100)  {
        digitalWrite(zawor, HIGH);
      }
    }
  }
}