Se sei già registrato           oppure    

Orario: 28/03/2024 11:37:22  

 

Energia Alternativa ed Energia Fai Da Te > Arduino

VISUALIZZA L'ALBUM

Pagine: (10)   1   2   3   4   5   6   7   [8]   9   10    (Ultimo Msg)


Controllo termocamino
FinePagina

dani9191

Avatar
GigaWatt


Gruppo:Utente
Messaggi:780

Stato:



Inviato il: 25/07/2017 20:40:40

Lunica in comune è millis e de cosi:
Oldstartaccenditore=millis;
Oldstarcoclea=millis;



---------------
Non è impossibile se è fattibile!

 

Vincent
GigaWatt


Gruppo:Utente
Messaggi:1902

Stato:



Inviato il: 25/07/2017 22:04:46

Hai provato il codice che ti ho dato?

Tranquillo a volte ci si perde in cose stupide e normale non ho il tuo hardware completo ti posso fare la proc che ti attiva 1 sec e spegne 3 tu la leggi la capisci e la integri e verifichi
In caso di primo avvio quanto tempo deve girare?



---------------
SuperSolar
http://forum.saturnoprezzi.com/

 

Vincent
GigaWatt


Gruppo:Utente
Messaggi:1902

Stato:



Inviato il: 25/07/2017 23:17:57

Te lo faccio anche con milliss vedi quale ti riesce piu facile capire o usare

int tempo = 0;
int tempoacceso = 100;
int tempospento = 300;
int tempoavvio = 400;

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:

//ProceduraCoclea(100); //tempo avvio in secondi

 // qui richiami ProceduraCoclea(tempoacceso) quando in funzione on off
 // 100 = 1 sec
 // modifichi le variabili tempo acceso tempo spento per variare finemente i timing credo ti sara piu utile in fase di funzionamento
 // puoi cosi selezionare tutti i tempi che vuoi

 // se devi richiamare l'avvio
 // ProceduraCoclea(tempoavvio)

ProceduraCoclea(tempoavvio);


 
}


void ProceduraCoclea(int temposet)
{  Serial.println("----procedura avvio") ;
tempo = tempo + 10;

if (temposet == tempoavvio)
{ 
  Serial.println("---------------coclea AVVIO") ;
  Serial.println(temposet);
  Serial.println(tempoavvio);
  // la coclea rimane accesa finche non  parte il ciclo
  // QUI codice accensione coclea

if (tempo >= tempoavvio) {
// QUI codice cambio di stato
Serial.println("---------------TEMPO AVVIO SUPERATO CAMBIO STATO") ;

}
  }



  
  if (temposet != tempoavvio) {
  //

if (tempo <= temposet){
  // codice accensione coclea
  Serial.println("---------------coclea accesa") ;
  Serial.println(tempo) ;
  
  }else
  {
    //codice coclea spenta
    Serial.println("----coclea spenta") ;
    Serial.println(tempo) ;
    }


if (tempo > (tempospento + tempoacceso)) {
  tempo = 0;
  
  }
  
  }}



---------------
SuperSolar
http://forum.saturnoprezzi.com/

 

Vincent
GigaWatt


Gruppo:Utente
Messaggi:1902

Stato:



Inviato il: 25/07/2017 23:56:27

Questo e con millis


long MillsON = 0;
long MillsOFF = 0;
long MillsAVVIO = 0;
int ciclo = 0;

void setup()
{
  Serial.begin(9600);
    
}

void loop()
{
     
     accensioneONOFF(1000,5);
     // valore uno intervallo in ms valore 2 tempo spegmimento = (N-1)*intervallo
     // 5 equivale a 4 sec  .... n-1 insomma 
     
}


void accensioneONOFF(long tempoon , long tempooff)
{ if ((millis() - MillsON) > tempoon){
  MillsON = millis();
  MillsOFF=millis();

  
if (ciclo==0){  
  Serial.println("ACCENSIONE ON");
}
if (ciclo > 0 ){
   Serial.println("SPEGNIMENTO OFF");
  }




// MillsON = millis();

 
  ciclo = ciclo +1;
  if (ciclo >= tempooff) ciclo = 0;
  } 

  

  
  
  
  
  }



