• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem zawieszanie
#1
Witam mam Arduino Mega napisałem kod z pomocą innych skeczy mam tam lcd x3,przekazniki 8szt tranzystorki do pwm dallaska do temp, ds1307 do czasu analogowa 5 przyciskowa klawiaturę moduł ph i mam problem wszystko dziala na sucho jak podłącze wszystko na początku mogę wszystko ustawiac itp po czasie zabiera klawiaturę i zawieszać się zaczyna ph spada do 0,00 niewiem gdzie przeciażenia może jakies pomysly do rozwiazania problemu?
 
#2
Wróżbita Jacek twierdzi, że bez kodu nie da rady wywróżyć.
Jeśli masz problem z kodem lub sprzętem, zadaj pytanie na forum. Nie odpowiadam na PW, jeśli nie dotyczą one spraw forum lub innych tematów prywatnych.

[Obrazek: SsIndaG.jpg]
 
#3
Kod:
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
LiquidCrystal_I2C lcd1(0x26,16,2);
LiquidCrystal_I2C lcd2(0x3f,16,2);
#include <IRremote.h>
#include <IRremoteIni.h>
#define RECV_PIN 13
IRrecv irrecv(RECV_PIN);
decode_results results;
 

#define Gora 0x80820DF
#define Dol 0x808728D
#define OK 0x808A05F
#define Lewo 0x808609F
#define Prawo 0x808E01F


#include <DS1307.h>
#define DS1307_ADDRESS_0x68
#include <Wire.h>


#include <DallasTemperature.h>
#include <OneWire.h>
#define ONE_WIRE_BUS 8
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

#define SensorPh 1          //pH meter Analog output to Arduino Analog Input 0
unsigned long int avgValue;  //Store the average value of the sensor feedback
float b;
int buf[10],temp;

#define Cyrkulator1 47
#define Cyrkulator2 48
#define Cyrkulator3 49
#define PompGl 50
#define PompOb 53
#define PompDol 51

int TD = 24;
int TG = 26;
int G1 = 52;
int W1 = 11;
int T1 = 8;

int GODZON = 7;
int MINON = 0;
int GODZOFF = 22;
int MINOFF = 0;
int dzienG;
int dzienM;
int nocG;
int nocM;



int LED1 = 9;
int LED2 = 10;
int LED3 = 12;
int GODZ;
int MIN;
int SEC;

int state;
int ledON =22;
int ledOFF = 7;

byte cursorLCD[8] = {B00000,B00000,B00110,B01111,B00110,B00000};
byte zegar[8] = {0b00000,0b01110,0b10101,0b10111,0b10001,0b01110,0b00000,0b00000};
byte stopnie[8] = {0b01000,0b10100,0b01000,0b00000,0b00000,0b00000,0b00000,0b00000};
byte termometr[8] = {0b01110,0b01010,0b01010,0b01110,0b01110,0b11111,0b11111,0b01110};
byte swiatlo[8] = {0b01110,0b10001,0b10001,0b10001,0b01110,0b01110,0b01110,0b00100};
byte kropla[8] = {0b00100,0b00100,0b01110,0b11111,0b11111,0b11111,0b01110,0b00000};

void setup()
{
  irrecv.enableIRIn();
  pinMode(Cyrkulator1,OUTPUT);
  pinMode(Cyrkulator2,OUTPUT);
  pinMode(Cyrkulator3,OUTPUT);
  pinMode(PompGl,OUTPUT);
  pinMode(PompOb,OUTPUT);
  pinMode(PompDol,OUTPUT);
  digitalWrite(Cyrkulator1,LOW);
  digitalWrite(Cyrkulator2,LOW);
  digitalWrite(Cyrkulator3,LOW);
  digitalWrite(PompGl,LOW);
  digitalWrite(PompOb,LOW);
  digitalWrite(PompDol,HIGH);

  pinMode(G1,OUTPUT);
  digitalWrite(G1,HIGH);
  pinMode(W1,OUTPUT);
  pinMode(T1,INPUT);
  pinMode(7,INPUT_PULLUP);
  Serial.begin(9600);
  pinMode(LED3,OUTPUT);
  digitalWrite(LED3,LOW);
  lcd.init();
  lcd.backlight();
  lcd1.init();
  lcd1.backlight();
  lcd2.init();
  lcd2.backlight();

  sensors.begin();
  Wire.begin();
  
 
  
  
   lcd.createChar(0,cursorLCD);
   lcd.createChar(2,stopnie);
   lcd.createChar(1,zegar);
   
   lcd1.createChar(4,swiatlo);
   lcd.createChar(5,kropla);
  
  
}
void loop()

  
  TIME();
   histeryza();
  PH();
  dolewka();
  pwm();
  noc();
  lcd2.setCursor(0,0);lcd2.print("TD-");lcd2.print(TD);
