Buona sera ,sto costruendo un termometro a 2 termistori NTC (di derivazione automotive) da visualizzare su un display LCD 20x4 abbinato a un sensore di pressione atmosferica (GY-BMP280) ,sono un pò in altro mare.....per ora ho fatto funzionare un solo termistore visualizzando correttamente la temperatura sul display ,in seguito ho copiato le righe di codice cambiando solo la porta di ingresso per il secondo sensore e di uscita per il display per scrivere la temperatura misurata dal secondo ,ma ora quando compilo mi da un errore ,allego il codice di seguito ( premetto che parti del codice le ho copiate da esempi ) qualcuno può gentilmente darmi un consiglio .
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3f,20,4); // set the LCD address to 0x27 for a 20 chars and 4 line display
double temp1;
double temp2;
void setup()
{
Serial.begin(1);
pinMode(A0,INPUT);
pinMode(A1,INPUT);
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("Iat 1:");
lcd.setCursor(0,1);
lcd.print("Iat 2:");
lcd.setCursor(0,2);
lcd.print("Barometrica:");
lcd.setCursor(5,3);
lcd.print("OnlyOff");
}
void loop()
{
temp1= calcTemp1(analogRead(A0), 3950, 2800);
lcd.setCursor (7,0);
lcd.println(temp1);
temp2= calcTemp2(analogRead(A1), 3950, 2800);
lcd.setCursor (7,1);
lcd.println(temp2);
}
{
double calcTemp1(int value, int B, int R0)
double V=(5/1023.00)*value;
double R=((8000.00*5)/V)-10000;
double T= B/log(R/(R0*pow(M_E,(-B/298.15))));
return T-273.15;
double calcTemp2(int value, int B, int R0)
double V=(5/1023.00)*value;
double R=((8000.00*5)/V)-10000;
double T= B/log(R/(R0*pow(M_E,(-B/298.15))));
return T-273.15;
}
Te lo dice esattamente l'errore
La funzione calcTemp1 non è dichiarata
Se vai a vedere dove e come la hai dichiarata lo scopri perché
A proposito di perché
Perché non indentate mai il codice?
Alle volte basterebbe poco per evitare errori noiosi
Perché siete sempre disposti a perdere ore e ore di lavoro (vostro e altrui) per non perdere un minuto (o forse meno) per indentare il codice come Brian&Dennis comandano?
Per quanto riguarda l'indentazione del codice, l'IDE di Arduino ti aiuta: premi i tasti Ctrl-T e ti mette lui a posto il codice. Fallo soprattutto se devi postarlo qui, ma serve anche per consentire a te di avere ad occhio la struttura del codice, senza dover "contare" le graffe. Una volta che è a posto, ti basta continuare ad usare gli stessi criteri (es. tutto quello che c'è tra due graffe va spostato a destra di almeno un paio di caratteri -ossia spazi-) per prendere pratica con la logica. Poi elimina tutte le righe vuote inutili, ossia per separare porzioni di codice usa UNA sola riga vuota, altrimenti anche questo è uno dei fattori che non rendono ben leggibile il codice.
Poi ovviamente fare "copiaincolla" di codice trovato in rete può andare all'inizio, ma è necessario, oltre ai concetti fondamentali della programmazione e del linguaggio usato, cercare anche di capire come funzioni, senza limitarsi a farlo andare e sperare che faccia ciò che ci si attende.
Grazie per la info..sicuramente ,disposto meglio, per chi ha una visione attiva del codice è più semplice da leggere, per me è ancora abbastanza geroglifico .
Il copiaincolla l'ho fatto perchè ho trovato qualcosa che si avvicinava a quello che volevo costruire ,ma non ho ancora le capacità .
Avendo provato con un solo termistore la verifica è andata a buon fine e costruito il circuito ho misurato i valori del sensore ho avuto la risposta sul display con una lettura discreta (un errore di 1-2 gradi che per l'uso che devo fare io è grasso che cola ) ho ragionato di raddoppiare il codice rinominando solo l'input analogico e aggiungendo una nuova riga sul lcd.
Devo fare ancora molta strada......
Sta sera provo a studiarmi le graffe per capire l' errore....