---------------
SuperSolar
http://forum.saturnoprezzi.com/

 

Vincent
GigaWatt


Gruppo:Utente
Messaggi:1902

Stato:



Inviato il: 25/07/2017 23:57:55

non ti ho aggiunto tutti cosi puoi studiarlo e adattarlo pero è funzionale al 100%



---------------
SuperSolar
http://forum.saturnoprezzi.com/

 

dani9191

Avatar
GigaWatt


Gruppo:Utente
Messaggi:780

Stato:



Inviato il: 26/07/2017 09:18:30

Grazie Vincent per il tempo dedicato. Ma c'e sempre un ma,il tuo codice(MILLIS) provato da solo sull'hardware funziona alla grande rispetta i tempi impostati,ma quando lo unisco insieme al resto diventa lento resta lo stesso problema di prima,cioè qualsiasi tempistica imposti il tempo ON rimane su 2secondi circa. Inizio a pensare che il micro non c'e la fa è possibile?
L'altro codice invece(il primo) lo testato anche da solo ma entra nel ciclo procedura avvio,passa a TEMPO AVVIO SUPERATO e poi riparte da capo, questa condizione
if (tempo <= temposet){
// codice accensione coclea
Serial.println("---------------coclea accesa") ;
Serial.println(tempo) ;

}else
{
//codice coclea spenta
Serial.println("----coclea spenta") ;
Serial.println(tempo) ;
}
non si verifica



---------------
Non è impossibile se è fattibile!

 

Vincent
GigaWatt


Gruppo:Utente
Messaggi:1902

Stato:



Inviato il: 26/07/2017 09:58:35

Il codice non era completo tu devi inserire le condizioni e richiamare le varie procedure come da necessita con i vari timings se avvio se onoff se speto. se con millis ti teovi bene ma il tempo e 2 sec anziche 1 ...dimezza invece di 1000 metti 500 e controlla la proporzione resta uguale tanto



---------------
SuperSolar
http://forum.saturnoprezzi.com/

 

Vincent
GigaWatt


Gruppo:Utente
Messaggi:1902

Stato:



Inviato il: 26/07/2017 10:02:28

Alla fine del codice aggiungi un delay(100)



---------------
SuperSolar
http://forum.saturnoprezzi.com/

 

Vincent
GigaWatt


Gruppo:Utente
Messaggi:1902

Stato:



Inviato il: 26/07/2017 10:09:00

Riposta il codice con il millis modificato..

Rileggendo tutto il listato ho visto un sacco di delay 500 1000

Escludo che sia il chip sono i delay abbassali anche a 100 e riprova messi tutti insieme ci arrivi e come a 2 sec



Modificato da Vincent - 26/07/2017, 10:12:41


---------------
SuperSolar
http://forum.saturnoprezzi.com/

 

dani9191

Avatar
GigaWatt


Gruppo:Utente
Messaggi:780

Stato:



Inviato il: 26/07/2017 10:16:01

Si ho provato anche impostando 100 resta acceso sempre (quasi 2 secondi),questo è il codice praticamente ho solo aggiunto il tuo. Ripeto se lo provo da solova benissimo insieme si sballa tutto.Se provi con la seriale capisci meglio cosa voglio dire..

long MillsON = 0;
long MillsOFF = 0;
long MillsAVVIO = 0;

#include "DHT.h"                 // DHT & AM2302 library
#include "Nextion.h"             //librearia nextion
#include <SoftwareSerial.h>      //libreria seriale
#include <OneWire.h>             //libreria per ds18b20
#include <DallasTemperature.h>   //libreria per conversione valore
#include "max6675.h"

int ktcSO = 52;                  //sonda fumi max6675
int ktcCS = 53;
int ktcCLK = 51;

int CktcSO = 47;                  //sonda camera max6675
int CktcCS = 49;
int CktcCLK = 45;

MAX6675 ktcF(ktcCLK, ktcCS, ktcSO);
MAX6675 ktcC(CktcCLK, CktcCS, CktcSO);

