Skocz do zawartości

Projekt akwarium


szybki946

Pomocna odpowiedź

Witam mam program do sterowania akwarium tylko ze mam z nim problem, nie wiem czyja jest to wina programu czy arduino. Chodzi o to ze zacina mi się wyświetlacz i staje godzina na wyświetlaczu a o to ten program :

#include

#include

#define DS1307_ADDRESS 0x68

#include

#include

#include

#define BACKLIGHT_PIN 3 //lcd

#define ONE_WIRE_BUS 4 //TU ZMIENIAMY PIN DO TERMOMETRU

byte zero = 0x00;

OneWire oneWire(ONE_WIRE_BUS); //termometr - one wire

DallasTemperature sensors(&oneWire); //termometr

LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7);

//*************************************opis wyjść****************************************************

int LED1 = 3; // OŚWIETLENIE LED

int FIL = 14; // FILTR

int CO2 = 15; // BUTLA CO2

int KAR = 16; // KARMINIK

int T1 = 4; // TERMOMETR

int GODZ; //Godzina

int MIN; //Minuta

int SEC; //Sekundy

//****************************************SETUP**************************************************/

void setup()

{

lcd.begin(20,4); //lcd

Wire.begin();

lcd.setBacklight(HIGH); //lcd

lcd.home(); //lcd

sensors.begin();

pinMode(LED1, OUTPUT); // OŚWIETLENIE LED

pinMode(FIL, OUTPUT); // FILTR

pinMode(CO2, OUTPUT); // BUTLA CO2

pinMode(KAR, OUTPUT); // KARMINIK

pinMode(T1, INPUT); //TERMOMETR

Serial.begin(9600);

}

//*****************************************LOOP*****************************************/

void loop()

