[RISOLTO] BMP085 'Adafruit_BMP085' does not name a type

Ciao a tutti,
ho collegato un sensore BMP (Shield BMP085 sensore di pressione barometrica per arduino/pic - ART. CF06 | eBay) ad un Arduino UNO rev.3

Ho installato le librerie riportate qui Using the BMP (API v2) | Bosch BMP085 Breakout Board | Adafruit Learning System (vedi img01.png) e provato ad inserire il codice di esempio lì riportato per vedere se tutto funzionava...

Ottengo il seguente messaggio di errore (imgo2.png)

sketch_feb25a:5: error: 'Adafruit_BMP085' does not name a type
sketch_feb25a.ino: In function 'void setup()':
sketch_feb25a:13: error: 'bmp' was not declared in this scope
sketch_feb25a.ino: In function 'void loop()':
sketch_feb25a:25: error: 'bmp' was not declared in this scope

Cercando un po' nel forum ho trovato solo il seguente thread
http://forum.arduino.cc/index.php?topic=186778.0
che però non mi sembra faccia al caso mio... qualcuno ha qualche idea?

Grazie mille.

Img01.png

Quella lib non puoi usarla così com'è, l'IDE di Arduino all'avvio te lo dice che il nome contiene caratteri non ammessi (nello specifico, il carattere "_").

Prova a cambiagli nome, da Adrafruit_BMP085_ecc.. in, esempio, BMP085.
Devi cambiare nome anche ai file .h e .cpp.

PS:
non capisco perché Adafruit si ostini a pubblicare librerie con quel carattere, l'IDE lo ha sempre rifiutato.
Non è la prima lib di Adafruit a cui devo cambiare nome.... MAHH!!!

Ciao Leo72,
grazie per la risposta.

In effetti quando cercavo di installare la libreria così come l'avevo scaricata mi diceva che c'erano caratteri non ammessi ,nello specifico il - , ma una volta tolto quello le librerie me le ha installate tranquillamente pur avendo lasciato l'underscore _

Comunque provo a rinominare e vedo se si risolve.
Intanto grazie mille.