#define ONE_WIRE_BUS_1 12          // Il terminale data del sensore H2O TERMO è connesso alla porta 12 di Arduino
#define ONE_WIRE_BUS_2 3          // Il terminale data del sensore H2O PUFFER è connesso alla porta 12 di Arduino

#define DHTTYPE DHT22            // DHT 22  (AM2302)
#define aspiratore 4             //imposto il pin 4 per l'aspiratore
#define coclea 5                 //imposto il pin 5 per la coclea
#define circolatore 6            //imposto il pin 6 per il circolatore
#define ventola 7                //imposto il pin 7 per la ventola
#define accenditore 8            //imposto il pin 8 per l'accenditore
#define DHTPIN 9

SoftwareSerial HMISerial(10, 11);// Nextion TX to pin 10 and RX to pin 11 of Arduino`

OneWire oneWire_in(ONE_WIRE_BUS_1);
OneWire oneWire_out(ONE_WIRE_BUS_2);

DallasTemperature sensor_inhouse(&oneWire_in);
DallasTemperature sensor_outhouse(&oneWire_out);

DHT dht(DHTPIN, DHTTYPE);   

int txh2o;                      //temperatura di soglia termocamino
int Th2oMax;                     //temperatura di soglia + 6 si massima
int Tfumi;                      //temperatura rilevata fumi
int Tcamera;                    //temperatura rilevata camera combustione
int umidita;                    //umidità rilevata
int tempamb;                    //temperatura rilevata ambiente
int temph2o;                    //temperatura acqua rilevata
int tempPuffer;                 //temperatura rilevata puffer
int allTempFumi=200;            //allarme temperatura fumi
int percentuale;                //percentuale aspiratore
int pwmfumi;                    //variabile per l'aspiratore
int Vcoclea=LOW;                //variabile velocita coclea
int Vstato=0;                     //lettura stato interrutore ON/OFF
int TcocleaOn;                    //variabile per mandata pellet ON
int TcocleaOff;                    //variabile per mandata pellet Off
int valCoclea=1;                //variabile per capire se in stato di accensione
int TempOk=1;                  //variabile per conoscere lo stato dell'acqua
int ciclo=0;

long OldStartCoclea = 0;
unsigned long VarMillis = 0;
unsigned long OldStartAccenditore = 0;
unsigned long DeltaRestartMillis = 0;
unsigned long DeltaRestartMillis1 = 0;

boolean PrimoCicloON = true;
boolean CocleaCicloON =true ;


void t8PopCallback(void *ptr);   //ambiente page home 0  
void t9PopCallback(void *ptr);   //ambiente page home 0  
void n0PopCallback(void *ptr);   //ambiente page home 0
void n1PopCallback(void *ptr);   //fumi page home 0
void n4PopCallback(void *ptr);   //fumi page home 0
void n2PopCallback(void *ptr);   //T.CAMERA COMBUSTIONE page home 0
void n3PopCallback(void *ptr);   //acqua page home 0
void n5PopCallback(void *ptr);   //UMIDITA page home 0
void n6PopCallback(void *ptr);   //TEMPERATURA RILEVATA PUFFER
void n30PopCallback(void *ptr);  //bagno page bagno 2
void b31PopCallback(void *ptr);  //bagno - page bagno 2
void b0PopCallback(void *ptr);  //INTERRUTTORE ON/OFF
void b32PopCallback(void *ptr);  //bagno + page bagno 2


 
NexNumber n0 = NexNumber(0, 1, "n0"); // ambiente
NexNumber n1 = NexNumber(0, 5, "n1"); // fumi
NexNumber n2 = NexNumber(0, 20, "n2"); // T.CAMERA COMBUSTIONE
NexNumber n3 = NexNumber(0, 3, "n3"); //acqua temp rilevata
NexNumber n4 = NexNumber(0, 8, "n4"); //aspiratore
NexNumber n5 = NexNumber(0, 11, "n5");//UMIDITA
NexNumber n6 = NexNumber(0, 13, "n6");//H2O PUFFER
NexNumber n30 = NexNumber(1, 3, "n30");//acqua temp impostata
NexButton b0 = NexButton(0, 22, "b0");//INTERRUTTORE ON/OFF
NexButton b31 = NexButton(1, 1, "b31");//set acqua
NexButton b32 = NexButton(1, 2, "b32");//set acqua

