• 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
Dwa przekaźniki , pauza , czasy.
#1
Cześć.
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  ");
   
}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości