dani9191
| Inviato il: 27/09/2017 15:01:39
|
Se serve a qualcuno allego l'ultima versione testata e funzionante,ho aggiunto anche la selezione legna/pellet
#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"
#include <math.h>
////////////////////////////////////////////////////////////////////////////////////////
int ktcSO = 47; //sonda fumi max6675
int ktcCS = 49;
int ktcCLK = 45;
MAX6675 ktcF(ktcCLK, ktcCS, ktcSO);
/////////////////////////////////////////////////////////////////////////////////////////
#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 8 per LA ventola
#define accenditore 8 //imposto il pin 7 per l'accenditore
#define depressostato 21 //imposto il pin 21 per l'ingresso del pressostato
#define termostato 20 //imposto il pin 20 per l'ingresso del termostato
#define pressostato 19 //imposto il pin 19 per l'ingresso del pressostato
#define DHTPIN 9
/////////////////////////////////////////////////////////////////////////////////////////
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 val;
int txh2o; //temperatura di soglia termocamino
int Th2oMax; //temperatura di soglia + 6 si massima
int Tfumi; //temperatura rilevata fumi
int Tfumi2; //temperatura rilevata fumi
int umidita; //umidità rilevata
int tempamb; //temperatura rilevata ambiente
int temph2o; //temperatura acqua rilevata
int tempPuffer; //temperatura rilevata puffer
int allTempFumi=180; //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 MODALITA AUTOMATICA
int TcocleaOff; //variabile per mandata pellet Off MODALITA AUTOMATICA
int TcocleaOnM=500; //variabile per mandata pellet ON MODALITA MANUALE
int TcocleaOffM=500; //variabile per mandata pellet Off MODALITA MANUALE
int valCoclea=1; //variabile per capire se in stato di accensione
int TempOk=1; //variabile per conoscere lo stato dell'acqua
int spento;
int Tsens=2000;
int depres=HIGH; //consenso depressostato
int termost=HIGH; //allarme temperatura
int presso=HIGH; //allarme manca pressione
int na=1; //per capire se la fiamma è presente
int pellet=1; //per capire se è finito il pellet
int modalita=0; //selezione legna/pellet
unsigned long OldStartSensori= 0;
unsigned long OldStartCoclea = 0;
unsigned long OldStartAccenditore = 0;
unsigned long OldStartAccensione = 0; //per capire se la fiamma è presente
unsigned long sensori=0;
boolean AUTO=true; //stato di controllo automatico/manuale tempo della coclea
boolean PrimoCicloON = true;
boolean CocleaCicloON =true ;
boolean PrimaAccensione =true ; //per capire se la fiamma è presente
boolean Spellet =false ; //per capire se la fiamma è presente
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void t8PopCallback(void *ptr); //ambiente page home 0
void t25PopCallback(void *ptr); //STATO ON/OFF CANDELETTA
void t26PopCallback(void *ptr); //STATO ON/OFF VENTOLA
void t27PopCallback(void *ptr); //STATO ON/OFF POMPA
void t28PopCallback(void *ptr); //STATO ON/OFF COCLEA
void t29PopCallback(void *ptr); //STATO ON/OFF ASPIRATORE
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 n12PopCallback(void *ptr); //VISUALIZZO STATO MILLIS
void n13PopCallback(void *ptr); //VISUALIZZO TEMPO IMPOSTATO TCOCLEA_ON
void n14PopCallback(void *ptr); //VISUALIZZO TEMPO IMPOSTATO TCOCLEA_OFF
void n30PopCallback(void *ptr); //bagno page bagno 2
void b31PopCallback(void *ptr); //bagno - page bagno 2
void b0PopCallback(void *ptr); //INTERRUTTORE ON/OFF
void b1PopCallback(void *ptr); //INTERRUTTORE SELEZIONE LEGNA/PELLET
void b32PopCallback(void *ptr); //bagno + page bagno 2
void b10PopCallback(void *ptr); //DIMINUISCO TcocleaON
void b11PopCallback(void *ptr); //AUMENTO TcocleaON
void b12PopCallback(void *ptr); //DIMINUISCO TcocleaOFF
void b13PopCallback(void *ptr); //AUMENTO TcocleaOFF
void b14PopCallback(void *ptr); //AUTO/MANU SERVE PER FAR IMPOSTARE IL TCOCLEA IN MANUALE
////////////////////////////////////////////////////////////////////////////////////////////
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, 19, "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 t25 = NexText(2, 6, "t25");//CANDELETTA ON/OFF
NexText t26 = NexText(2, 7, "t26");//VENTOLA ON/OFF
NexText t27 = NexText(2, 8, "t27");//POMPA ON/OFF
NexText t28 = NexText(2, 9, "t28");//COCLEA ON/OFF
NexText t29 = NexText(2, 10, "t29");//aspiratore ON/OFF
NexNumber n12 = NexNumber(2, 17, "n12"); // MILLIS
NexNumber n13 = NexNumber(2, 19, "n13"); // TEMPO COCLEA ON
NexNumber n14 = NexNumber(2, 21, "n14"); // TEMPO COCLEA OFF
NexButton b1 = NexButton(0, 21, "b1");//INTERRUTTORE SELEZIONE PELLET/LEGNA
NexButton b10 = NexButton(2, 12, "b10");//PULSANTE DIMINUISCO TEMPO TCOCLEA_ON
NexButton b11 = NexButton(2, 13, "b11");//PULSANTE AUMENTO TEMPO TCOCLEA_ON
NexButton b12 = NexButton(2, 14, "b12");//PULSANTE DIMINUISCO TEMPO TCOCLEA_OFF
NexButton b13 = NexButton(2, 15, "b13");//PULSANTE AUMENTO TEMPO TCOCLEA_OFF
NexButton b14 = NexButton(2, 23, "b14");//AUTO/MANU SERVE PER FAR IMPOSTARE IL TCOCLEA IN MANUALE
char buffer[100] = {0};
/////////////////////////////////////////////////////////////////////////////////////////
NexTouch *nex_listen_list[] =
{ &b0,
&b1,
&t8,
&t25,
&t26,
&t27,
&t28,
&t29,
&n0,
&n1,
&n2,
&n3,
&n4,
&n5,
&n6,
&n12,
&n13,
&n14,
&n30,
&b10,
&b11,
&b12,
&b13,
&b14,
&b31,
&b32,
NULL
};
//////////////////////////////////////////////////////////////////////////////////////////////////
void t8PopCallback(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) //accendo/spengo il sistema
{
dbSerial.flush();
if(Vstato==0){
Vstato=1;
b0.setText("ON");
}
else{
Vstato=0;
b0.setText("OFF");
}
}
void b1PopCallback(void *ptr) //SELEZIONO LEGNA/PELLET
{
dbSerial.flush();
if(modalita==0){
modalita=1;
b1.setText("LEGNA");
}else{
modalita=0;
b1.setText("PELLET");
}
delay(500);
}
void b10PopCallback(void *ptr) //diminuisco tcocleaon
{
dbSerial.flush();
TcocleaOnM -= 500;
n13.setValue(TcocleaOnM);
delay(500);
}
void b11PopCallback(void *ptr) //aumento tcocleaoff
{
dbSerial.flush();
TcocleaOnM += 500;
n13.setValue(TcocleaOnM);
delay(500);
}
void b12PopCallback(void *ptr) //diminuisco tcocleaoff
{
dbSerial.flush();
TcocleaOffM -= 500;
n14.setValue(TcocleaOffM);
delay(500);
}
void b13PopCallback(void *ptr) //aumento tcocleaoff
{
dbSerial.flush();
TcocleaOffM += 500;
n14.setValue(TcocleaOffM);
delay(500);
}
void b14PopCallback(void *ptr) //h2o termocamino
{
dbSerial.flush();
if(AUTO==false){
AUTO=true;
b14.setText("AUTOMATICO");
}
else{
AUTO=false;
b14.setText("MANUALE");
}
}
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);
}
//////////////////////////////////////////////////
double Thermister(int RawADC) {
double Temp;
Temp = log(((10240000/RawADC) - 10000));
Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp );
Temp = Temp - 273.15;// Converierte de Kelvin a Celsius
//Para convertir Celsius a Farenheith esriba en esta linea: Temp = (Temp * 9.0)/ 5.0 + 32.0;
return Temp;
}
///////////////////////////////////////////////////
void setup(void)
{
dht.begin();
sensor_inhouse.begin(); //AVVIO IL PRIMO DS18B20
sensor_outhouse.begin(); //AVVIO IL SECONDO DS18B20
txh2o=65; //temperatura di soglia acqua termocamino
spento=1;
na=1;
pellet=1;
///////////////////////////////////
nexInit();
t8.attachPop(t8PopCallback);
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);
b1.attachPop(b1PopCallback);
b10.attachPop(b10PopCallback);
b11.attachPop(b11PopCallback);
b12.attachPop(b12PopCallback);
b13.attachPop(b13PopCallback);
b14.attachPop(b14PopCallback);
b31.attachPop(b31PopCallback);
b32.attachPop(b32PopCallback);
/////////////////////////////////
pinMode(aspiratore,OUTPUT);
pinMode(coclea,OUTPUT);
pinMode(circolatore,OUTPUT);
pinMode(ventola,OUTPUT);
pinMode(depressostato,INPUT);
pinMode(termostato,INPUT);
pinMode(pressostato,INPUT);
pinMode(accenditore,OUTPUT);
delay(1000);
}
void loop(void){
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(Spellet){
if(Tfumi<50){
pellet=0;
t8.setText("MANCA PELLET");
}else{
pellet=1;
}}
///////////////////////////////////////////
nexLoop(nex_listen_list);
depres=digitalRead(depressostato);
termost=digitalRead(termostato);
presso=digitalRead(pressostato);
val=analogRead(0);
////////////////////////////////////////////
if(sensori > millis()){ // se millis si resetta (dopo circa 50 gg)
sensori = millis();
OldStartSensori=sensori;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
if(temph2o>40){
digitalWrite(circolatore,HIGH);
t27.setText("ON");
}else if(temph2o<=40-2){
digitalWrite(circolatore,LOW);
t27.setText("OFF");
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
if(Tfumi>50){
digitalWrite(ventola,HIGH);
t26.setText("ON");
}
else if(Tfumi<=45){
digitalWrite(ventola,LOW);
t26.setText("OFF");
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
if((Vstato==1)&&(TempOk==1)&&(depres==HIGH)&&(na==1)&&(termost==HIGH)&&(presso==HIGH)&&(pellet==1)){
b0.setText("ON");
spento=1;
//////////////////////////////////
if(temph2o<90){
if(Tfumi<allTempFumi){ // verifica se le condizioni sono vere procedo con:
//////////////////////////////////
t28.setText("ON");
t29.setText("ON");
//////////////////////////////////
if(modalita==0){
b1.setText("PELLET");
accensione();
cocleaPrimoCiclo();
}else{
b1.setText("LEGNA");
}
//////////////////////////////////
sensori=millis();
if(sensori-OldStartSensori>2000){
OldStartSensori=sensori;
//////////////////////////////////
cocleaPrimoCiclo();
nexLoop(nex_listen_list);
Tfumi2=ktcF.readCelsius();
cocleaPrimoCiclo();
nexLoop(nex_listen_list);
umidita = dht.readHumidity(); //leggo umidita ambiente
nexLoop(nex_listen_list);
cocleaPrimoCiclo();
nexLoop(nex_listen_list);
tempamb = dht.readTemperature(); //leggo temperatura ambiente
cocleaPrimoCiclo();
nexLoop(nex_listen_list);
sensor_inhouse.requestTemperatures(); //AVVIO LETTURA TEMPERATURA DAL PRIMO SENSORE
cocleaPrimoCiclo();
nexLoop(nex_listen_list);
sensor_outhouse.requestTemperatures(); //AVVIO LETTURA TEMPERATURA DAL SECONDO SENSORE
cocleaPrimoCiclo();
nexLoop(nex_listen_list);
temph2o =sensor_inhouse.getTempCByIndex(0); //leggo il sensore dell'acqua del termocamino
cocleaPrimoCiclo();
nexLoop(nex_listen_list);
tempPuffer=sensor_outhouse.getTempCByIndex(0);
cocleaPrimoCiclo();
nexLoop(nex_listen_list);
Tfumi=Thermister(val);
}
////////////////////////////////////////////////////////////////////
if (temph2o<txh2o){
t8.setText("LAVORO");
TcocleaOn=18000;
TcocleaOff=19000;
}
else if(temph2o>txh2o+6){
TcocleaOn=2000;
TcocleaOff=10000;
t8.setText("RIPOSO");
}
else if(temph2o>txh2o+15){
TempOk=0;
t8.setText("STANDBY TEMP");
}
else{
TcocleaOn=10000;
TcocleaOff=15000;
t8.setText("LAVORO MODULA");
}
////////////////////////////////////////////////////////////////////
if(valCoclea==1){
pwmfumi=255;
}else{
pwmfumi=100;
}
percentuale = map(pwmfumi,0,255,0, 100);
analogWrite(aspiratore,pwmfumi);
////////////////////////////////////////////////////////////////////
}else{
t8.setText("ALLARME TEMP FUMI");
digitalWrite(aspiratore,LOW);
digitalWrite(circolatore,HIGH);
digitalWrite(ventola,HIGH);
digitalWrite(accenditore,LOW);
digitalWrite(coclea,LOW);
percentuale =0;
}
}
else{
t8.setText("ALLARME TEMP H2O");
digitalWrite(aspiratore,LOW);
digitalWrite(circolatore,HIGH);
digitalWrite(accenditore,LOW);
digitalWrite(coclea,LOW);
percentuale =0;
}
}
////////////////////////////////////////////////////////////////////////////////////////////
else if((Vstato==0) || (TempOk==0)|| (depres==LOW)||(na==0)||(termost==LOW)||(presso==LOW)||(pellet==0)){
Spellet=false;
b0.setText("OFF");
/////////////////////////
if(depres==LOW){
t8.setText("MANCA DEPRESSIONE");
}
////////////////////////
if(presso==LOW){
t8.setText("MANCA PRESSIONE");
}
/////////////////////////
if(termost==LOW){
t8.setText("ALLARME TEMPERATURA");
digitalWrite(aspiratore,LOW);
digitalWrite(coclea,LOW);
digitalWrite(accenditore,LOW);
}else{
///////////////////////
if(Tfumi<40){
spento=0;
t8.setText("SPENTO");
t28.setText("OFF");
t29.setText("OFF");
digitalWrite(aspiratore,LOW);
digitalWrite(accenditore,LOW);
digitalWrite(coclea,LOW);
PrimoCicloON = true;
CocleaCicloON = true;
PrimaAccensione = true;
TempOk=1;
percentuale=0;
}
else{
if(spento==1){
t8.setText("SPEGNIMENTO");
digitalWrite(accenditore,LOW);
digitalWrite(coclea,LOW);
analogWrite(aspiratore,255);
percentuale=100;
}
}
sensori=millis();
if(sensori-OldStartSensori>2000){
OldStartSensori=sensori;
nexLoop(nex_listen_list);
Tfumi2=ktcF.readCelsius();
nexLoop(nex_listen_list);
umidita = dht.readHumidity(); //leggo umidita ambiente
nexLoop(nex_listen_list);
tempamb = dht.readTemperature(); //leggo temperatura ambiente
nexLoop(nex_listen_list);
sensor_inhouse.requestTemperatures(); //AVVIO LETTURA TEMPERATURA DAL PRIMO SENSORE
nexLoop(nex_listen_list);
sensor_outhouse.requestTemperatures(); //AVVIO LETTURA TEMPERATURA DAL SECONDO SENSO
nexLoop(nex_listen_list);
temph2o =sensor_inhouse.getTempCByIndex(0); //leggo il sensore dell'acqua del termocamino
nexLoop(nex_listen_list);
tempPuffer=sensor_outhouse.getTempCByIndex(0);
nexLoop(nex_listen_list);
Tfumi=Thermister(val);
}}}
n0.setValue(tempamb);
n5.setValue(umidita);
n6.setValue(tempPuffer);
n1.setValue(Tfumi);
n4.setValue(percentuale);
n3.setValue(temph2o);
n30.setValue(txh2o);
n13.setValue(TcocleaOnM);
n14.setValue(TcocleaOffM);
dbSerial.flush();//pulisci la seriale
Th2oMax=txh2o+6;
delay(1000);
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void cocleaPrimoCiclo(){
if(OldStartCoclea>millis()) {
OldStartCoclea=millis();
}
if(CocleaCicloON){
OldStartCoclea = millis(); //Tiene in memoria l'ultima accensione
CocleaCicloON=false;
}
//////////////////////////////////////////////////////
if(valCoclea==1){ //se il termo è in stato di accensione(PrimoCicloON)
//////////////////////////////////////////////
if(AUTO){ //SE è IN MODALITà AUTOMATICA
if ((millis() - OldStartCoclea) < 5000 ){
Vcoclea=HIGH;
}else{ //MODALITA AUTOMATICO STATO IN ACCENSIONE
Vcoclea=LOW;
}
if((millis() - OldStartCoclea) > 8000){
CocleaCicloON=true;
}
b14.setText("AUTOMATICO");
}else{///////////////////ALTRIMENTI SE è IN MODALITà MANUALE
if ((millis() - OldStartCoclea) < TcocleaOnM ){
Vcoclea=HIGH;
}else{
Vcoclea=LOW; //MODALITA MANUALE STATO IN ACCENSIONE
}
if((millis() - OldStartCoclea) > TcocleaOffM){
CocleaCicloON=true;
}
b14.setText("MANUALE");
}
///////////////////////////////////////////////
}else{//ALTRIMENTI SE VALSTATO è UGUALE A 0
if(AUTO){ //SE è IN MODALITà AUTOMATICA
if((millis() - OldStartCoclea) < TcocleaOn ){
Vcoclea=HIGH;
}else{ //MODALITA AUTOMATICA STATO LAVORO MODULA
Vcoclea=LOW;
}
if((millis() - OldStartCoclea) > TcocleaOff){
CocleaCicloON=true;
}
b14.setText("AUTOMATICO");
/////////////////////////////////////////////
}else{ //ALTRIMENTI SE è IN MODALITà MANUALE
if((millis() - OldStartCoclea) < TcocleaOnM ){
Vcoclea=HIGH;
}else{ //MODALITA AUTOMATICA STATO LAVORO MODULA
Vcoclea=LOW;
}
if((millis() - OldStartCoclea) > TcocleaOffM){
CocleaCicloON=true;
}
b14.setText("MANUALE");
}
///////////////////////////////////////////////
}
digitalWrite(coclea, Vcoclea);
dbSerial.flush();
}
///////////////////////////////////////////////////////////////////////////////////////////////
void accensione(){
if(OldStartAccenditore > millis()){ // se millis si resetta (dopo circa 50 gg)
OldStartAccenditore = millis();
}
if(PrimoCicloON){ // se è la prima volta che entro nello stato ON
PrimoCicloON = false;
OldStartAccenditore = millis();
valCoclea=1;
na=1;
}
if((millis() - OldStartAccenditore) < 300000){ // se non sono trascorsi 3 minuti
if(Tfumi<25){
digitalWrite(accenditore, HIGH);
t25.setText("ON");
}else{
digitalWrite(accenditore, LOW);
t25.setText("OFF");
}}
else{
digitalWrite(accenditore, LOW);
valCoclea=0;
t25.setText("OFF");
}
////////////////////////////////
if(OldStartAccensione > millis()){ // se millis si resetta (dopo circa 50 gg)
OldStartAccensione = millis();
}
if(PrimaAccensione){ // se è la prima volta che entro nello stato ON
PrimaAccensione = false;
OldStartAccensione = millis();
}
if((millis() - OldStartAccensione) > 600000){ // se non sono trascorsi 3 minuti
if (Tfumi<40){
na=0;
t8.setText("MANCA FUOCO");
}else{
na=1;
Spellet=true;
pellet=1;
}
}}
////////////////////////////////////////////////////////////////////////////////////////////////////////
e questo è il firmware del display
--------------- Non è impossibile se è fattibile!
|