NexText t8 = NexText(0, 11, "t8"); 
NexText t9 = NexText(0, 14, "t9");
NexText t25 = NexText(2, 8, "t25");//CANDELETTA ON/OFF
NexText t26 = NexText(2, 9, "t26");//VENTOLA ON/OFF
NexText t27 = NexText(2, 10, "t27");//POMPA ON/OFF
NexText t28 = NexText(2, 11, "t28");//COCLEA ON/OFF
NexText t29 = NexText(2, 12, "t29");//aspiratore ON/OFF
NexNumber n12 = NexNumber(2, 19, "n12"); // MILLIS
NexNumber n13 = NexNumber(2, 21, "n13"); // TEMPO COCLEA
NexNumber n14 = NexNumber(2, 23, "n14"); // TEMPO CANDELETTA
char buffer[100] = {0};

NexTouch *nex_listen_list[] = 
{
    &t8,
    &t9,
    &t25,
    &t26,
    &t27,
    &t28,
    &t29,
    &n0,
    &n1,
    &n2,
    &n3,
    &n4,
    &n5,
    &n6,
    &n12,
    &n13,
    &n14,
    &n30,
    &b0,
    &b31,
    &b32,
    NULL
};

void t8PopCallback(void *ptr)
{
   
}
void t9PopCallback(void *ptr)
{
   
}
void t25PopCallback(void *ptr)
{
   
}
void t26PopCallback(void *ptr)
{
   
}
void t27PopCallback(void *ptr)
{
   
}
void t28PopCallback(void *ptr)
{
   
}
void t29PopCallback(void *ptr)
{
   
}
 void n0PopCallback(void *ptr)
{
    
}
void n1PopCallback(void *ptr)
{
    
}
void n2PopCallback(void *ptr)
{
    
}
 void n3PopCallback(void *ptr)
{
   
}
void n4PopCallback(void *ptr)
{
    
}
void n5PopCallback(void *ptr)
{
    
}
void n6PopCallback(void *ptr)
{
    
}
void n12PopCallback(void *ptr)
{
    
}
void n13PopCallback(void *ptr)
{
    
}
void n14PopCallback(void *ptr)
{
    
}
 void n30PopCallback(void *ptr)
{
  
}
void b0PopCallback(void *ptr)      //h2o termocamino
{
    dbSerial.flush();
    if(Vstato==0){
    Vstato=1;
    b0.setText("ON");
    }
    else{
    Vstato=0;
    b0.setText("OFF");   
}

}
void b31PopCallback(void *ptr)      //h2o termocamino
{
    dbSerial.flush();
    txh2o -= 1;
    n30.setValue(txh2o);
    delay(500);   
}
void b32PopCallback(void *ptr)     //h2o termocamino
{ 
    dbSerial.flush();
    txh2o += 1;
    n30.setValue(txh2o);
    delay(500);      
}


