Lettura di due termistori e un sensore di pressione digitale

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;



}

E quale sarebbe esattamente l'errore?

Copialo e incollalo qui che vediamo

Che intanto metti anche a posto i tag code

Arduino:1.8.19 (Windows 7), Scheda:"Arduino Uno"





















C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\utente\Documents\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10819 -build-path C:\Users\utente\AppData\Local\Temp\arduino_build_80381 -warnings=none -build-cache C:\Users\utente\AppData\Local\Temp\arduino_cache_230092 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\utente\Documents\Arduino\test_display\test_termistore\test_termistore.ino

C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\utente\Documents\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10819 -build-path C:\Users\utente\AppData\Local\Temp\arduino_build_80381 -warnings=none -build-cache C:\Users\utente\AppData\Local\Temp\arduino_cache_230092 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\utente\Documents\Arduino\test_display\test_termistore\test_termistore.ino

Using board 'uno' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr

Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr

Detecting libraries used...

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "C:\\Users\\utente\\AppData\\Local\\Temp\\arduino_build_80381\\sketch\\test_termistore.ino.cpp" -o nul

Alternatives for LiquidCrystal_I2C.h: [LiquidCrystal_I2C@1.1.2 LiquidCrystal_I2C-1.1.2@1.1.2]

ResolveLibrary(LiquidCrystal_I2C.h)

  -> candidates: [LiquidCrystal_I2C@1.1.2 LiquidCrystal_I2C-1.1.2@1.1.2]

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Users\\utente\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C" "C:\\Users\\utente\\AppData\\Local\\Temp\\arduino_build_80381\\sketch\\test_termistore.ino.cpp" -o nul

Alternatives for Wire.h: [Wire@1.0]

ResolveLibrary(Wire.h)

  -> candidates: [Wire@1.0]

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Users\\utente\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "C:\\Users\\utente\\AppData\\Local\\Temp\\arduino_build_80381\\sketch\\test_termistore.ino.cpp" -o nul

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Users\\utente\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "C:\\Users\\utente\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C\\LiquidCrystal_I2C.cpp" -o nul

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Users\\utente\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src\\Wire.cpp" -o nul

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Users\\utente\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "C:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src\\utility\\twi.c" -o nul

Generating function prototypes...

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Users\\utente\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "C:\\Users\\utente\\AppData\\Local\\Temp\\arduino_build_80381\\sketch\\test_termistore.ino.cpp" -o "C:\\Users\\utente\\AppData\\Local\\Temp\\arduino_build_80381\\preproc\\ctags_target_for_gcc_minus_e.cpp"

"C:\\Program Files (x86)\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\utente\\AppData\\Local\\Temp\\arduino_build_80381\\preproc\\ctags_target_for_gcc_minus_e.cpp"

Sto compilando lo sketch...

"C:\\Program Files (x86)\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10819 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Users\\utente\\Documents\\Arduino\\libraries\\LiquidCrystal_I2C" "-IC:\\Program Files (x86)\\Arduino\\hardware\\arduino\\avr\\libraries\\Wire\\src" "C:\\Users\\utente\\AppData\\Local\\Temp\\arduino_build_80381\\sketch\\test_termistore.ino.cpp" -o "C:\\Users\\utente\\AppData\\Local\\Temp\\arduino_build_80381\\sketch\\test_termistore.ino.cpp.o"

C:\Users\utente\Documents\Arduino\test_display\test_termistore\test_termistore.ino: In function 'void loop()':

test_termistore:29:8: error: 'calcTemp1' was not declared in this scope

 temp1= calcTemp1(analogRead(A0), 3950, 2800);

        ^~~~~~~~~

test_termistore:32:8: error: 'calcTemp2' was not declared in this scope

 temp2= calcTemp2(analogRead(A1), 3950, 2800);

        ^~~~~~~~~

C:\Users\utente\Documents\Arduino\test_display\test_termistore\test_termistore.ino: At global scope:

test_termistore:36:1: error: expected unqualified-id before '{' token

 {

 ^

Più di una libreria trovata per "LiquidCrystal_I2C.h"

Usata: C:\Users\utente\Documents\Arduino\libraries\LiquidCrystal_I2C

Non usata: C:\Users\utente\Documents\Arduino\libraries\LiquidCrystal_I2C-1.1.2

Uso la libreria LiquidCrystal_I2C alla versione 1.1.2 nella cartella: C:\Users\utente\Documents\Arduino\libraries\LiquidCrystal_I2C 

Uso la libreria Wire alla versione 1.0 nella cartella: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire 

exit status 1

'calcTemp1' was not declared in this scope


Buon Giorno l'errore è questo.

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?

sono alle prime armi e non ho ancora una conoscenza decorosa sul software farò ricerche su come si dichiara una funzione .
Grazie

Per le tua buona volontà e per la tua buona predisposizione

Hai dichiarato la funzione tra parentesi graffe

Cancella quelle due parentesi graffe inutili (una aperta e una chiusa)
Edit
Basta solo spostare quella aperta

E vediamo come va

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....

Invece di usare 2 funzioni puoi utilizzarne una sola tanto il primo parametro che passi è il numero del pin da leggere.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.