{

int CZAS = (GODZ*60+MIN);

sensors.requestTemperatures();

int dzienG = 10;

int dzienM = 00;

int nocG = 21;

int nocM = 00;

int maxD1 = 100;

int STEP = 1;

int ZMIANA = 100;

//***************************czas***************************

int czas1 = (dzienG*60+dzienM);

int czas2 = (nocG*60+nocM);

//***dane do zmian - zmieniamy informacje tylko w tej części*******

//***************************PORANEK***************************

int gFPON = 11; //poranek

int mFPON = 03; //poranek

int gFPOFF = 11; //poranek

int mFPOFF = 04; //poranek

int gKPON = 11; //poranek

int mKPON = 03; //poranek

int gKPOFF = 11; //poranek

int mKPOFF = 04; //poranek

//***************************DZIEŃ***************************

int gFDON = 16; //dzień

int mFDON = 06; //dzień

int gFDOFF = 16; //dzień

int mFDOFF = 07; //dzień

int gKDON = 16; //dzień

int mKDON = 06; //dzień

int gKDOFF = 16; //dzień

int mKDOFF = 07; //dzień

//***************************WIECZÓR***************************

int gFWON = 11; //wieczór

int mFWON = 8; //wieczór

int gFWOFF = 11; //wieczór

int mFWOFF = 9; //wieczór

int gKWON = 18; //wieczór

int mKWON = 8; //wieczór

int gKWOFF = 18; //wieczór

int mKWOFF = 8; //wieczór

//***************************czas***************************

int czasFPON = (gFPON*60+mFPON); //rano filtr OFF karmik ON

int czasFPOFF = (gFPOFF*60+mFPOFF); //rano filtr ON karmik OFF

int czasFDON = (gFDON*60+mFDON); //dzień filtr OFF karmik ON

int czasFDOFF = (gFDOFF*60+mFDOFF); //dzień filtr ON karmik OFF

int czasFWON = (gFWON*60+mFWON); //wieczór filtr OFF karmik ON

int czasFWOFF = (gFWOFF*60+mFWOFF); //wieczór filtr ON karmik OFF

int czasKPON = (gKPON*60+mKPON); //rano filtr OFF karmik ON

int czasKPOFF = (gKPOFF*60+mKPOFF); //rano filtr ON karmik OFF

int czasKDON = (gKPON*60+mKPON); //dzień filtr OFF karmik ON

int czasKDOFF = (gKPOFF*60+mKPOFF); //dzień filtr ON karmik OFF

int czasKWON = (gKWON*60+mKWON); //wieczór filtr OFF karmik ON

int czasKWOFF = (gKWOFF*60+mKWOFF); //wieczór filtr ON karmik OFF

GODZ = (RTC.get(DS1307_HR,true));

MIN = (RTC.get(DS1307_MIN,true));

SEC = (RTC.get(DS1307_SEC,true));

//***********************oświetlenie************************

static int D1;

int mocD1[101] =

{

250,
245,240,235,230,225,220,215,210,206,202,
198,194,190,186,182,178,174,170,166,162,
158,154,150,147,144,141,138,135,132,129,
126,123,120,117,114,111,108,105,102,100,
96,93,90,88,86,84,82,80,78,76,
74,72,70,68,66,64,62,60,58,56,
54,52,50,48,46,44,42,40,38,36,
34,32,30,29,28,27,26,25,24,23,
22,20,18,16,15,14,13,12,11,10,
9,8,7,6,5,4,3,2,1,0,
};

//***********************NOC************************

if (CZAS

{

D1=0;

Serial.print("noc ");

lcd.setCursor(11,0);

lcd.print("NOC ");

lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);

digitalWrite(CO2, LOW); //CO2 OFF

}

if ((CZAS

{

digitalWrite(FIL, HIGH); //FILTR ON

digitalWrite(KAR, LOW); //CO2 OFF

lcd.setCursor(0,1);

lcd.print("FILTR:ON ");

lcd.setCursor(0,2);

lcd.print("KARMNIK:OFF ");

}

//***********************SWIT************************

if ((czas1<=CZAS)&&(CZAS<(czas1+ZMIANA))) //świt

{

D1=((CZAS-czas1)/STEP);

Serial.print("swit ");

lcd.setCursor(11,0);

lcd.print("SWIT ");

lcd.setBacklightPin(BACKLIGHT_PIN, NEGATIVE);

digitalWrite(CO2, HIGH); //CO2 ON

//***********************KARMIENIE_PORANEK************************

}

if ((czasFPON<=CZAS)&&(CZAS

{

digitalWrite(KAR, HIGH); //CO2 ON

digitalWrite(FIL, LOW); //FILTR ON

lcd.setCursor(0,1);

lcd.print("FILTR:OFF ");

lcd.setCursor(0,2);

lcd.print("KARMNIK:ON ");

}

if ((czasFPOFF<=CZAS)&&(CZAS

{

digitalWrite(KAR, LOW); //CO2 ON

digitalWrite(FIL, HIGH); //FILTR ON

lcd.setCursor(0,1);

lcd.print("FILTR:ON ");

lcd.setCursor(0,2);

lcd.print("KARMNIK:OFF ");

}

//***********************************************

//***********************DZIEN************************

if (((czas1+ZMIANA)<=CZAS)&&(CZAS<(czas2-ZMIANA))) //dzień

{

D1=maxD1;

Serial.print("dzien ");

lcd.setCursor(11,0);

lcd.print("DZIEN ");

lcd.setBacklightPin(BACKLIGHT_PIN, NEGATIVE);

digitalWrite(CO2, HIGH); //CO2 ON

//***********************KARMIENIE_DZIEN************************

}

if ((czasFDON<=CZAS)&&(CZAS

{

digitalWrite(KAR, HIGH); //CO2 ON

digitalWrite(FIL, LOW); //FILTR ON

lcd.setCursor(0,1);

lcd.print("FILTR:OFF ");

lcd.setCursor(0,2);

lcd.print("KARMNIK:ON ");

}

if ((czasFDOFF<=CZAS)&&(CZAS

{

digitalWrite(KAR, LOW); //CO2 ON

digitalWrite(FIL, HIGH); //FILTR ON

lcd.setCursor(0,1);

lcd.print("FILTR:ON ");

lcd.setCursor(0,2);

lcd.print("KARMNIK:OFF ");

}

//***********************************************

//***********************ZMROK************************

if(((czas2-ZMIANA)<=CZAS)&&(CZAS

{

D1=((czas2-CZAS)/STEP);

Serial.print("zmrok ");

lcd.setCursor(11,0);

lcd.print("ZMROK ");

lcd.setBacklightPin(BACKLIGHT_PIN, NEGATIVE);

digitalWrite(CO2, HIGH); //CO2 ON

//***********************KARMIENIE_WIECZUR************************

}

if ((czasFWON<=CZAS)&&(CZAS

{

digitalWrite(KAR, HIGH); //CO2 ON

digitalWrite(FIL, LOW); //FILTR ON

lcd.setCursor(0,1);

lcd.print("FILTR:OFF ");

lcd.setCursor(0,2);

lcd.print("KARMNIK:ON ");

}

if (czasFWOFF<=CZAS) //od karmienia wieczornego do północy

{

digitalWrite(KAR, LOW); //CO2 ON

digitalWrite(FIL, HIGH); //FILTR ON

lcd.setCursor(0,1);

lcd.print("FILTR:ON ");

lcd.setCursor(0,2);

lcd.print("KARMNIK:OFF ");

}

//***********************NOC************************

if (czas2<=CZAS) //noc

{

D1=0;

Serial.print("noc ");

lcd.setCursor(11,0);

lcd.print("NOC ");

lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);

digitalWrite(CO2, LOW); //CO2 ON

lcd.setCursor(0,1);

lcd.print("FILTR:ON ");

lcd.setCursor(0,2);

lcd.print("KARMNIK:OFF ");

}

analogWrite(LED1, mocD1[D1]);

lcd.setCursor(0,4);

lcd.print("TEMPERATURA:");

lcd.print(sensors.getTempCByIndex(1),1);

//lcd.print("C ");

//lcd.setCursor(9,1);

//lcd.print("A:");

//lcd.print(sensors.getTempCByIndex(0),1);

//lcd.print("C ");

lcd.setCursor(11,1);

lcd.print("LED:");

lcd.print(D1);

lcd.print("% ");

lcd.setCursor(0,0);

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);

}

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);

}

//Serial.print(" S:");

//Serial.print(sensors.getTempCByIndex(1));

//Serial.print("C A:");

//Serial.print(sensors.getTempCByIndex(0));

//Serial.println("C ");

delay (200);

}

Link do komentarza
Share on other sites

Uwaga! Wszystkie kody programów muszą być umieszczane wewnątrz tagów [­/code]!

To primo.

Secundo: Mógłbyś postarać się ograniczyć kod do minimalnej wersji niezbędnej do odtworzenia błędu?

Trio: Mówiłem że Barabasza? xD

Link do komentarza
Share on other sites

szybki946, jeśli usuniesz dowolny kod to zacznie działać?

Na przykład ten:

//***********************************************
//***********************ZMROK************************
if(((czas2-ZMIANA)<=CZAS)&&(CZAS<czas2)) //zmrok
{
D1=((czas2-CZAS)/STEP);
Serial.print("zmrok ");
lcd.setCursor(11,0);
lcd.print("ZMROK ");
lcd.setBacklightPin(BACKLIGHT_PIN, NEGATIVE);
digitalWrite(CO2, HIGH); //CO2 ON
//***********************KARMIENIE_WIECZUR************************
}

if ((czasFWON<=CZAS)&&(CZAS<czasFWOFF)) //karmienie wieczorne
{

digitalWrite(KAR, HIGH); //CO2 ON
digitalWrite(FIL, LOW); //FILTR ON
lcd.setCursor(0,1);
lcd.print("FILTR:OFF ");

lcd.setCursor(0,2);
lcd.print("KARMNIK:ON ");
} 

Poza tym przypominam o tagach [­code].

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

szybki946, jeśli usuniesz dowolny kod to zacznie działać?

Na przykład ten:

//***********************************************
//***********************ZMROK************************
if(((czas2-ZMIANA)<=CZAS)&&(CZAS<czas2)) //zmrok
{
D1=((czas2-CZAS)/STEP);
Serial.print("zmrok ");
lcd.setCursor(11,0);
lcd.print("ZMROK ");
lcd.setBacklightPin(BACKLIGHT_PIN, NEGATIVE);
digitalWrite(CO2, HIGH); //CO2 ON
//***********************KARMIENIE_WIECZUR************************
}

if ((czasFWON<=CZAS)&&(CZAS<czasFWOFF)) //karmienie wieczorne
{

digitalWrite(KAR, HIGH); //CO2 ON
digitalWrite(FIL, LOW); //FILTR ON
lcd.setCursor(0,1);
lcd.print("FILTR:OFF ");

lcd.setCursor(0,2);
lcd.print("KARMNIK:ON ");
} 

Poza tym przypominam o tagach [­code].

Co do zmroku nie mogę go usunąć bo on odpowiada za pwm od ledów czyli robi się wieczór.Dlaczego usunąć widziałem dłuższe programy o podobny działaniu i było ok.Dodam jeszcze tylko że to nie zawsze tak się dzieje czasem widzę że jest ok. Wczoraj go przycieło może to jest wina zasilana nie samego programu,zasilacz 12v 1A.

Problem został rozwiązany problemem było zasilanie. Podłączony został zasilacz 12V 5A i działa normalnie temat do zamknięcia.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...