Rieccomi.
Purtroppo il suggerimento di Leo72 non ha funzionato! =(

Ho rinominato le librerie (img03) le ho installate (img04), ma il problema rimane (img05).
Di seguito il codice:

sketch_feb25a:5: error: 'AdafruitBMP085' does not name a type
sketch_feb25a.ino: In function 'void setup()':
sketch_feb25a:13: error: 'bmp' was not declared in this scope
sketch_feb25a.ino: In function 'void loop()':
sketch_feb25a:25: error: 'bmp' was not declared in this scope

Img03.png

Img04.png

Devi cambiare anche i vari include dentro ai file di quelle 2 lib.
Difatti a me ha compilato.

Dimensione del file binario dello sketch: 10.412 bytes (su un massimo di 32.256 bytes)

Togli tutti i segni "_" e "-" dai file Adrafruit_Sensor e Adrafuit_BMP085 sia dei nomi delle cartelle che dei file inclusi. Poi apri i file .h .cpp delle 2 lib e controlla gli include e togli i caratteri anche da quei nomi.

Ciao Leo,
grazie per la pazienza.

Io credo di aver fatto come mi hai detto (ti allego i file "corretti" delle due librerie), ma ho ancora lo stesso problema:

#include <Wire.h>
#include <AdafruitSensor.h>
#include <BMP085.h>
   
BMP085 bmp = BMP085(10085);
 
void setup(void) 
{
  Serial.begin(9600);
  Serial.println("Pressure Sensor Test"); Serial.println("");
  
  /* Initialise the sensor */
  if(!bmp.begin())
  {
    /* There was a problem detecting the BMP085 ... check your connections */
    Serial.print("Ooops, no BMP085 detected ... Check your wiring or I2C ADDR!");
    while(1);
  }
}
 
void loop(void) 
{
  /* Get a new sensor event */ 
  sensors_event_t event;
  bmp.getEvent(&event);
 
  /* Display the results (barometric pressure is measure in hPa) */
  if (event.pressure)
  {
    /* Display atmospheric pressure in hPa */
    Serial.print("Pressure: "); Serial.print(event.pressure); Serial.println(" hPa");
  }
  else
  {
    Serial.println("Sensor error");
  }
  delay(250);
}
In file included from sketch_feb25a.ino:3:
C:\Program Files\Arduino\libraries\BMP085/BMP085.h:94: error: expected class-name before '{' token
sketch_feb25a:5: error: 'Adafruit_BMP085' does not name a type
sketch_feb25a.ino: In function 'void setup()':
sketch_feb25a:13: error: 'bmp' was not declared in this scope
sketch_feb25a.ino: In function 'void loop()':
sketch_feb25a:25: error: 'bmp' was not declared in this scope

Sapevo di essere scarso, ma non pensavo così tanto... :grin: :grin: :grin:

AdafruitSensor.rar (2.62 KB)

BMP085.rar (4.21 KB)

Nel file BMP085.h c'è:

#include <Adafruit_Sensor.h>

Mi sa che hai lasciato questo.

Niente...
Corretto, salvato, riavviato l'IDE ma siamo alle solite...

Comincio a deprimermi! :astonished:

Ultima cortesia che vorrei chiedere a Leo (se ti va, non voglio approfittare troppo della tua disponibilità): prima tu hai compilato correttamente... potresti postare i files che hai usato? giusto per curiosità...

Poi cambi anche la chiamata nello sketch, adeguandolo ai nuovi nomi del/dei file .h che includi nello sketch.

Librerie.zip (13.5 KB)

Librerie installate e IDE riavviato.
Lo sketch è questo:

#include <Wire.h>
#include <AdafruitSensor.h>
#include <BMP085.h>
   
BMP085 bmp = Adafruit_BMP085(10085);
 
void setup(void) 
{
  Serial.begin(9600);
  Serial.println("Pressure Sensor Test"); Serial.println("");
  
  /* Initialise the sensor */
  if(!bmp.begin())
  {
    /* There was a problem detecting the BMP085 ... check your connections */
    Serial.print("Ooops, no BMP085 detected ... Check your wiring or I2C ADDR!");
    while(1);
  }
}
 
void loop(void) 
{
  /* Get a new sensor event */ 
  sensors_event_t event;
  bmp.getEvent(&event);
 
  /* Display the results (barometric pressure is measure in hPa) */
  if (event.pressure)
  {
    /* Display atmospheric pressure in hPa */
    Serial.print("Pressure: "); Serial.print(event.pressure); Serial.println(" hPa");
  }
  else
  {
    Serial.println("Sensor error");
  }
  delay(250);
}

l'errore resta.
Niente Leo, ti ringrazio molto ma non voglio approfittare oltre della tua disponibilità.
A presto.

Scusate, ma su Windows almeno, l'underscore non da fastidio.
Io uso Adafruit_BMP085 senza problemi. Quello che dà fastidio è il carattere meno '-'.
Quando estrai le librerie molte volte c'e' una parte che non serve.
Ad esempio Adafruit-BMP085-Library-master.zip crea una cartella come il nome del file, deve diventare Adafruit_BMP085
eliminando "-Library-master" e modificando il meno in underscore.

Ciao nid69ita,
grazie per la risposta.

Scusate, ma su Windows almeno, l'underscore non da fastidio.
Io uso Adafruit_BMP085 senza problemi. Quello che dà fastidio è il carattere meno '-'.

Confermo, come avevo riportato anche nel post 3:

In effetti quando cercavo di installare la libreria così come l'avevo scaricata mi diceva che c'erano caratteri non ammessi ,nello specifico il - , ma una volta tolto quello le librerie me le ha installate tranquillamente pur avendo lasciato l'underscore _

Quando estrai le librerie molte volte c'e' una parte che non serve.
Ad esempio Adafruit-BMP085-Library-master.zip crea una cartella come il nome del file, deve diventare Adafruit_BMP085
eliminando "-Library-master" e modificando il meno in underscore.

E' quello che ho fatto fin dall'inizio, ma il problema resta...

Controlla di aver cancellato le vecchie librerie che possono andare in conflitto.

Sì, vero. E' il "-" che rompe.
E l'esempio che alleghi non riesco a compilarlo neanche io.

Prova allora a riguardare tutte le lib, togliendo sia dai nomi delle cartelle che dai nomi dei file che dai nomi degli include che dai nomi delle classi il carattere "-" se c'è.

Altra prova, ho semplicemente tolto la parte "-master" dal nome delle 2 cartelle Adafruit_Sensor-Master e Adafruit_BMP085_Unified e l'esempio allegato "sensorapi" compila senza problemi.

@PaoloP

PaoloP:
Controlla di aver cancellato le vecchie librerie che possono andare in conflitto.

grazie per la risposta. Già fatto, il problema resta.

@leo72

leo72:
Altra prova, ho semplicemente tolto la parte "-master" dal nome delle 2 cartelle Adafruit_Sensor-Master e Adafruit_BMP085_Unified e l'esempio allegato "sensorapi" compila senza problemi.

Scusa ma non vedo l'allegato...

mario:
@leo72

leo72:
Altra prova, ho semplicemente tolto la parte "-master" dal nome delle 2 cartelle Adafruit_Sensor-Master e Adafruit_BMP085_Unified e l'esempio allegato "sensorapi" compila senza problemi.

Scusa ma non vedo l'allegato...

Scusa, ho capito... ti riferivi all'esempio allegato alla libreria... l'ho compilato anch'io correttamente...

Ok, quindi hai risolto giusto?