Non vorrei che ibnterpretassi questo scambio di messaggi come arrogante o polemico, ma non capisco e visto che evidentemente mi sta sfuggendo qualcosa insisto, questo è il codice copiato dal post #20
#include <Thermocouple.h>
#include <SPI.h>
#define l 4 //collegato al pin 4 led
#define f 5 //collegato al pin 5 sensore di fiamma
#define v 3 // collegato al pin 3 ventola
#define r_1 6 // collegato al pin 6 rele 1
#define r_2 7 // collegato al pin 7 rele 2
#define P A0 //collegato al pin A0 sensore pin pressione da 1.2 MPa
// per il collegamento delle termocoppie, collegare i pin SO1 e SO2 insieme al pin 12 mentre i pin SCK1 e SCK2 insieme al pin 13
// i pin CS si collegano separati e vanno come descritto nel define
#define T_2 10 //termocoppia 2 al pin 10 termocoppia radiatore
#define T_1 9 //termocoppia 1 al pin 9 termocoppia punto caldo
Thermocouple T1 = Thermocouple(T_1); //leggo il pin 9
Thermocouple T2 = Thermocouple(T_2); //leggo il pin 10
// dichiarazione variabili e costanti
int Fiamma = 0;
int j = 1;
int intervallo_1 = 100;
int intervallo_2 = 1000;
int intervallo_3 = 500;
double m = 0;
double Pressione_oggi = 0;
double costante_correttiva = 0;
double Volt_P = 0;
double Press = 0;
unsigned long int Tempo_1 = 0;
unsigned long int Tempo_2 = 0;
unsigned long int Tempo_3 = 0;
void setup() {
pinMode(r_1,OUTPUT); //rele 1
pinMode(r_2,OUTPUT); // rele 2
pinMode(l,OUTPUT); //led
pinMode(v,OUTPUT); //ventola
pinMode(f,INPUT); //sensore di fiamma
pinMode(P,INPUT); //sensore di pressione da 1.2MPa
Serial.begin(9600);
delay(500);
}
double media(double Volt_P,double Pressione_oggi){
int i = 0;
int N = 10;
double k = 0;
double m = 0;
double Costante_correttiva = 0;
Costante_correttiva = ((Pressione_oggi/(Volt_P - 0.5))*0.001); // calcolo il valore della
//costante correttiva da mettere nella formula per il calcolo della Pressione associato
//alla variabile Press
//calcolo una media su 10 valori per avere un valore poco impreciso
//da mettere nel calcolo della Pressione associato alla variabile
//Press
for(i=0; i<N; i++){
k += costante_correttiva;
}
m = k/N;
Serial.println("costante da mettere:");
Serial.println(m);
return m;
}
void loop() {
if (millis() - Tempo_1 > intervallo_1){
Tempo_1 = millis();
Fiamma = digitalRead(f);
digitalWrite(v,0>20); // ventola disattivata
digitalWrite(r_1,0>20);//disattivo il relè (il cavo nero della pompa va al NC1, mentre il jumper nero va alla //(COM1)
digitalWrite(r_2,Fiamma<1); //controllo il sensore di fiamma e se è basso(fiamma accesa) allora scatta il relè
digitalWrite(l,1); //imposto il led a stato nullo
if(Fiamma==0){
digitalWrite(l,0); //accendo il led
}
}
if(millis() - Tempo_2 > intervallo_2){
// stampo sulla porta seriale i valori letti dalla termocoppia
// uso un altra funzione millis() perchè necessito di un tempo di campionamento
// diverso da quello della prima millis()
Tempo_2 = millis();
Serial.println("");
Serial.println("TEMP_RADIATORE = ");
Serial.println(T2.readC());
Serial.println("TEMP_PUNTO_CALDO = ");
Serial.println(T1.readC());
}
if(millis() - Tempo_3 > intervallo_3){
//uso un' altra funzione millis per campionare i valori letti dal sensore di pressione
//uso una terza funzione millis() per tempi di campionamento diversi.
Tempo_3 = millis();
Volt_P = analogRead(P);//leggo il sensore di pressione
Volt_P = ((Volt_P*5.0)/1024.0);
do{
// in questo ciclo voglio legger una sola volta e all'inizio del programma
//il valore della media da mettere come costante correttiva per avere la lettura
//della pressione prossimo per eccesso o difetto a quella atmosferica.
//leggo da tastiera il valore della pressione atmosferica giornaliera in Pa
Serial.println("Scrivi il valore della Pressione atmosferica di ogg in [Pa]:");
Pressione_oggi = Serial.read();
m = media(Volt_P, Pressione_oggi);
j++;
}while(j<11);
Press = (m*(Volt_P - 0.5))*(1);// leggo il valore della pressione in MPa, la costante non influeza
//le eventuali fluttuazioni di pressione
Serial.println("Pressione in MPa");
Serial.println(Press);
}
}
void displayTemp(float fTemp) {
if (fTemp < 0.0) {
Serial.println("Open thermocouple circuit");
}
else {
Serial.print(fTemp, 0);
Serial.println("\260F"); //octal 260 = degree symbol
}
}
Io vedo una sola lettura dentro l'if temporizzato a 1 secondo, dove sono le altre letture a cui fai riferimento?
Poi convengo con te che se l'OP non fa prove e non da feedback stiamo parlando tra noi di un problema non nostro ![]()