Problema con sensor pression barometrica BMP280

Hola buenos días, estoy intentando lograr que me comunique el sensor bmp280 por i2c y no logro que este funcione. Si lo pongo por SPI funciona pero por i2c no lo logro ni con arduino mega y tampoco con arduino uno.
Como datos que puedo aportar estoy usando el arduino IDE 1.5.8 y estoy usando el ejemplo de comunicación de adafruit conectando en arduino uno en los pines A4 y A5 y en arduino mega los pines 20 y 21.
Si alguien me puede aportar un poco de luz le estare muy agradecido.
Saludos

EDITO: he usado el scanner de dispositivos I2C y para mi sorpresa detecta los 2 dispositivos

No es la primera ves que leo una doble dirección reportada por el scanner I2C.
Primero verifiquemos lo que puede parecer obvio.


Son estas tus conexiones? Supongo que si.

Has probado con las dos direcciones reportadas? Supongo que también lo has hecho.

Usa esta librería BMP280

Amplio la respuesta.
Es un dispositivo lento para contestar, verifica que no haya ningún delay cuando esta leyendo la dirección.
Otra verificación mas: debes leer con tu multímetro entre 3 y 3.3V en las líneas SDA y SCL. Si no mides eso coloca resistencias pull-ups de 10k o 4k7 a 5V claro está.

Buenos días Surbyte gracias por tu respuesta!
Lo primero es aclarar que estoy usando dos sensores i2c en mi proyecto con lo que es correcto las dos direcciones hexadecimal del escaner (mi proyecto es una estación meteorológica), los dos sensores i2c en cuestión son sensor de luz BH1750FVI y también el sensor de presión atmosférica BMP280.
Es la primera vez que uso el puerto i2c para mis proyectos y no se muy bien como distinguir los dos sensores en cuanto al código.
El sensor de luz BH1750FVI me funciona correctamente y me esta dando el valor correctamente, en cambio el sensor de presión no me esta devolviendo ningún valor.
Es necesario declarar una variable en el código de la aplicación con la dirección hexadecimal de cada sensor? es en este punto donde estoy un poco perdido y no se si es necesario mas allá de la librería de cada sensor.
Me sorprende que solo cargando el ejemplo del sensor barometrico este ya no me devuelva ningún valor.

Esta tarde revisare el tema de voltajes que comentas entre sda y scl del sensor por si requiere de resistencia y también probare la libreria que me indicas y ya comentare resultados.
Gracias de nuevo

surbyte:
No es la primera ves que leo una doble dirección reportada por el scanner I2C.
Primero verifiquemos lo que puede parecer obvio.


Son estas tus conexiones? Supongo que si.

Has probado con las dos direcciones reportadas? Supongo que también lo has hecho.

Usa esta librería BMP280

Amplio la respuesta.
Es un dispositivo lento para contestar, verifica que no haya ningún delay cuando esta leyendo la dirección.
Otra verificación mas: debes leer con tu multímetro entre 3 y 3.3V en las líneas SDA y SCL. Si no mides eso coloca resistencias pull-ups de 10k o 4k7 a 5V claro está.

bueno, lo que le digo a todo el mundo GOOGLE hoja de datos o GOOGLE BMP280 address
Ahi verías que es 0x76 o 0x77.
seguramente 0x76

surbyte:
bueno, lo que le digo a todo el mundo GOOGLE hoja de datos o GOOGLE BMP280 address
Ahi verías que es 0x76 o 0x77.
seguramente 0x76

Ya he conseguido que me muestre el valor correcto modificando en la librería el código hexadecimal.
Ahora haber si consigo que me mande el mismo valor por un string porque no se porque me lo esta modificando cuando realmente le estoy enviando lo mismo que por el monitor serie.

 connection->send(F("<h2>PRESION ATMOSFERICA = "));
 int pr = bme.readPressure();//Realizamos una lectura del sensor
 connection->send(String(pr));
 connection->send(F("PA"));
 
   Serial.print(F("Pressure = "));
   Serial.print(bme.readPressure());
   Serial.println(" Pa");

Gracias

ricardpous:
Hola buenos días, estoy intentando lograr que me comunique el sensor bmp280 por i2c y no logro que este funcione. Si lo pongo por SPI funciona pero por i2c no lo logro ni con arduino mega y tampoco con arduino uno.
Como datos que puedo aportar estoy usando el arduino IDE 1.5.8 y estoy usando el ejemplo de comunicación de adafruit conectando en arduino uno en los pines A4 y A5 y en arduino mega los pines 20 y 21.
Si alguien me puede aportar un poco de luz le estare muy agradecido.
Saludos

EDITO: he usado el scanner de dispositivos I2C y para mi sorpresa detecta los 2 dispositivos

Hola, si colocas el pin SDO en 1 (osea le mandas 3.3V) la lectura la dará en la grabara en la posición de memoria 0x77, esta viene por defecto en la librería "Adafruit_BMP280.h"

Por lo que si no te funciona y no colocabas esa pata a 1 puedes optar por hacer 2 cosas,

  1. Modifica la librería a la posición de memoria 0x76

  2. Pon la pata SDO a 1.

Saludos.