void setup(void)
{
    attachInterrupt(2, interruptDepressostato, RISING);
    attachInterrupt(3, interruptTermostato, RISING);
    attachInterrupt(4, interruptPressostato, RISING);
    
    Serial.begin(9600);
    HMISerial.begin(9600);
    dht.begin();
    sensor_inhouse.begin(); //AVVIO IL PRIMO DS18B20
    sensor_outhouse.begin(); //AVVIO IL SECONDO DS18B20
    txh2o=60;                               //temperatura di soglia acqua termocamino
    
    nexInit();
    t8.attachPop(t8PopCallback);
    t9.attachPop(t9PopCallback);
    t25.attachPop(t25PopCallback);
    t26.attachPop(t26PopCallback);
    t27.attachPop(t27PopCallback);
    t28.attachPop(t28PopCallback);
    t29.attachPop(t29PopCallback);
    n0.attachPop(n0PopCallback);   
    n1.attachPop(n1PopCallback);
    n2.attachPop(n2PopCallback); 
    n3.attachPop(n3PopCallback); 
    n4.attachPop(n4PopCallback);
    n5.attachPop(n5PopCallback);
    n6.attachPop(n6PopCallback);
    n12.attachPop(n12PopCallback);
    n13.attachPop(n13PopCallback);
    n14.attachPop(n14PopCallback);
    n30.attachPop(n30PopCallback);
    b0.attachPop(b0PopCallback);
    b31.attachPop(b31PopCallback);
    b32.attachPop(b32PopCallback);
     
    pinMode(aspiratore,OUTPUT);
    pinMode(coclea,OUTPUT);
    pinMode(circolatore,OUTPUT);
    pinMode(ventola,OUTPUT);
    pinMode(accenditore,OUTPUT);
    
 
    delay(1000);
}

void loop(void){
   if(Vstato==0){
     Vstato=1;
   }
  accensioneONOFF(1000,10);
  
  nexLoop(nex_listen_list);
  Th2oMax=txh2o+6;
  Tfumi=ktcF.readCelsius();
  Tcamera=ktcC.readCelsius();
  umidita = dht.readHumidity();           //leggo umidita ambiente
  tempamb = dht.readTemperature();        //leggo temperatura ambiente
  sensor_inhouse.requestTemperatures(); //AVVIO LETTURA TEMPERATURA DAL PRIMO SENSORE
  sensor_outhouse.requestTemperatures(); //AVVIO LETTURA TEMPERATURA DAL SECONDO SENSORE
  temph2o =sensor_inhouse.getTempCByIndex(0);    //leggo il sensore dell'acqua del termocamino
  tempPuffer=sensor_outhouse.getTempCByIndex(0);
 ///////////////////////////////////////////////////////////////////////////////////////////////////// 
 if(OldStartAccenditore > VarMillis){  // se millis si resetta (dopo circa 50 gg)
        DeltaRestartMillis = 4294967295 - OldStartAccenditore;
        OldStartAccenditore = 0;
      }
 if(OldStartCoclea > VarMillis){  // se millis si resetta (dopo circa 50 gg)
        DeltaRestartMillis1 = 4294967295 - OldStartCoclea;
        OldStartCoclea = 0;
      } 
 ///////////////////////////////////////////////////////////////////////////////////////////////////// 
  if((Vstato==1)&&(TempOk==1)){
   if(temph2o<90){
    if(Tfumi<allTempFumi){               // verifica se le condizioni sono vere procedo con:
       t9.setText("ON");
       VarMillis = millis();
     /////////////////////////////////////////////////////////////////////  
     if(PrimoCicloON){                   // se è la prima volta che entro nello stato ON
       PrimoCicloON = false;
       OldStartAccenditore = VarMillis;
       DeltaRestartMillis = 0;
     }
     /////////////////////////////////////////////////////////////////////
    
     ////////////////////////////////////////////////////////////////////
       
     if(VarMillis + DeltaRestartMillis - OldStartAccenditore < 5000){    // se non sono trascorsi 3 minuti
       digitalWrite(accenditore, HIGH);
       
       t25.setText("ON");
      }
  else{
        digitalWrite(accenditore, LOW);
        valCoclea=0;
        t25.setText("OFF");
      }
  ////////////////////////////////////////////////////////////////////////    
      if (temph2o<txh2o){ 
         t8.setText("LAVORO");
         pwmfumi=255; 
         TcocleaOn=500;
         TcocleaOff=10000;
      }
     else if(temph2o>txh2o+6){
         pwmfumi=50;
         TcocleaOn=1000;
         TcocleaOff=1500;
         t8.setText("RIPOSO");
      }
    else  if(temph2o>txh2o+10){
         TempOk=0;
         t8.setText("STANDBY TEMP");
      }
      
  else{  
         pwmfumi=127;
         TcocleaOn=500;
         TcocleaOff=500;
         t8.setText("LAVORO MODULA");
      }   
      ////////////////////////////////////////////////////////////////////
         percentuale = map(pwmfumi,0,254,0, 100);
         digitalWrite(circolatore,HIGH);
         digitalWrite(ventola,HIGH);
         analogWrite(aspiratore,pwmfumi);
     
  
   ///////////////////////////////////////////////////////////////////////////////////////////  
   }else{
       t9.setText("ALLARME TEMP FUMI");
       digitalWrite(aspiratore,LOW);
       digitalWrite(circolatore,HIGH);
       digitalWrite(ventola,LOW);
       digitalWrite(accenditore,LOW);
       digitalWrite(coclea,LOW);
       percentuale =0;
       
     }
   }
  else{
      t8.setText("ALLARME TEMP H2O");
      digitalWrite(aspiratore,LOW);
      digitalWrite(circolatore,HIGH);
      digitalWrite(ventola,LOW);
      digitalWrite(accenditore,LOW);
      digitalWrite(coclea,LOW);
      percentuale =0;
  }
  }
  ////////////////////////////////////////////////////////////////////////////////////////////
 else if((Vstato==0) || (TempOk==0)){
      if(Tfumi<40){
        t9.setText("OFF");
        t8.setText("SPENTO");
        digitalWrite(aspiratore,LOW);
        digitalWrite(circolatore,LOW);
        digitalWrite(ventola,LOW);
        digitalWrite(accenditore,LOW);
        digitalWrite(coclea,LOW);
        PrimoCicloON = true;
        CocleaCicloON = true;
        TempOk=1;
        percentuale=0;
     }
   else{
       t8.setText("SPEGNIMENTO");
       digitalWrite(accenditore,LOW);
       digitalWrite(circolatore,HIGH);
       digitalWrite(ventola,HIGH);
       digitalWrite(coclea,LOW);
       analogWrite(aspiratore,255);
       percentuale=100;
      
     }}
  n0.setValue(tempamb);
      n5.setValue(umidita);
      n6.setValue(tempPuffer);
      n1.setValue(Tfumi);
      n2.setValue(Tcamera);
      n4.setValue(percentuale);
      n3.setValue(temph2o);
      n30.setValue(txh2o);
      n12.setValue(VarMillis);
      n13.setValue(OldStartCoclea);
      
      
       
       
      dbSerial.flush();//pulisci la seriale
      
     }
 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////    
 
