In un programma che legge i campi magnetici con un sensore SS49E viene dichiarata la variabile offset che, però, nell'IDE appare in rosso! Ho cercato un po', ma non ho trovato informazioni chiare...
Sostituendola con "zero" sembra funzionare tutto nello stesso modo, quindi sembra funzionare correttamente anche "offset". Mi potete spiegare che cos'è offset in C?
Riporto parte del programma che ho trovato, che poi ho sistemato un po' e modificato.
Grazie
Gianluca
float offset=511.0; // nominal 511: halfway 0 and 1024
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.setTextColor(WHITE);
display.clearDisplay();
pinMode(HALL_PIN,INPUT); //pullup increases current and reduces noise
pinMode(NULL_PIN,INPUT_PULLUP); //avoids need for external pullup resistor
}
void loop() {
//perform the measurement. AnalogRead() takes ~100mus.
long unsigned int sum=0;
long unsigned int sumsq=0;
for (int imeas=0; imeas<nmeas; imeas++){
long int val= analogRead(A0);
sum=sum+val;
sumsq=sumsq+val*val;
}
//recalculate offset if null-button is pressed
if(digitalRead(NULL_PIN)==0) offset=float(sum)/nmeas;
Purtroppo l'IDE esamina le librerie che hai caricato, legge i vari keywords.txt e da quelli prende la colorazione per le "parole chiave" che la libreria definisce da evidenziare ...
Ad esempio (ma è uno tra i tanti), la libreria Adafruit_GPS_Library, tra le keywords ha:
offset KEYWORD2
... e come quella libreriace ne sono molte altre che la definiscono una KEYWORD2.
In questi casi, meglio cambiare nome alla variabile, così si è sicuri che, in futuro, indipendentemente dalla libreria che si utilizzerà, difficilmente si entrerà in conflitto
Ah! Basta che sia installata! Credevo che dovesse essere inclusa nel programma.
Mi sembrava strano che per poter determinare se scriverlo in rosso andasse a controllare gli #include nel programma già durante la digitazione! L'IDE, appena avviato, va a vedere quali sono tutte le keyword delle librerie installate...
Non l'ho trovato scritto da nessuna parte, ma, per ormai anni di esperienza personale, avendo più volte riscontrato quello che stai riscontrando tu, deduco di SI.
Purtroppo non sono state fissate regole per chi scive una libreria e, a parte ovviamente le parole chiave del C/C++, può usare qualsiasi parola e tu te la trovi segnata in rosso ...
E' però cosa anche comoda ... così capisci che potrebbero esserci conflitti e cambi parola