#include <Wire.h>
#include <LiquidCrystal_I2C.h>
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);
}
}
}
}