void accensioneONOFF(long tempoon , long tempooff)
{ if ((millis() - MillsON) > tempoon){
  MillsON = millis();
  

  
if (ciclo==0){  
  Serial.println("ACCENSIONE ON");
  digitalWrite(coclea,HIGH);
}
if (ciclo > 0){
   Serial.println("SPEGNIMENTO OFF");
   digitalWrite(coclea,LOW);
  }




// MillsON = millis();

 
  ciclo = ciclo +1;
  if (ciclo >= tempooff) ciclo = 0;
  } 

  

  
  
  
  
  }
 
 
 
 
 void interruptDepressostato(){
      t8.setText("MANCA DEPRESSIONE");
      digitalWrite(coclea, LOW);
      digitalWrite(aspiratore, LOW);
      digitalWrite(circolatore, LOW);
      digitalWrite(ventola, LOW);
      digitalWrite(accenditore, LOW);
      
}

 void interruptTermostato(){
      t8.setText("ALLARME TEMPERATURA");
      digitalWrite(coclea, LOW);
      digitalWrite(aspiratore, LOW);
      digitalWrite(circolatore, HIGH);
      digitalWrite(ventola, LOW);
      digitalWrite(accenditore, LOW);
      
}

void interruptPressostato(){
      t8.setText("MANCA PRESSIONE");
      digitalWrite(coclea, LOW);
      digitalWrite(aspiratore, LOW);
      digitalWrite(circolatore, LOW);
      digitalWrite(ventola, LOW);
      digitalWrite(accenditore, LOW);
      
}
    



---------------
Non è impossibile se è fattibile!

 

Vincent
GigaWatt


Gruppo:Utente
Messaggi:1902

Stato:



