Skocz do zawartości

Projekt akwarium


Pomocna odpowiedź

Napisano

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

}

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

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].

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.

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...