Cześć.
Problem w kodzie.
Problem w kodzie.
Kod:
/*
* Dostałem starą "klimę" i posiadam 2x ds1820, 2x przekaźniki , arduino Uno.
Czujnik temp. T1 załącza Przekaźnik1 na ok 40s .
Następuje przerwa ok 1 minuty i dopiero drugi Przekaźnik2 może się załączyć na 40 s. Jeżeli zostanie wysterowany przez T2. Lub T2 przekroczy temp. T1 załączy przekaźnik2 na 40 s.
Następuje przerwa 1 minuta pomiędzy przekaźnikami.
Dwa przekaźniki nie mogą załączyć się na raz. (nastąpi odwrotny ciąg w kanałach odciągu ).
Czas 40 s. przekaźników to sterowanie przepustnicy.
Przerwa 1 minuta automatyka "klimy".
*/
#include <OneWire.h>
#include <DallasTemperature.h>
#include <PCD8544.h>
#define ONE_WIRE_BUS 2
int one_wire = 2;
OneWire oneWire(one_wire);
DallasTemperature sensors(&oneWire);
int pr1 = 10; //przekaznik1 przepustnicy
int pr2 = 12; //przekaznik2 przepustnicy
int p1;
int p2;
static PCD8544 lcd;
long pauza1 = 0;
long pauza2 = 0;
//long pauza3 = 0;
byte status1 = 0;
byte status2 = 0;
//byte status3 = 0;
void setup() {
lcd.clear();
pinMode(pr1,OUTPUT);
pinMode(pr2,OUTPUT);
sensors.begin();
lcd.begin(84,48);
}
void loop(){
long sek = millis()/1000;
sensors.requestTemperatures();
float t1 = sensors.getTempCByIndex(0);
float t2 = sensors.getTempCByIndex(1);
if( t1 < 22.00 )p1 = 0; // min temp. t1
//----------------------------------------------------------------------------------------------
{
if( t1 > 23.00 and t1 < 35.00 )p1 = 1; // zakres temp. t1
if(t1 > t2)p1=0; // przekroczenie temp. t2
}
//----------------------------------------------------------------------------------------------
if( t1 > 36.00 )p1 = 0; // max. temp. t1
if(t2 < 10.00 )p2 = 0; // min temp. t2
//-----------------------------------------------------------------------------------------------
{
if( t2 > 11.00 and t2 < 33.00 )p2 = 1; // zakres temp. t2
if(t1 > t2)p2=0; // przekroczenie temp. t2
}
//-----------------------------------------------------------------------------------------------
if(t2 > 34.00 )p2 = 0; //max temp.t2
/*
* Tu zaczynają się schody z pauzą i czasami.
*/
if ( p1 == 1 and p2 == 1 ){
lcd.setCursor(45,2);
lcd.print(" ON T2");
if ( status1 == 0 ){pauza1 = sek;}
status1 = 1;
digitalWrite(pr1, HIGH);}
if ( sek - pauza2 > 6 ){
status2 = 0;
digitalWrite(pr1,LOW);}
//*********************************************************************
if ( p1 == 0 and p2 == 0 ){
lcd.setCursor(45,2);
lcd.print("OFF T2");
if ( status2 == 0 ){pauza2 = sek;}
status2 = 1;
digitalWrite(pr2, HIGH);}
if ( sek - pauza1 > 6 ){
status1 = 0;
digitalWrite(pr2, LOW); }
//**********************************************************************
lcd.setCursor(0,0);
lcd.print("T 1:");
lcd.print(sensors.getTempCByIndex(0));
lcd.print((char)0);
lcd.print("C ");
lcd.setCursor(0,1);
lcd.print("T 2:");
lcd.print(sensors.getTempCByIndex(1));
lcd.print((char)0);
lcd.print("C ");
}