Inviato il: 26/07/2017 10:55:55

Allora testato il listato a parte le lib che non ho...

Hai messo l istruzione all inizio giusto?

Ma deve fare un ciclo completo del listato prima di venire richiamata aggiungila anche tra un sensore e l altro...
Es dopo i primi 2 perché sicuramente e un problema di tempo di riaposta di qualche sensore

Ex:

AccensioneONOFF
verif temp sensore...
..istr
AccensioneONOFF

....istr
AccensioneONOFF


Adesso lo rileggo x essere sicuro di usare var globali altrimenti non funziona a dovere ma credo ci siamo



---------------
SuperSolar
http://forum.saturnoprezzi.com/

 

dani9191

Avatar
GigaWatt


Gruppo:Utente
Messaggi:780

Stato:



Inviato il: 26/07/2017 16:31:44

Ok provo subito



---------------
Non è impossibile se è fattibile!

 

dani9191

Avatar
GigaWatt


Gruppo:Utente
Messaggi:780

Stato:



Inviato il: 26/07/2017 16:46:01

Hai azzeccato in pieno sono i sensori che stanno dando problemi, ora ho fatto cosi come mi hai detto
accensioneONOFF(500,10);
nexLoop(nex_listen_list);
Th2oMax=txh2o+6;
Tfumi=ktcF.readCelsius();
accensioneONOFF(500,10);
Tcamera=ktcC.readCelsius();
accensioneONOFF(500,10);
umidita = dht.readHumidity(); //leggo umidita ambiente
accensioneONOFF(500,10);
tempamb = dht.readTemperature(); //leggo temperatura ambiente
accensioneONOFF(500,10);
sensor_inhouse.requestTemperatures(); //AVVIO LETTURA TEMPERATURA DAL PRIMO SENSORE
accensioneONOFF(500,10);
sensor_outhouse.requestTemperatures(); //AVVIO LETTURA TEMPERATURA DAL SECONDO SENSORE
accensioneONOFF(500,10);
temph2o =sensor_inhouse.getTempCByIndex(0); //leggo il sensore dell'acqua del termocamino
accensioneONOFF(500,10);
tempPuffer=sensor_outhouse.getTempCByIndex(0);
accensioneONOFF(500,10);

impostando 500, resta acceso mezzo secondo, ma nel debbug c'e ancora qualche problema nel senso che ogni tanto perde qualche off impostando 10 dovrebbe restiture 9 accensioniOFF nel dubbug invece a volte me ne stampa 8(non è la fine del mondo,ma se riesco a risolvere del tutto è meglio).
Ora per risolvere bene il problema dei sensori che rallenta il sistema, si puo fargli fare la lettura ogni tot tempo,anzichè farlo a ogni loop? Dici che cosi facendo si risolve?



---------------
Non è impossibile se è fattibile!

 

dani9191

Avatar
GigaWatt


Gruppo:Utente
Messaggi:780

Stato:



Inviato il: 26/07/2017 16:50:29

è meglio creare un void per ogni sensore oppure si possono raggruppare tutti insiemi in unico void?
Se metto questa istruzione nel loop sensori(1000);vuol dire che void sensori verrà richiamata ogni secondo



---------------
Non è impossibile se è fattibile!

 

Vincent
GigaWatt


Gruppo:Utente
Messaggi:1902

Stato:



Inviato il: 26/07/2017 17:10:50

Non ho capito bene fai 1 sec di accensione e 9 spenti?

Il dht di solito ci mette 2 sec io cercherei qual e quello piu lento

Usa serial.println(millis()) su ogni riga sensori

e vedi quello che ha una diff > a quello precedente

No cosi (1000) rallenti di 1 secondo l esecuzione ogni tanto puo succedere che sia troppo veloce l esex e bisogna rallenterla tipo delay
Metti un delay(10) nel blocco onoff prima della fine degli if e prova
10ms no credo cabino la vita



---------------
SuperSolar
http://forum.saturnoprezzi.com/

 
 InizioPagina
 

Pagine: (10)   1   2   3   4   5   6   7   [8]   9   10    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum