问题遇到的现象和发生背景
用arduino做一个多点温湿度检测,使用的是4个SHT20传感器,因为需要使用IIC通讯,接了个tca9548A扩展板。代码是编译成功了,但是串口监视器显示的温湿度都是不正确的。
#include <Wire.h>
#include "uFire_SHT20.h"
#define TCAADDR 0x70
uFire_SHT20 sht1; //传感器1
uFire_SHT20 sht2; //传感器2
uFire_SHT20 sht3; //传感器3
uFire_SHT20 sht4; //传感器4
void tcaselect(uint8_t i) //选择从机
{
if (i > 7) return;
Wire.beginTransmission(TCAADDR);
Wire.write(1 << i);
Wire.endTransmission();
}
void setup()
{
Serial.begin(9600);、
Wire.begin();
tcaselect(1);
sht1.begin();
delay(100);
tcaselect(2);
sht2.begin();
delay(100);
tcaselect(3);
sht3.begin();
delay(100);
tcaselect(4);
sht4.begin();
delay(100);
}
void loop()
{
tcaselect(1);
sht1.measure_all();
Serial.println((String)"传感器1:"+sht1.tempC + "°C");
Serial.println((String)"传感器1:"+sht1.RH + " %RH");
Serial.println();
delay(1000);
tcaselect(2);
sht2.measure_all();
Serial.println((String)"传感器2:"+sht2.tempC + "°C");
Serial.println((String)"传感器2:"+sht2.RH + " %RH");
Serial.println();
delay(1000);
tcaselect(3);
sht3.measure_all();
Serial.println((String)"传感器3:"+sht3.tempC + "°C");
Serial.println((String)"传感器3:"+sht3.RH + " %RH");
Serial.println();
delay(1000);
tcaselect(4);
sht4.measure_all();
Serial.println((String)"传感器4:"+sht4.tempC + "°C");
Serial.println((String)"传感器4:"+sht4.RH + " %RH");
Serial.println();
delay(1000);
}