Facebook
From Soiled Gibbon, 3 Years ago, written in Plain Text.
This paste is a reply to Untitled from Cute Iguana - view diff
Embed
Download Paste or View Raw
Hits: 217
  1. #include <Wire.h>
  2. #include <LiquidCrystal_I2C.h>
  3. #include <Keypad.h>
  4.  
  5. LiquidCrystal_I2C lcd(0x27, 16, 2);
  6. #define pin_nadajnik A1   // czujnik wody
  7. #define pin_odbiornik A0 // czujnik wody
  8. int pompa=10;//deklaracje
  9.  int ele1=2;
  10.  int ele2=4;
  11.  int ele3=7;
  12.  int ele4=8;
  13.  
  14.  int blokada=1;
  15.  int blokada_up=1;
  16.  
  17. int redPin = 3; // led
  18. int greenPin = 5; // led
  19. int bluePin = 6; // led
  20. int odleglosc;
  21. int litry;//Zmienna przechowująca odległość
  22. int poziom; //poziom wody
  23. long czas_impulsu = 0;  //Zmienna przechowująca czas trwania impulsu na pinie ECHO
  24.  byte customChar[8] ={
  25.                       B00100,
  26.                       B00100,
  27.                       B01100,
  28.                       B01000,
  29.                       B11001,
  30.                       B11101,
  31.                       B11111,
  32.                       B01110
  33.                      };
  34.  // kropelka
  35.  
  36.  long h = 3600000; // 3600000 milliseconds in an hour
  37. long m = 60000; // 60000 milliseconds in a minute
  38. long s=  1000; // 1000 milliseconds in a second
  39. long czas = 0;
  40.  
  41.  
  42. unsigned long zapamietany_czas = 0;
  43. unsigned long aktualny_czas =0;
  44. const unsigned long Interwal = 1000;
  45.      
  46.  
  47. unsigned long previousTime = 0;
  48. const byte ROWS = 4; //four rows
  49. const byte COLS = 3; //three columns
  50. char keys[ROWS][COLS] = {
  51.   {'1','2','3'},
  52.   {'4','5','6'},
  53.  
  54. };
  55.  
  56. byte rowPins[ROWS] = {11, 12}; //connect to the row pinouts of the keypad
  57. byte colPins[COLS] = {13,A3,A2}; //connect to the column pinouts of the keypad
  58.  
  59. Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
  60. char key ;
  61.  
  62.  
  63.  int stoper(int Min, int Sec){
  64.   int m=Min;
  65.   int s=Sec;
  66.   char key;
  67. unsigned long zapamietany_czast=millis();
  68. unsigned long aktualny_czast=millis();
  69.  
  70.   while(1){
  71.    
  72.       if(m==0 && s== 0){
  73.   lcd.setCursor(0,1);
  74.    lcd.print(0);
  75.    lcd.setCursor(1,1);
  76.    lcd.print(0);
  77.    lcd.setCursor(2,1);
  78.    lcd.print(":");
  79.    lcd.setCursor(3,1);
  80.    lcd.print(0);
  81.    lcd.setCursor(4,1);
  82.    lcd.print(0);
  83.     break;     }
  84.  
  85.     aktualny_czast=millis();
  86.    lcd.setCursor(0,1);
  87.    lcd.print(m/10);
  88.    lcd.setCursor(1,1);
  89.    lcd.print(m%10);
  90.    lcd.setCursor(2,1);
  91.    lcd.print(":");
  92.    lcd.setCursor(3,1);
  93.    lcd.print(s/10);
  94.    lcd.setCursor(4,1);
  95.    lcd.print(s%10);
  96.    
  97.     if(aktualny_czast-zapamietany_czast>=1000){
  98.     s--;
  99.     digitalWrite(pin_nadajnik, HIGH); //Wystawienie stanu wysokiego na pin nadajnika
  100.  delayMicroseconds(10); //Czas trwania 10us
  101.  digitalWrite(pin_nadajnik, LOW); //Wystawienie stanu niskiego na pin nadajnika
  102.  
  103.  czas_impulsu = pulseIn(pin_odbiornik, HIGH); //Czas trwania impulsu na pinie Echo
  104.  odleglosc = czas_impulsu/58; //Wyznaczenie odległości w cm
  105. litry = map(odleglosc, 8, 100, 0, 1000);
  106. poziom = 1000 - litry;
  107. //Zabezpieczenie przed przekroczeniem zakresu pomiarowego
  108.  
  109.     lcd.createChar(0, customChar);
  110.   lcd.setCursor(10, 1);
  111.   lcd.write(byte(0));
  112.   lcd.setCursor(12, 1);
  113.    lcd.print(poziom);
  114.    lcd.print("L");
  115.       zapamietany_czast=aktualny_czast;}
  116.    
  117.     if(s==-1 && m>0){
  118.       m--;
  119.       s=59;}
  120.    
  121.      
  122.       key = keypad.getKey();
  123. if(key=='1' || key=='2' || key=='3' || key=='4' || key=='5'){
  124.    lcd.setCursor(0,1);
  125.    lcd.print(0);
  126.    lcd.setCursor(1,1);
  127.    lcd.print(0);
  128.    lcd.setCursor(2,1);
  129.    lcd.print(":");
  130.    lcd.setCursor(3,1);
  131.    lcd.print(0);
  132.    lcd.setCursor(4,1);
  133.    lcd.print(0);
  134.    return 5;
  135. break;
  136.  
  137.   }
  138. }
  139.  }
  140.  
  141.  int stoper_up(){
  142.   int m=0;
  143.   int s=0;
  144.   char key;
  145. unsigned long zapamietany_czast=millis();
  146. unsigned long aktualny_czast=millis();
  147.  
  148.   while(1){
  149.    
  150.     aktualny_czast=millis();
  151.    lcd.setCursor(0,1);
  152.    lcd.print(m/10);
  153.    lcd.setCursor(1,1);
  154.    lcd.print(m%10);
  155.    lcd.setCursor(2,1);
  156.    lcd.print(":");
  157.    lcd.setCursor(3,1);
  158.    lcd.print(s/10);
  159.    lcd.setCursor(4,1);
  160.    lcd.print(s%10);
  161.    
  162.     if(aktualny_czast-zapamietany_czast>=1000){
  163.     s++;
  164.     digitalWrite(pin_nadajnik, HIGH); //Wystawienie stanu wysokiego na pin nadajnika
  165.  delayMicroseconds(10); //Czas trwania 10us
  166.  digitalWrite(pin_nadajnik, LOW); //Wystawienie stanu niskiego na pin nadajnika
  167.  
  168.  czas_impulsu = pulseIn(pin_odbiornik, HIGH); //Czas trwania impulsu na pinie Echo
  169.  odleglosc = czas_impulsu/58; //Wyznaczenie odległości w mc
  170. litry = map(odleglosc, 8, 100, 0, 1000);
  171. poziom = 1000 - litry;
  172. //Zabezpieczenie przed przekroczeniem zakresu pomiarowego
  173.  
  174.     lcd.createChar(0, customChar);
  175.   lcd.setCursor(10, 1);
  176.   lcd.write(byte(0));
  177.   lcd.setCursor(12, 1);
  178.    lcd.print(poziom);
  179.    lcd.print("L");
  180.       zapamietany_czast=aktualny_czast;}
  181.    
  182.     if(s>59){
  183.       m++;
  184.       s=0;}
  185.    
  186.       key = keypad.getKey();
  187. if(key=='6' ){
  188.    lcd.setCursor(0,1);
  189.    lcd.print(0);
  190.    lcd.setCursor(1,1);
  191.    lcd.print(0);
  192.    lcd.setCursor(2,1);
  193.    lcd.print(":");
  194.    lcd.setCursor(3,1);
  195.    lcd.print(0);
  196.    lcd.setCursor(4,1);
  197.    lcd.print(0);
  198.    return 5;
  199. break;
  200.  
  201.   }
  202. }
  203.  }
  204.  
  205. void setColor(int red, int green, int blue)
  206. {
  207. #ifdef COMMON_ANODE
  208.   red = 255 - red;
  209.   green = 255 - green;
  210.   blue = 255 - blue;
  211. #endif
  212.   analogWrite(redPin, red);
  213.   analogWrite(greenPin, green);
  214.   analogWrite(bluePin, blue);
  215. }
  216. void setup() {
  217.   pinMode(2, OUTPUT); //elektro zawór 1
  218.   pinMode(4, OUTPUT); //elektro zawór 2
  219.   pinMode(7, OUTPUT); //elektro zawór 3
  220.   pinMode(8, OUTPUT); //elektro zawór 4
  221.   pinMode(10, OUTPUT); //pompa
  222.   pinMode(redPin, OUTPUT); // RGB
  223.   pinMode(greenPin, OUTPUT); // RGB
  224.   pinMode(bluePin, OUTPUT); // RGB
  225.  pinMode(pin_nadajnik, OUTPUT); // czujnik wody
  226.  pinMode(pin_odbiornik, INPUT); // czujnik wody
  227.  
  228.   digitalWrite(pompa, HIGH); //Wyłączenie wszystkiego
  229.   digitalWrite(ele1, HIGH);
  230.   digitalWrite(ele2, HIGH);
  231.   digitalWrite(ele3, HIGH);
  232.   digitalWrite(ele4, HIGH);
  233.   lcd.begin();
  234.   lcd.backlight();
  235.   lcd.print("Czas:");
  236.  
  237. }
  238.  
  239. void loop() {
  240.  
  241.  
  242. if(blokada==1){
  243.   blokada_up=1;
  244.     while(1){
  245.  
  246.     digitalWrite(pompa, HIGH);
  247.     digitalWrite(ele1, HIGH);
  248.     setColor(0, 255, 0);
  249.     lcd.clear();
  250.     lcd.setCursor(0,0);
  251.     lcd.print("RELAX");
  252.     lcd.setCursor(10,0);
  253.     lcd.print("->1");
  254.     blokada=stoper(90,0);
  255.  if( blokada==5){
  256.   break;}
  257.  
  258.       digitalWrite(pin_nadajnik, HIGH); //Wystawienie stanu wysokiego na pin nadajnika
  259.  delayMicroseconds(10); //Czas trwania 10us
  260.  digitalWrite(pin_nadajnik, LOW); //Wystawienie stanu niskiego na pin nadajnika
  261.  
  262.  czas_impulsu = pulseIn(pin_odbiornik, HIGH); //Czas trwania impulsu na pinie Echo
  263.  odleglosc = czas_impulsu/58; //Wyznaczenie odległości w cm
  264. litry = map(odleglosc, 8, 100, 0, 1000);
  265. poziom = 1000 - litry;
  266.    if(poziom<200)
  267.    while(1){
  268.      lcd.clear();
  269.     lcd.setCursor(3,0);
  270.     lcd.print("BRAK WODY!!!");
  271.     lcd.setCursor(2,1);
  272.     lcd.print("JEBAC POLICJE");
  273.     setColor(255, 0, 0);
  274.   digitalWrite(pin_nadajnik, HIGH); //Wystawienie stanu wysokiego na pin nadajnika
  275.  delayMicroseconds(10); //Czas trwania 10us
  276.  digitalWrite(pin_nadajnik, LOW); //Wystawienie stanu niskiego na pin nadajnika
  277.  
  278.  czas_impulsu = pulseIn(pin_odbiornik, HIGH); //Czas trwania impulsu na pinie Echo
  279.  odleglosc = czas_impulsu/58; //Wyznaczenie odległości w cm
  280. litry = map(odleglosc, 8, 100, 0, 1000);
  281. poziom = 1000 - litry;
  282.     if(poziom>=200)
  283.     break;}
  284.    
  285.     digitalWrite(pompa, LOW);
  286.     digitalWrite(ele1, LOW);
  287.     setColor(0, 0, 255);
  288.     lcd.clear();
  289.     lcd.setCursor(0,0);
  290.     lcd.print("AUTO");
  291.     lcd.setCursor(5,0);
  292.     lcd.print("1");
  293.     blokada=stoper(1,15);
  294.  if( blokada==5){
  295.   break;}
  296.      
  297.  
  298.    digitalWrite(pompa, HIGH);
  299.     digitalWrite(ele1, HIGH);
  300.     setColor(0, 255, 0);
  301.     lcd.clear();
  302.     lcd.setCursor(0,0);
  303.     lcd.print("RELAX");
  304.     lcd.setCursor(10,0);
  305.     lcd.print("-> END");
  306.        blokada=stoper(90,0);
  307.  if( blokada==5){
  308.   break;}
  309.  
  310.      
  311.      
  312. }}
  313.  
  314.  key = keypad.getKey();
  315.  
  316. if(key == '1'){
  317.   while(1){
  318.     digitalWrite(pompa, LOW);
  319.     digitalWrite(ele1, LOW);
  320.     digitalWrite(ele2, HIGH);
  321.     digitalWrite(ele3, HIGH);
  322.     digitalWrite(ele4, HIGH);
  323.     setColor(255, 0, 0);
  324.     lcd.clear();
  325.     lcd.setCursor(0,0);
  326.     lcd.print("MANUAL");
  327.     lcd.setCursor(7,0);
  328.     lcd.print("1");
  329.        blokada_up=stoper_up();
  330.   if(blokada_up==5){
  331.         blokada=1;
  332.             break;}}}
  333.  
  334.  
  335.  
  336.  
  337. if(key == '2'){
  338.   while(1){
  339.     digitalWrite(pompa, LOW);
  340.     digitalWrite(ele2, LOW);
  341.     digitalWrite(ele1, HIGH);
  342.      digitalWrite(ele3, HIGH);
  343.     digitalWrite(ele4, HIGH);
  344.     setColor(255, 0, 0);
  345.     lcd.clear();
  346.     lcd.setCursor(0,0);
  347.     lcd.print("MANUAL");
  348.     lcd.setCursor(7,0);
  349.     lcd.print(" 2");
  350.     blokada_up=stoper_up();
  351.   if(blokada_up==5){
  352.         blokada=1;
  353.             break;}}}
  354.  
  355.  
  356.  
  357. if(key == '3'){
  358.   while(1){
  359.     digitalWrite(pompa, LOW);
  360.     digitalWrite(ele3, LOW);
  361.     digitalWrite(ele1, HIGH);
  362.     digitalWrite(ele2, HIGH);
  363.     digitalWrite(ele4, HIGH);
  364.     setColor(255, 0, 0);
  365.     lcd.clear();
  366.     lcd.setCursor(0,0);
  367.     lcd.print("MANUAL");
  368.     lcd.setCursor(7,0);
  369.     lcd.print("  3");
  370.      blokada_up=stoper_up();
  371.   if(blokada_up==5){
  372.         blokada=1;
  373.             break;}}}
  374.  
  375.  
  376.  
  377. if(key == '4'){
  378.   while(1){
  379.     digitalWrite(pompa, LOW);
  380.     digitalWrite(ele4, LOW);
  381.     digitalWrite(ele1, HIGH);
  382.     digitalWrite(ele2, HIGH);
  383.     digitalWrite(ele3, HIGH);
  384.    
  385.     setColor(255, 0, 0);
  386.     lcd.clear();
  387.     lcd.setCursor(0,0);
  388.     lcd.print("MANUAL");
  389.     lcd.setCursor(7,0);
  390.     lcd.print("   4");
  391.     blokada_up=stoper_up();
  392.   if(blokada_up==5){
  393.         blokada=1;
  394.             break;}}}
  395.  
  396.  
  397. if(key == '5'){
  398.   while(1){
  399.    digitalWrite(pompa, HIGH);
  400.     digitalWrite(ele1, HIGH);
  401.     digitalWrite(ele2, HIGH);
  402.     digitalWrite(ele3, HIGH);
  403.     digitalWrite(ele4, HIGH);
  404.   setColor(255, 0, 0);
  405.   lcd.clear();
  406.     lcd.setCursor(6,0);
  407.     lcd.print("STOP");
  408.    
  409.   blokada_up=stoper_up();
  410.   if(blokada_up==5){
  411.         blokada=1;
  412.             break;}}}
  413.  
  414.  
  415. }