Variabile "problematica"

Buongiorno a tutti,
Sto utilizzando un sensore di pressione.
Dichiaro una variabile globale prima del setup.
leggo il sensore nel setup e attribuisco il valore letto alla variabile precedentemente dichiarata (mi serve da"zero").
se stampo (su seriale) la variabile nel setup è tutto ok.
se la stampo nel loop (nel quale, per ora, non faccio nulla) mi stampa 0 (zero) come se avesse azzerato la variabile stessa tra il setup ed il loop.
Dove sbaglio?

Grazie e scusate, sono alle prime armi e quasi settantenne....

Posta il codice che stai attualmente provando racchiuso nel tag "code"

#include <Wire.h>

// Indirizzo del dispositivo I2C
#define DEVICE_ADDRESS 0x28

const int ActPress;


void setup() {
  // Inizializza la comunicazione I2C
  Wire.begin();
  // Inizializza la comunicazione seriale per il debug
  Serial.begin(9600);

  // Richiedi 2 byte di dati dal dispositivo I2C all'indirizzo 0x00
  Wire.requestFrom(DEVICE_ADDRESS, 2);
  
  // Attendi fino a quando i dati sono disponibili
  while(Wire.available() < 2);
  
  // Leggi i 2 byte di dati
  byte data1 = Wire.read();
  byte data2 = Wire.read();
  
  // Combina i byte letti per ottenere il valore
  //questo è il riferimento della pressione atmosferica vigente
  const int ActPress = (data1 << 8) | data2;

  Serial.print(ActPress);
}

void loop() {
  //int ActualPressure=ActualPressure;
  // Richiedi 2 byte di dati dal dispositivo I2C all'indirizzo 0x00
  Serial.print(ActPress);
 /* Wire.requestFrom(DEVICE_ADDRESS, 2);
  
  // Attendi fino a quando i dati sono disponibili
  while(Wire.available() < 2);
  
  // Leggi i 2 byte di dati
  byte data1 = Wire.read();
  byte data2 = Wire.read();
  
  // Combina i byte letti per ottenere il valore
  int value = (data1 << 8) | data2;

    //1PSI =70,3069 cmH2O
    //0% output 0 in uscita 
    //10% outuput 1638 output in uscita
    //100%output 16383 in uscita
  
  // Stampa il valore letto
Serial.print(ActPress);
  Serial.print("Dati letti: ");
  Serial.println(value);
  Serial.print("pari a ");
  Serial.println((value)-(ActPress));
*/
  // Attendi per un tempo prima di leggere nuovamente
  delay(500);
}

Se dichiari una variabile const non puoi assegnare un nuovo valore.
E comunque le variabili che usi nel setup e quella che stampi nel loop sono due variabili diverse perché quella usata nel setup è locale

NO, tu dichiari una costante, ovvero una variabile che NON può essere modificata a programma.

Magari prova studiare cosa comporta l'attributo "const" QUI :wink:

Guglielmo

P.S.: Prima di usare qualsiasi cosa, studiarsi sempre nel reference cosa fa e come si usa :slight_smile:

Ho capito il mio errore (...leggendo...) Grazie a tutti!

1 Like

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