lcd2.setCursor(0,1);lcd2.print("TG-");lcd2.print(TG);  
lcd2.setCursor(7,0);lcd2.print("ON-");lcd2.print(GODZON);lcd2.print(":");lcd2.print(MINON);
  lcd2.setCursor(7,1);lcd2.print("OFF-");lcd2.print(GODZOFF);lcd2.print(":");lcd2.print(MINOFF); 

   
 
 char resultButton[7] = "null";

  getButtonPush(resultButton, 0, 200);
  
  if(!strcmp(resultButton,"ok"))
  LCDmenu();
  
}
  

void LCDmenu()
{
  char resultButton[7];
  int posCursor=0, opcMenu=-2;

  lcd.clear();
  lcd.setCursor(2,0); lcd.print("Oswietlenie");
  lcd.setCursor(2,1); lcd.print("Temp i Zegar");
  lcd.setCursor(2,2); lcd.print("Pompy");
  lcd.setCursor(2,3); lcd.print("Wyjdz");

  do{
    strcpy(resultButton,"null");
    getButtonPush(resultButton, 0, 200);

    lcd.setCursor(0, posCursor); lcd.write(byte(0));

    if(!strcmp(resultButton,"up"))
    LCDMoveCursor(&posCursor, 3, 'r');

    else if(!strcmp(resultButton,"down"))
    LCDMoveCursor(&posCursor, 3, 's');

    else if(!strcmp(resultButton,"ok"))
    opcMenu=posCursor;

    switch( opcMenu)
    {
      case 0:
      if(!strcmp(resultButton,"ok"))
      LCDmenu0();
      opcMenu=-2;
      break;
      case 1:
      if(!strcmp(resultButton,"ok"))
      LCDmenu1();
      opcMenu=-2;
      break;
      case 2:
      if(!strcmp(resultButton,"ok"))
      LCDmenu2();
      opcMenu=-2;
      break;
      case 3:
      if(!strcmp(resultButton,"ok"))
      opcMenu=-1;
      lcd.clear();
      break;
      
    };
    
  }
  while (opcMenu !=-1);
}
void LCDmenu0()
{
  char resultButton[7];
  int posCursor=0, opcMenu=-2;

  lcd.clear();
  lcd.setCursor(2,0); lcd.print("Wlaczenie");
  lcd.setCursor(2,1); lcd.print("Wylaczenie");
  lcd.setCursor(2,2); lcd.print("Wyjdz");

  do{
    strcpy(resultButton,"null");
    getButtonPush( resultButton, 0, 200);

    lcd.setCursor(0, posCursor); lcd.write(byte(0));

    if(!strcmp(resultButton,"up"))
    LCDMoveCursor(&posCursor, 2, 'r');

    else if(!strcmp(resultButton,"down"))
    LCDMoveCursor(&posCursor, 2, 's');

    else if(!strcmp(resultButton,"ok"))
    opcMenu = posCursor;

    switch (opcMenu)
  {
    case 0:
    if(!strcmp(resultButton,"ok"))
    LCDmenu3();
    opcMenu = -2;
    break;
    case 1:
    if(!strcmp(resultButton,"ok"))
    LCDmenu4();
    opcMenu = -2;
    break;
    case 2:
    if(!strcmp(resultButton,"ok"))
    opcMenu = -1;
    lcd.clear();
    break;
  };
  }
  while(opcMenu != -1);
  lcd.clear();
  lcd.setCursor(2,0); lcd.print("Oswietlenie");
  lcd.setCursor(2,1); lcd.print("Temp. i Zegar");
  lcd.setCursor(2,2); lcd.print("Pompy");
  lcd.setCursor(2,3); lcd.print("Wyjdz");
}
void LCDmenu1()
{
  char resultButton[7];
  int posCursor=0, opcMenu=-2;

  lcd.clear();
  lcd.setCursor(2,0); lcd.print("Temperatura");
  lcd.setCursor(2,1); lcd.print("Zegar");
  lcd.setCursor(2,2); lcd.print("Wyjdz");

  do{
    strcpy(resultButton,"null");
    getButtonPush(resultButton, 0, 200);

    lcd.setCursor(0, posCursor); lcd.write(byte(0));

    if(!strcmp(resultButton,"up"))
    LCDMoveCursor(&posCursor, 2, 'r');

    else if(!strcmp(resultButton,"down"))
    LCDMoveCursor(&posCursor, 2, 's');

    else if(!strcmp(resultButton,"ok"))
    opcMenu = posCursor;

    switch (opcMenu)
    {
      case 0:
      if(!strcmp(resultButton,"ok"))
      LCDmenu5();
      opcMenu=-2;
      break;
      case 1:
      if(!strcmp(resultButton,"ok"))
      LCDmenu6();
      opcMenu=-2;
      break;
      case 2:
      if(!strcmp(resultButton,"ok"))
      opcMenu=-1;
      lcd.clear();
      break;
      
    };
  }
  while (opcMenu !=-1);
  lcd.clear();
  lcd.setCursor(2,0); lcd.print("Oswietlenie");
  lcd.setCursor(2,1); lcd.print("Temp i Zegar");
  lcd.setCursor(2,2); lcd.print("Pompy");
  lcd.setCursor(2,3); lcd.print("Wyjdz");
}
void LCDmenu2()
{
  char resultButton[7];
  int posCursor=0, opcMenu=-2;

  lcd.clear();
  lcd.setCursor(2,0); lcd.print("Cyrkulacja");
  lcd.setCursor(2,1); lcd.print("Pompy");
  lcd.setCursor(2,2); lcd.print("Wyjdz");

  do{
    strcpy(resultButton,"null");
    getButtonPush(resultButton, 0, 200);

    lcd.setCursor(0,posCursor); lcd.write(byte(0));

    if(!strcmp(resultButton,"up"))
    LCDMoveCursor(&posCursor, 2, 'r');

    else if(!strcmp(resultButton,"down"))
    LCDMoveCursor(&posCursor, 2, 's');

    else if(!strcmp(resultButton,"ok"))
    opcMenu= posCursor;

    switch (opcMenu)
    {
      case 0:
      if(!strcmp(resultButton,"ok"))
      LCDmenu7();
      opcMenu=-2;
      break;
      case 1:
      if(!strcmp(resultButton,"ok"))
      LCDmenu8();
      opcMenu=-2;
      break;
      case 2:
      if(!strcmp(resultButton,"ok"))
      opcMenu=-1;
      lcd.clear();
      break;
    };
    
  }
  while(opcMenu !=-1);
  lcd.clear();
  lcd.setCursor(2,0); lcd.print("Oswietlenie");
  lcd.setCursor(2,1); lcd.print("Temp i Zegar");
  lcd.setCursor(2,2); lcd.print("Pompy");
  lcd.setCursor(2,3); lcd.print("Wyjdz");
}
void LCDmenu3()
{
  char resultButton[7];
  int posCursor=0, opcMenu=-2;

  lcd.clear();
  lcd.setCursor(2,0); lcd.print("Godz wl.");lcd.setCursor(15,0);lcd.print(GODZON);
  lcd.setCursor(2,1); lcd.print("Min. wl.");lcd.setCursor(15,1);lcd.print(MINON);
  lcd.setCursor(2,2); lcd.print("Wyjdz");
  do{
    strcpy(resultButton,"null");
    getButtonPush(resultButton, 0, 200);

    lcd.setCursor(0,posCursor); lcd.write(byte(0));

    if(!strcmp(resultButton,"up"))
    LCDMoveCursor(&posCursor, 2, 'r');

    else if(!strcmp(resultButton,"down"))
    LCDMoveCursor(&posCursor, 2, 's');

    else if(!strcmp(resultButton,"ok")|| !strcmp(resultButton,"left") || !strcmp(resultButton,"right"))
    opcMenu = posCursor;

    switch(opcMenu)
  {
    case 0:
    
    lcd.setCursor(15,0);
    if(GODZON<10)
      lcd.print("0");
    lcd.print(GODZON);
    if(!strcmp(resultButton,"right"))
    if ((GODZON < 23))
    GODZON++;
    if(!strcmp(resultButton,"left"))
    if(GODZON > 0)
    GODZON--;
    opcMenu=-2;
    break;
    case 1:
    lcd.setCursor(15,1);
    if(MINON<10)
    lcd.print("0");
    lcd.print(MINON);
    if(!strcmp(resultButton,"right"))
    if(MINON <59)
    MINON++;
    if(!strcmp(resultButton,"left"))
    if(MINON >0)
    MINON--;
    opcMenu=-2;
    break;
    case 2:
    if(!strcmp(resultButton,"ok"))
    opcMenu=-1;
    lcd.clear();
    break;
  };
  }
  while(opcMenu !=-1);
  lcd.clear();
  lcd.setCursor(2,0); lcd.print("Wlaczenie");
  lcd.setCursor(2,1); lcd.print("Wylaczenie");
  lcd.setCursor(2,2); lcd.print("Wyjdz");
}
void LCDmenu4()
{   
 char resultButton[7];
  int posCursor=0, opcMenu=-2;

  lcd.clear();
  lcd.setCursor(2,0);lcd.print("Godz. wyl.");lcd.setCursor(15,0);lcd.print(GODZOFF);
  lcd.setCursor(2,1);lcd.print("Min. wyl."); lcd.setCursor(15,1);lcd.print(MINOFF);
  lcd.setCursor(2,2);lcd.print("Wyjdz");

  do{
    strcpy(resultButton,"null");
    getButtonPush(resultButton, 0, 200);

    if(!strcmp(resultButton,"up"))
    LCDMoveCursor(&posCursor, 2, 'r');

    else if(!strcmp(resultButton,"down"))
    LCDMoveCursor(&posCursor, 2, 's');

    else if(!strcmp(resultButton,"ok")|| !strcmp(resultButton,"right")|| !strcmp(resultButton,"left"))
    opcMenu = posCursor;

    switch(opcMenu)
    {
      case 0:
      lcd.setCursor(15,0);
      if(GODZOFF<10)
      lcd.print("0");
      lcd.print(GODZOFF);
      if(!strcmp(resultButton,"right"))
      if(GODZOFF < 23)
      GODZOFF++;
      if(!strcmp(resultButton,"left"))
      if(GODZOFF >0)
      GODZOFF--;
      opcMenu=-2;
      break;
      case 1:
      lcd.setCursor(15,1);
      if(MINOFF<10)
      lcd.print("0");
      lcd.print(MINOFF);
      if(!strcmp(resultButton,"right"))
      if(MINOFF < 59)
      MINOFF++;
      if(!strcmp(resultButton,"left"))
      if(MINOFF >0)
      MINOFF--;
      opcMenu=-2;
      break;
      case 2:
      if(!strcmp(resultButton,"ok"))
      opcMenu=-1;
      lcd.clear();
      break;
    };
  }
  while(opcMenu !=-1);
  lcd.clear();
  lcd.setCursor(2,0); lcd.print("Wlaczenie");
  lcd.setCursor(2,1); lcd.print("Wylaczenie");
  lcd.setCursor(2,2); lcd.print("Wyjdz");      
}
void LCDmenu5()
{
  char resultButton[7];
  int posCursor=0, opcMenu=-2;

  lcd.clear();
  lcd.setCursor(2,0);lcd.print("Temp. min.-");lcd.print(TD);
  lcd.setCursor(2,1);lcd.print("Temp. max.-");lcd.print(TG);
  lcd.setCursor(2,2);lcd.print("Wyjdz");

  do{
    strcpy(resultButton,"null");
    getButtonPush(resultButton, 2, 200);

    lcd.setCursor(0,posCursor); lcd.write(byte(0));

    if(!strcmp(resultButton,"up"))
    LCDMoveCursor(&posCursor, 2, 'r');

    else if(!strcmp(resultButton,"down"))
    LCDMoveCursor(&posCursor, 2, 's');

    else if(!strcmp(resultButton,"ok")|| !strcmp(resultButton,"left") || !strcmp(resultButton,"right"))
    opcMenu = posCursor;

    switch(opcMenu)
    {
      case 0:
      lcd.setCursor(13,0);
      lcd.print(TD);
      if(!strcmp(resultButton,"right"))
      if(TD<27)
      TD++;
      if(!strcmp(resultButton,"left"))
      if(TD>23)
      TD--;
      opcMenu=-2;
      break;
      case 1:
      lcd.setCursor(13,1);
      lcd.print(TG);
      if(!strcmp(resultButton,"right"))
      if(TG<27)
      TG++;
      if(!strcmp(resultButton,"left"))
      if(TG>23)
      TG--;
      opcMenu=-2;
      break;
      case 2:
      if(!strcmp(resultButton,"ok"))
      opcMenu=-1;
      lcd.clear();
      break;
    };
  }
  while(opcMenu !=-1);
  lcd.clear();
  lcd.setCursor(2,0);lcd.print("Temperatura");
  lcd.setCursor(2,1);lcd.print("Zegar");
  lcd.setCursor(2,2);lcd.print("Wyjdz");
}
void LCDmenu6()
{
  char resultButton[7];
  int posCursor=0, opcMenu=-2;

  lcd.clear();
  lcd.setCursor(2,0);lcd.print("Ust.godzine  ");lcd.print(GODZ);
  lcd.setCursor(2,1);lcd.print("Ust. minute  ");lcd.print(MIN);
  lcd.setCursor(2,2);lcd.print("Wyjdz");

  do{
    strcpy(resultButton,"null");
    getButtonPush(resultButton, 0, 200);

    lcd.setCursor(0,posCursor); lcd.write(byte(0));

    if(!strcmp(resultButton,"up"))
    LCDMoveCursor(&posCursor, 2, 'r');

    else if(!strcmp(resultButton,"down"))
    LCDMoveCursor(&posCursor, 2, 's');

    else if(!strcmp(resultButton,"ok")|| !strcmp(resultButton,"left") || !strcmp(resultButton,"right"))
    opcMenu = posCursor;

    switch(opcMenu)
    {
       case 0:
       lcd.setCursor(15,0);
        if(GODZ<10)                      
        lcd.print("0");
        lcd.print(GODZ);
       if(!strcmp(resultButton,"right"))
      if(GODZ < 23)
      GODZ++;
      if(!strcmp(resultButton,"left"))
      if(GODZ > 0)
      GODZ--;
      RTC.set(DS1307_HR,GODZ);
      opcMenu = -2;
      break;
      case 1:
      lcd.setCursor(15,1);
      if(MIN<10)
      lcd.print("0");
      lcd.print(MIN);
      if(!strcmp(resultButton,"right"))
      if(MIN < 59)
      MIN++;
      if(!strcmp(resultButton,"left"))
      if(MIN>0)
      MIN--;
      RTC.set(DS1307_MIN,MIN);
       opcMenu = -2;
       break;
         break;
         case 2:
         opcMenu =-1;
         lcd.clear();
         break;
         
    };
  }
  while(opcMenu !=-1);
   lcd.clear();
   lcd.setCursor(2,0); lcd.print("Temperatura");
  lcd.setCursor(2,1); lcd.print("Zegar");
  lcd.setCursor(2,2); lcd.print("Wyjdz");
  
}
void LCDmenu7()
{
  char *stan;
  char resultButton[7];
 int posCursor=0, opcMenu=-2;

  lcd.clear();
  lcd.setCursor(2,0);lcd.print("Cyrkulator1 ");
  lcd.setCursor(2,1);lcd.print("Cyrkulator2 ");
  lcd.setCursor(2,2);lcd.print("Cyrkulator3 ");
  lcd.setCursor(2,3);lcd.print("Wyjdz");

    do{
    strcpy(resultButton,"null");
    getButtonPush( resultButton, 0, 200);

   lcd.setCursor(0, posCursor);lcd.write(byte(0));

   if(!strcmp(resultButton,"up"))
   LCDMoveCursor(&posCursor, 3, 'r');

   else if(!strcmp(resultButton,"down"))
   LCDMoveCursor(&posCursor, 3, 's');

   else if(!strcmp(resultButton,"ok") || !strcmp(resultButton,"right") || !strcmp(resultButton,"left"))
   opcMenu = posCursor;

   switch( opcMenu )
   {
    case 0:
    if(!strcmp(resultButton,"right"))
    {
    state=LOW;
    lcd1.setCursor(0,1);lcd1.print("C1,");
    }
    else if(!strcmp(resultButton,"left"))
    {
    state=HIGH;
    lcd1.setCursor(0,1);lcd1.print("  ,");
    }    
    digitalWrite(Cyrkulator1,state);
    opcMenu=-2;
    break;
    case 1:
    if(!strcmp(resultButton,"right"))
    {
    state=LOW;
    lcd1.setCursor(3,1);lcd1.print("C2,");
    }
    else if(!strcmp(resultButton,"left"))
    {
    state=HIGH;
    lcd1.setCursor(3,1);lcd1.print("  ,");
    } 
    digitalWrite(Cyrkulator2,state);
    opcMenu=-2;
    break;
    case 2:
    if(!strcmp(resultButton,"right"))
    {
    state=LOW;
    lcd1.setCursor(6,1);lcd1.print("C3,");
    }
    else if(!strcmp(resultButton,"left"))
    {
    state=HIGH;
    lcd1.setCursor(6,1);lcd1.print("  ,");
    } 
    digitalWrite(Cyrkulator3,state);
    opcMenu=-2;
    break;
    case 3:
    if(!strcmp(resultButton,"ok"))
    opcMenu =-1;
    break;
   };
  }
  while (opcMenu !=-1);
  lcd.clear();
  lcd.setCursor(2,0); lcd.print("Cyrkulacja");
  lcd.setCursor(2,1); lcd.print("Pompy");
  lcd.setCursor(2,2); lcd.print("Wyjdz");
  
}
void LCDmenu8()
{
  
  char resultButton[7];
 int posCursor=0, opcMenu=-2;

  lcd.clear();
  lcd.setCursor(2,0);lcd.print("Pomp.Gl. ");
  lcd.setCursor(2,1);lcd.print("Pomp.Ob. ");
  lcd.setCursor(2,2);lcd.print("Wyjdz");

    do{
    strcpy(resultButton,"null");
    getButtonPush( resultButton, 0, 200);

   lcd.setCursor(0, posCursor);lcd.write(byte(0));

   if(!strcmp(resultButton,"up"))
   LCDMoveCursor(&posCursor, 2, 'r');

   else if(!strcmp(resultButton,"down"))
   LCDMoveCursor(&posCursor, 2, 's');

   else if(!strcmp(resultButton,"ok") || !strcmp(resultButton,"right") || !strcmp(resultButton,"left"))
   opcMenu = posCursor;

   switch( opcMenu )
   {
    case 0:
    if(!strcmp(resultButton,"right"))
    {
    state=LOW;
    lcd1.setCursor(9,1);lcd1.print("PG,");
    }
    else if(!strcmp(resultButton,"left"))
    {
    state=HIGH;
    lcd1.setCursor(9,1);lcd1.print("  ,");
    } 
    digitalWrite(PompGl,state);
    
    opcMenu=-2;
    break;
    case 1:
    if(!strcmp(resultButton,"right"))
    {
    state=LOW;
    lcd1.setCursor(12,1);lcd1.print("PO,");
    }
    else if(!strcmp(resultButton,"left"))
    {
    state=HIGH;
    lcd1.setCursor(12,1);lcd1.print("  ,");
    } 
    digitalWrite(PompOb,state);
    
    opcMenu=-2;
    break;
    
    case 2:
    if(!strcmp(resultButton,"ok"))
    opcMenu =-1;
    break;
   };
  }
  while (opcMenu !=-1);
  lcd.clear();
  lcd.setCursor(2,0); lcd.print("Cyrkulacja");
  lcd.setCursor(2,1); lcd.print("Pompy");
  lcd.setCursor(2,2); lcd.print("Wyjdz");
}
void TIME()
{
  GODZ = (RTC.get(DS1307_HR,true));              
   MIN = (RTC.get(DS1307_MIN,true));              
   SEC = (RTC.get(DS1307_SEC,true));
   
  if(GODZ<10)                     
      {
        Serial.print("0");
        Serial.print(GODZ);
      }
    else
      {
        Serial.print(GODZ);
      }
    Serial.print(":");
    if(MIN<10)                      
      {
        Serial.print("0");
        Serial.print(MIN);
      }
    else
      {
        Serial.print(MIN);
      } 
    Serial.print(":");
    if(SEC<10)                      
      {
        Serial.print("0");
        Serial.print(SEC);
      }
    else
      {
        Serial.print(SEC);
      }

               
               lcd.setCursor(0,0);
               lcd.write(byte(1));    
    if(GODZ<10)                     
      {
        lcd.print("0");
        lcd.print(GODZ);
      }
    else
      {
        lcd.print(GODZ);
      }
    lcd.print(":");
    if(MIN<10)                      
      {
        lcd.print("0");
        lcd.print(MIN);
      }
    else
      {
        lcd.print(MIN);
      } 
    lcd.print(":");
    if(SEC<10)                      
      {
        lcd.print("0");
        lcd.print(SEC);
      }
    else
      {
        lcd.print(SEC);
      } 
    delay(500);  

}
void histeryza(){
  sensors.requestTemperatures(); 
    float tempC = (sensors.getTempCByIndex(0));
             if (tempC < TD)
        {
          digitalWrite(W1,LOW);
          digitalWrite(G1,LOW);
         lcd.setCursor(16,3);
         lcd.print("G-ON");
                    
          
        }
      if ((TD <= tempC)&&(tempC <= TG))
        {
          digitalWrite(W1,LOW);
          digitalWrite(G1,HIGH);
          lcd.setCursor(16,3);
          lcd.print("    ");
                    
        }       
      if (TG < tempC)
        {
          digitalWrite(W1,HIGH);
          digitalWrite(G1,HIGH);
          lcd.setCursor(16,3);
          lcd.print("W-ON");
          
        }
        lcd.setCursor(0,1);
        lcd.print("Temp.akw.  ");
        lcd.print(sensors.getTempCByIndex(0)); 
        lcd.print("C");
        lcd.setCursor(0,2);
        lcd.print("Temp.Lamp. ");
        lcd.print(sensors.getTempCByIndex(1));
    Serial.print(sensors.getTempCByIndex(0));
    Serial.print(sensors.getTempCByIndex(1));
                lcd.print("C");
}
void PH()
{
  for(int i=0;i<10;i++)       //Get 10 sample value from the sensor for smooth the value
  { 
    buf[i]=analogRead(SensorPh);
    delay(10);
  }
  for(int i=0;i<9;i++)        //sort the analog from small to large
  {
    for(int j=i+1;j<10;j++)
    {
      if(buf[i]>buf[j])
      {
        temp=buf[i];
        buf[i]=buf[j];
        buf[j]=temp;
      }
    }
  }
  avgValue=0;
  for(int i=2;i<8;i++)                      //take the average value of 6 center sample
    avgValue+=buf[i];
  float phValue=(float)avgValue*5.0/1024/6; //convert the analog into millivolt
  phValue=3.5*phValue;
  
  
  lcd.setCursor(0,3);
  lcd.print("PH:");  
  lcd.print(phValue,2);
 
  
   

}

