Ho risolto i problemi del codice precedente(ho cambiato l'ordine delle stringe)
e poi avevo il problema che sia afr che egt erano sulla stessa riga e ho risolto anche quello
Codice: Seleziona tutto
// Librerie:
#include <LiquidCrystal.h>
#include <max6675.h>
// Pin librerie:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int sensorPin = A0; // definisce il pin al quale applicare il segnale dal modulo AFR
int sensorValue1 = 0; // variable to store the value coming from AFR module
int sensorValue0 = 0; // variable to store the value coming from AFR module
int sensorValue2 = 0; // variable to store the value coming from AFR module
float lagFactor = 40.00; // definizione del fattore di smorzamento della lettura
int delayValue = 100; // attesa tra le varie letture
float AFR = 0; // variable to store the real AFR value
float AFR1 = 0; // variable to store the real AFR value
int ktcSO = 8;
int ktcCS = 9;
int ktcCLK = 10;
MAX6675 ktc(ktcCLK, ktcCS, ktcSO);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
//inizializza la comunicazione seriale col pc per la visualizzazione dei dati
Serial.begin(9600);
// MESSAGGIO INIZIALE
// imposta la posizione del cursore e scrive un messaggio iniziale sul LCD.
lcd.setCursor(2, 0);
lcd.print("BENVENUTO");
lcd.setCursor(4, 1);
lcd.print("A BORDO");
// APPLICA UN RITARDO DI 5 SECONDI
delay(5000);
// pulisce lo schermo
lcd.clear();
//INTESTAZIONE MONITOR SERIALE
//stampa su monitor seriale i 5 dati principali
Serial.print("lettura precedente DAC");
Serial.print("lettura attuale DAC");
Serial.print("lettura precedente VOLT");
Serial.print("lettura attuale VOLT");
Serial.println("AFR precedente");
}
void loop() {
// memorizza la letture precedente in una nuova variabile
sensorValue0 = sensorValue2 ;
// legge l'ingresso sul pin 0
sensorValue1 = analogRead(sensorPin);
//calcolo il valore letto in Volt
float voltage0= sensorValue0 * (5.0 / 1023.0);
float voltage1= sensorValue1 * (5.0 / 1023.0);
//stampo a monitor tutte le variabilii
Serial.print(sensorValue0 );
Serial.print(sensorValue1 );
Serial.print(voltage0,2 );
Serial.print(voltage1,2 );
Serial.println(AFR,2 );
//CALCOLO DEL VALORE AFR
// applico un filtro al valore letto per evitare i disturbi
sensorValue2 = sensorValue0 + (sensorValue1 - sensorValue0)*(0.40);
// trasforma la lettura nel valore AFR
AFR = map ( sensorValue2 ,0 , 1023 ,1000 ,2000 );
AFR1=AFR/100 ;
//STAMPA SUL DISPLAY DEL VALORE AFR
// posiziono il cursore sulla terza colonna ovvero la n°2, prima riga ovvero la n°0
lcd.setCursor(3, 1);
// stampo il valore AFR sul display:
lcd.print("AFR = ");
lcd.print(AFR1);
//Mi posiziono sulla 3° colonna, seconda riga.
lcd.setCursor(3, 0);
//Stampo il valore EGT sul display:
lcd.print("EGT = ");
lcd.print(ktc.readCelsius());
// applico un piccolo ritardo per stabilizzare la lettura
delay(delayValue);
}
ora devo solo risolvere il fatto che l'egt non funziona,rimane ad un valore fisso di 25.25°(variava con il programma base)