Hi there and sorry, if I am making a trivial mistake, but I am new to Arduino projects and I am experiencing a problem.
I want to connect a
Grove - Temperature&Humidity Sensor (High-Accuracy &Mini) v1.0 and a
Grove - Barometer Sensor (BMP280)
to the Grove BaseShield of my Arduino Uno via I2C.
The example sketches work fine, when I connect only one of them, but when I connect both, the example Sketch for BMP280 does not run, whereas the Sketch of TH02 does run.
I digged into the BMP280 library, and found that the sketch gets stuck in the init() function when assigning dig_T3. More specifically in the function bmp280Read16(), because the wire.available() function called there, results in a number less than 2.
What could be the problem here and how can I fix it?
It seems as if the earlier connections while assigning dig_T1 and dig_T2 in the init() function did not get closed properly.
This is the original demo code:
/*
* Demo name : TH02_dev demo
* Usage : DIGITAL I2C HUMIDITY AND TEMPERATURE SENSOR
* Author : Oliver Wang from Seeed Studio
* Version : V0.1
*/
#include <TH02_dev.h>
#include "Arduino.h"
#include "Wire.h"
void setup()
{
Serial.begin(9600); // start serial for output
Serial.println("****TH02_dev demo by seeed studio****\n");
/* Power up,delay 150ms,until voltage is stable */
delay(150);
/* Reset HP20x_dev */
TH02.begin();
delay(100);
/* Determine TH02_dev is available or not */
Serial.println("TH02_dev is available.\n");
}
void loop()
{
float temper = TH02.ReadTemperature();
Serial.println("Temperature: ");
Serial.print(temper);
Serial.println("C\r\n");
float humidity = TH02.ReadHumidity();
Serial.println("Humidity: ");
Serial.print(humidity);
Serial.println("%\r\n");
delay(1000);
}
and this is the modified code, that gets stuck
/*
* Demo name : TH02_dev demo
* Usage : DIGITAL I2C HUMIDITY AND TEMPERATURE SENSOR
* Author : Oliver Wang from Seeed Studio
* Version : V0.1
*/
#include <TH02_dev.h>
#include <Seeed_BMP280.h>
#include "Arduino.h"
#include "Wire.h"
BMP280 bmp280;
void setup()
{
Serial.begin(9600); // start serial for output
Serial.println("****TH02_dev demo by seeed studio****\n");
/* Power up,delay 150ms,until voltage is stable */
delay(150);
if(!bmp280.init()){
Serial.println("Device error!");
}
/* Reset HP20x_dev */
TH02.begin();
delay(100);
/* Determine TH02_dev is available or not */
Serial.println("TH02_dev is available.\n");
}
void loop()
{
float temper = TH02.ReadTemperature();
Serial.println("Temperature: ");
Serial.print(temper);
Serial.println("C\r\n");
float humidity = TH02.ReadHumidity();
Serial.println("Humidity: ");
Serial.print(humidity);
Serial.println("%\r\n");
delay(1000);
}
same for me and same project with TH02 and BMP280 with an I2C hub and connector carrier for MKR 1010.
Almost same code, as I written in an other topic I’ve seen that when I instantiate the libraries (TH02_dev.h and Seeed_BMP280.h), without connecting any device to the MKR Carrier, the I2C scanning give me the result of 2 devices connected at addresses 0x60 and 0x6B.
When I connect one of them one by one, the addresses are: 0x60, 0x6B, plus the real address of the device (defined in the libraries: 0x40 for TH02 and 0X77 for BMP).