Facebook
From Soiled Gibbon, 5 Years ago, written in Plain Text.
This paste is a reply to Untitled from Cute Iguana - go back
Embed
Viewing differences between Untitled and Re: Untitled
#include 
#include 
#include 
 
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define pin_nadajnik A1   // czujnik wody
#define pin_odbiornik A0 // czujnik wody
int pompa=10;//deklaracje
 int ele1=2;
 int ele2=4;
 int ele3=7;
 int ele4=8;
 
 int blokada=1;
 int blokada_up=1;
 
int redPin = 3; // led
int greenPin = 5; // led
int bluePin = 6; // led
int odleglosc;
int litry;//Zmienna przechowująca odległość
int poziom; //poziom wody
long czas_impulsu = 0;  //Zmienna przechowująca czas trwania impulsu na pinie ECHO
 byte customChar[8] ={
                      B00100,
                      B00100,
                      B01100,
                      B01000,
                      B11001,
                      B11101,
                      B11111,
                      B01110
                     };
 // kropelka
 
 long h = 3600000; // 3600000 milliseconds in an hour
long m = 60000; // 60000 milliseconds in a minute
long s=  1000; // 1000 milliseconds in a second
long czas = 0;
 
 
unsigned long zapamietany_czas = 0;
unsigned long aktualny_czas =0;
const unsigned long Interwal = 1000;
     
 
unsigned long previousTime = 0;
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
 
};
 
byte rowPins[ROWS] = {11, 12}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {13,A3,A2}; //connect to the column pinouts of the keypad
 
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
char key ;
 
 
 int stoper(int Min, int Sec){
  int m=Min;
  int s=Sec;
  char key;
unsigned long zapamietany_czast=millis();
unsigned long aktualny_czast=millis();
 
  while(1){
   
      if(m==0 && s== 0){
  lcd.setCursor(0,1);
   lcd.print(0);
   lcd.setCursor(1,1);
   lcd.print(0);
   lcd.setCursor(2,1);
   lcd.print(":");
   lcd.setCursor(3,1);
   lcd.print(0);
   lcd.setCursor(4,1);
   lcd.print(0);
    break;     }
 
    aktualny_czast=millis();
   lcd.setCursor(0,1);
   lcd.print(m/10);
   lcd.setCursor(1,1);
   lcd.print(m%10);
   lcd.setCursor(2,1);
   lcd.print(":");
   lcd.setCursor(3,1);
   lcd.print(s/10);
   lcd.setCursor(4,1);
   lcd.print(s%10);
   
    if(aktualny_czast-zapamietany_czast>=1000){
    s--;
    digitalWrite(pin_nadajnik, HIGH); //Wystawienie stanu wysokiego na pin nadajnika
 delayMicroseconds(10); //Czas trwania 10us
 digitalWrite(pin_nadajnik, LOW); //Wystawienie stanu niskiego na pin nadajnika
 
 czas_impulsu = pulseIn(pin_odbiornik, HIGH); //Czas trwania impulsu na pinie Echo
 odleglosc = czas_impulsu/58; //Wyznaczenie odległości w cm
litry = map(odleglosc, 8, 100, 0, 1000);
poziom = 1000 - litry;
//Zabezpieczenie przed przekroczeniem zakresu pomiarowego
 
    lcd.createChar(0, customChar);
  lcd.setCursor(10, 1);
  lcd.write(byte(0));
  lcd.setCursor(12, 1);
   lcd.print(poziom);
   lcd.print("L");
      zapamietany_czast=aktualny_czast;}
   
    if(s==-1 && m>0){
      m--;
      s=59;}
   
     
      key = keypad.getKey();
if(key=='1' || key=='2' || key=='3' || key=='4' || key=='5'){
   lcd.setCursor(0,1);
   lcd.print(0);
   lcd.setCursor(1,1);
   lcd.print(0);
   lcd.setCursor(2,1);
   lcd.print(":");
   lcd.setCursor(3,1);
   lcd.print(0);
   lcd.setCursor(4,1);
   lcd.print(0);
   return 5;
break;
 
  }
}
 }
 
 int stoper_up(){
  int m=0;
  int s=0;
  char key;
unsigned long zapamietany_czast=millis();
unsigned long aktualny_czast=millis();
 
  while(1){
   
    aktualny_czast=millis();
   lcd.setCursor(0,1);
   lcd.print(m/10);
   lcd.setCursor(1,1);
   lcd.print(m%10);
   lcd.setCursor(2,1);
   lcd.print(":");
   lcd.setCursor(3,1);
   lcd.print(s/10);
   lcd.setCursor(4,1);
   lcd.print(s%10);
   
    if(aktualny_czast-zapamietany_czast>=1000){
    s++;
    digitalWrite(pin_nadajnik, HIGH); //Wystawienie stanu wysokiego na pin nadajnika
 delayMicroseconds(10); //Czas trwania 10us
 digitalWrite(pin_nadajnik, LOW); //Wystawienie stanu niskiego na pin nadajnika
 
 czas_impulsu = pulseIn(pin_odbiornik, HIGH); //Czas trwania impulsu na pinie Echo
 odleglosc = czas_impulsu/58; //Wyznaczenie odległości w mc
litry = map(odleglosc, 8, 100, 0, 1000);
poziom = 1000 - litry;
//Zabezpieczenie przed przekroczeniem zakresu pomiarowego
 
    lcd.createChar(0, customChar);
  lcd.setCursor(10, 1);
  lcd.write(byte(0));
  lcd.setCursor(12, 1);
   lcd.print(poziom);
   lcd.print("L");
      zapamietany_czast=aktualny_czast;}
   
    if(s>59){
      m++;
      s=0;}
   
      key = keypad.getKey();
if(key=='6' ){
   lcd.setCursor(0,1);
   lcd.print(0);
   lcd.setCursor(1,1);
   lcd.print(0);
   lcd.setCursor(2,1);
   lcd.print(":");
   lcd.setCursor(3,1);
   lcd.print(0);
   lcd.setCursor(4,1);
   lcd.print(0);
   return 5;
break;
 
  }
}
 }
 