void pwm(){
  
   int CZAS = (GODZ*60+MIN);
   //ustawienie czasu pwm********************************************
                           
    
    int maxDN = 100;
                int maxDB = 100;
    
    int STEP = 1;                                             
    int ZMIANA = 100;                      

//***************************czas***************************
    int czas1 = (GODZON*60+MINON);           
    int czas2 = (GODZOFF*60+MINOFF);             

    GODZ = (RTC.get(DS1307_HR,true));             
    MIN = (RTC.get(DS1307_MIN,true));             
    SEC = (RTC.get(DS1307_SEC,true));             

//***********************oświetlenie************************
    static int DN;                        
          static int DB;
    
    byte mocDN[101] =                      
      {
              1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
        16,17,18,19,20,21,22,23,24,25,26,27,28,
        29,30,32,34,36,38,40,42,44,46,48,50,52,
        54,56,58,60,62,64,66,68,70,72,74,76,78,
        80,82,84,86,88,90,93,96,99,102,105,108,
        111,114,117,120,123,126,129,132,135,
        138,141,144,147,150,154,158,162,166,
        170,174,178,182,186,190,194,198,202,
        206,210,214,220,230,240,250,255 
      }; 
      
      byte mocDB[101] =                      
      {
              0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
        16,17,18,19,20,21,22,23,24,25,26,27,28,
        29,30,32,34,36,38,40,42,44,46,48,50,52,
        54,56,58,60,62,64,66,68,70,72,74,76,78,
        80,82,84,86,88,90,93,96,99,102,105,108,
        111,114,117,120,123,126,129,132,135,
        138,141,144,147,150,154,158,162,166,
        170,174,178,182,186,190,194,198,202,
        206,210,214,220,235,245,255
      }; 
      
      
    if (CZAS<czas1)                 //noc
      {
                                DB=0;
        DN=1;
        
         Serial.print("noc   ");
         lcd.setCursor(11,0);
         lcd.print("Noc  ");
      }
        
    if ((czas1<=CZAS)&&(CZAS<(czas1+ZMIANA)))           //świt
      {
                                DB=((CZAS-czas1)/STEP);
        DN=((CZAS-czas1)/STEP);    
         
        Serial.print("swit ");
        lcd.setCursor(11,0);
         lcd.print("Swit ");
        
      }

    if (((czas1+ZMIANA)<=CZAS)&&(CZAS<(czas2-ZMIANA)))        //dzień
      {
                                DB=maxDB;
        DN=maxDN;   
        
        Serial.print("dzien ");
        lcd.setCursor(11,0);
         lcd.print("Dzien");
                               
        
      }
      
    if(((czas2-ZMIANA)<=CZAS)&&(CZAS<czas2))          //zmrok
      {
                                DB=((czas2-CZAS)/STEP);
        DN=((czas2-CZAS)/STEP);     

        
                                Serial.print("ZMROK ");
                                lcd.setCursor(11,0);
         lcd.print("Zmrok");
                                
      }
      
    if(czas2<=CZAS)                     //noc
      {
                                DB=0;
        DN=1;     
        lcd.setCursor(11,0);
         lcd.print("Noc  ");
        Serial.print("NOC   "); 
        
      }

    analogWrite(LED1, mocDN[DN]);
                analogWrite(LED2, mocDB[DB]);
                lcd1.setCursor(0,0);
                lcd1.write(byte(4));
                lcd1.print("N-");
                lcd1.print(DN);
                lcd1.print("%");
                lcd1.setCursor(8,0);
                lcd1.write(byte(4));
                lcd1.print("B-");
                lcd1.print(DB);
                lcd1.print("%");
                
}

void dolewka(){
  
  if (digitalRead(7) == LOW){
digitalWrite(PompDol, LOW);


lcd.setCursor(11,3);
lcd.print("D-Lo");
lcd1.setCursor(14,1);
lcd1.print("PD");
  }else{
    digitalWrite(PompDol, HIGH);
    lcd1.setCursor(14,1);
    lcd1.print("  ");
    lcd.setCursor(11,3);
    lcd.print("D-Ok");
  }
}
void noc(){
  if(ledON==GODZ);
  {
    digitalWrite(LED3,HIGH);
    lcd.setCursor(18,0);
    lcd.print("ON");
  }
  if(ledOFF==GODZ);
  {
    digitalWrite(LED3,LOW);
    lcd.setCursor(18,0);
    lcd.print("OF");
  }
}  
void LCDMoveCursor(int *pos, int max, char ope)
{
  // Warunek: Parametr ope powinien być znak „s” lub „R”, aby dodać lub odjąć pozycję.
  //         Maksymalny parametr wskazuje liczbę opcji do wyboru.
  // Postcondition: nowa wartość kursor jest zwracany przez odniesienie.
  if(ope == 's')
    if(*pos < max)  *pos += 1;
    else      *pos = 0;
  else
    if(*pos > 0)  *pos -= 1;
    else      *pos = max;

  // Se borran los cursores:
  lcd.setCursor(0, 0); lcd.print(" ");
  lcd.setCursor(0, 1); lcd.print(" ");
  lcd.setCursor(0, 2); lcd.print(" ");
  lcd.setCursor(0, 3); lcd.print(" ");
}



// PROCEDURA Jeśli nastąpiła KONTROLA nowe prasy z przyciskami:
void getButtonPush(char *resultButton, int pin, int pause)
{
  // Warunek: Parametr kołek musi sworzeń analog Arduino.
  // Postcondition: Parametr resultButton jest ciągiem przez odniesienie powrót wciśnięty przycisk.
  //          El parámetro pause ha de ser un numero entero igual o mayor que 0.
  // Info:      El teclado usado es este: http://giltesa.com/?p=11458 , según el tipo de resistencias habrá que cambiar las condicionales para adaptarse al valor leído desde el pin Analógico.

  int data = analogRead(0);

  if (data > 10)
  {
    if (data > 330 && data < 370)
      strcpy(resultButton,"up");
    else if (data > 100 && data < 190)
      strcpy(resultButton,"ok");
    else if (data > 240 && data < 280)
      strcpy(resultButton,"left");
    else if (data > 200 && data < 230)
      strcpy(resultButton,"down");
    else if (data > 480 && data < 520)
      strcpy(resultButton,"right");

    delay(pause);
    Serial.print(A1);
  }
}
 
#4
Dobra chyba juz wiem niektore piny uwalone mialem chyba zware :d
 
  


Skocz do:


Przeglądający: 1 gości