void setColor(int red, int green, int blue)
{
#ifdef COMMON_ANODE
  red = 255 - red;
  green = 255 - green;
  blue = 255 - blue;
#endif
  analogWrite(redPin, red);
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);
}
void setup() {
  pinMode(2, OUTPUT); //elektro zawór 1
  pinMode(4, OUTPUT); //elektro zawór 2
  pinMode(7, OUTPUT); //elektro zawór 3
  pinMode(8, OUTPUT); //elektro zawór 4
  pinMode(10, OUTPUT); //pompa
  pinMode(redPin, OUTPUT); // RGB
  pinMode(greenPin, OUTPUT); // RGB
  pinMode(bluePin, OUTPUT); // RGB
 pinMode(pin_nadajnik, OUTPUT); // czujnik wody
 pinMode(pin_odbiornik, INPUT); // czujnik wody
 
  digitalWrite(pompa, HIGH); //Wyłączenie wszystkiego
  digitalWrite(ele1, HIGH);
  digitalWrite(ele2, HIGH);
  digitalWrite(ele3, HIGH);
  digitalWrite(ele4, HIGH);
  lcd.begin();
  lcd.backlight();
  lcd.print("Czas:");
 
}
 
void loop() {
 
 
if(blokada==1){
  blokada_up=1;
    while(1){
 
    digitalWrite(pompa, HIGH);
    digitalWrite(ele1, HIGH);
    setColor(0, 255, 0);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("RELAX");
    lcd.setCursor(10,0);
    lcd.print("->1");
    blokada=stoper(90,0);
 if( blokada==5){
  break;}
 
      digitalWrite(pin_nadajnik, HIGH); //Wystawienie stanu wysokiego na pin nadajnika
 delayMicroseconds(10); //Czas trwania 10us
 digitalWrite(pin_nadajnik, LOW); //Wystawienie stanu niskiego na pin nadajnika
 
 czas_impulsu = pulseIn(pin_odbiornik, HIGH); //Czas trwania impulsu na pinie Echo
 odleglosc = czas_impulsu/58; //Wyznaczenie odległości w cm
litry = map(odleglosc, 8, 100, 0, 1000);
poziom = 1000 - litry;
   if(poziom<200)
   while(1){
     lcd.clear();
    lcd.setCursor(3,0);
    lcd.print("BRAK WODY!!!");
    lcd.setCursor(2,1);
    lcd.print("JEBAC POLICJE");
    setColor(255, 0, 0);
  digitalWrite(pin_nadajnik, HIGH); //Wystawienie stanu wysokiego na pin nadajnika
 delayMicroseconds(10); //Czas trwania 10us
 digitalWrite(pin_nadajnik, LOW); //Wystawienie stanu niskiego na pin nadajnika
 
 czas_impulsu = pulseIn(pin_odbiornik, HIGH); //Czas trwania impulsu na pinie Echo
 odleglosc = czas_impulsu/58; //Wyznaczenie odległości w cm
litry = map(odleglosc, 8, 100, 0, 1000);
poziom = 1000 - litry;
    if(poziom>=200)
    break;}
   
    digitalWrite(pompa, LOW);
    digitalWrite(ele1, LOW);
    setColor(0, 0, 255);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("AUTO");
    lcd.setCursor(5,0);
    lcd.print("1");
    blokada=stoper(1,15);
 if( blokada==5){
  break;}
     
 
   digitalWrite(pompa, HIGH);
    digitalWrite(ele1, HIGH);
    setColor(0, 255, 0);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("RELAX");
    lcd.setCursor(10,0);
    lcd.print("-> END");
       blokada=stoper(90,0);
 if( blokada==5){
  break;}
 
     
     
}}
 
 key = keypad.getKey();
 
if(key == '1'){
  while(1){
    digitalWrite(pompa, LOW);
    digitalWrite(ele1, LOW);
    digitalWrite(ele2, HIGH);
    digitalWrite(ele3, HIGH);
    digitalWrite(ele4, HIGH);
    setColor(255, 0, 0);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("MANUAL");
    lcd.setCursor(7,0);
    lcd.print("1");
       blokada_up=stoper_up();
  if(blokada_up==5){
        blokada=1;
            break;}}}
 
 
 
 
if(key == '2'){
  while(1){
    digitalWrite(pompa, LOW);
    digitalWrite(ele2, LOW);
    digitalWrite(ele1, HIGH);
     digitalWrite(ele3, HIGH);
    digitalWrite(ele4, HIGH);
    setColor(255, 0, 0);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("MANUAL");
    lcd.setCursor(7,0);
    lcd.print(" 2");
    blokada_up=stoper_up();
  if(blokada_up==5){
        blokada=1;
            break;}}}
 
 
 
if(key == '3'){
  while(1){
    digitalWrite(pompa, LOW);
    digitalWrite(ele3, LOW);
    digitalWrite(ele1, HIGH);
    digitalWrite(ele2, HIGH);
    digitalWrite(ele4, HIGH);
    setColor(255, 0, 0);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("MANUAL");
    lcd.setCursor(7,0);
    lcd.print("  3");
     blokada_up=stoper_up();
  if(blokada_up==5){
        blokada=1;
            break;}}}
 
 
 
if(key == '4'){
  while(1){
    digitalWrite(pompa, LOW);
    digitalWrite(ele4, LOW);
    digitalWrite(ele1, HIGH);
    digitalWrite(ele2, HIGH);
    digitalWrite(ele3, HIGH);
   
    setColor(255, 0, 0);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("MANUAL");
    lcd.setCursor(7,0);
    lcd.print("   4");
    blokada_up=stoper_up();
  if(blokada_up==5){
        blokada=1;
            break;}}}
 
 
if(key == '5'){
  while(1){
   digitalWrite(pompa, HIGH);
    digitalWrite(ele1, HIGH);
    digitalWrite(ele2, HIGH);
    digitalWrite(ele3, HIGH);
    digitalWrite(ele4, HIGH);
  setColor(255, 0, 0);
  lcd.clear();
    lcd.setCursor(6,0);
    lcd.print("STOP");
   
  blokada_up=stoper_up();
  if(blokada_up==5){
        blokada=1;
            break;}}}
 
 
}