目录:
1. Arduino Nano
2. HTS221
链接:http://www.controleverything.com/content/Temperature?sku = HTS221_I2CS
3.I²C电缆
链接:http://www.controleverything.com/content/I2C-Cabl …
4.I²CShield用于Arduino Nano
链接:http://www.controleverything.com/content/I2C-Master?sku = ANI2C
第2步:连接:
为Arduino Nano取一个I2C屏蔽,轻轻地将它推到Nano的引脚上。
然后将I2C电缆的一端连接到HTS221传感器,另一端连接到I2C屏蔽。
连接如上图所示。
第3步:代码:
HTS221的arduino代码可以从我们的github存储库 - ControlEverythingCommunity下载
这是相同的链接:
HTTP://github.com/ControlEverythingCommunity/HTS2 …
HTS221的数据表可以在这里找到:
HTTP://s3.amazonaws.com/controleverything.media/c …
我们包括库Wire.h,以方便传感器与Arduino板的I2c通信。
您也可以从这里复制代码,具体如下:
//使用免费许可证分发。
//以任何您想要的方式使用它,获利或免费,只要它适合其相关作品的许可证。
// HTS221
//此代码旨在与ControlEverything.com提供的HTS221_I2CS I2C Mini模块配合使用。
// http://www.controleverything.com/content/Humidit …
#包括 // HTS221 I2C地址为0x5F #define Addr 0x5F void setup() { //将I2C通信初始化为MASTER Wire.begin(); //初始化串行通信,设置波特率= 9600 Serial.begin(9600); //启动I2C传输 Wire.beginTransmission(ADDR); //选择平均配置寄存器 Wire.write(0x10的); //温度平均样本= 256,湿度平均样本= 512 Wire.write(0x1B); //停止I2C传输 Wire.endTransmission(); //启动I2C传输 Wire.beginTransmission(ADDR); //选择控制寄存器1 Wire.write(0×20); //上电,持续更新,数据输出速率= 1 Hz Wire.write(0x85); //停止I2C传输 Wire.endTransmission(); 延迟(300); } void loop() { unsigned int data 2; unsigned int val 4; unsigned int H0,H1,H2,H3,T0,T1,T2,T3,raw; //湿度调用值 for(int i = 0; i <2; i ++) { //启动I2C传输 Wire.beginTransmission(ADDR); //发送数据寄存器 Wire.write((48 + i)); //停止I2C传输 Wire.endTransmission(); //请求1个字节的数据 Wire.requestFrom(Addr,1); //读取1个字节的数据 if(Wire.available()== 1) { data i = Wire.read(); } } //转换湿度数据 H0 =数据0 / 2; H1 =数据1 / 2; for(int i = 0; i <2; i ++) { //启动I2C传输 Wire.beginTransmission(ADDR); //发送数据寄存器 Wire.write((54 + i)); //停止I2C传输 Wire.endTransmission(); //请求1个字节的数据 Wire.requestFrom(ADDR,1); //读取1个字节的数据 if(Wire.available()== 1) { data i = Wire.read(); } } //转换湿度数据 H2 =(data 1 * 256.0)+ data 0; for(int i = 0; i <2; i ++) { //启动I2C传输 Wire.beginTransmission(ADDR); //发送数据寄存器 Wire.write((58 + i)); //停止I2C传输 Wire.endTransmission(); //请求1个字节的数据 Wire.requestFrom(ADDR,1); //读取1个字节的数据 if(Wire.available()== 1) { data i = Wire.read(); } } //转换湿度数据 H3 =(data 1 * 256.0)+ data 0; //温度calliberation值 //启动I2C传输 Wire.beginTransmission(ADDR); //发送数据寄存器 Wire.write(0x32); //停止I2C传输 Wire.endTransmission(); //请求1个字节的数据 Wire.requestFrom(ADDR,1); //读取1个字节的数据 if(Wire.available()== 1) { T0 = Wire.read(); } //启动I2C传输 Wire.beginTransmission(ADDR); //发送数据寄存器 Wire.write(0x33); //停止I2C传输 Wire.endTransmission(); //请求1个字节的数据 Wire.requestFrom(ADDR,1); //读取1个字节的数据 if(Wire.available()== 1) { T1 = Wire.read(); } //启动I2C传输 Wire.beginTransmission(ADDR); //发送数据寄存器 Wire.write(0x35); //停止I2C传输 Wire.endTransmission(); //请求1个字节的数据 Wire.requestFrom(Addr,1); //读取1个字节的数据 if(Wire.available()== 1) { raw = Wire.read(); } raw = raw&0x0F; //将温度calliberation值转换为10位 T0 =((raw&0x03)* 256)+ T0; T1 =((原始&0x0C)* 64)+ T1; for(int i = 0; i <2; i ++) { //启动I2C传输 Wire.beginTransmission(ADDR); //发送数据寄存器 Wire.write((60 + i)); //停止I2C传输 Wire.endTransmission(); //请求1个字节的数据 Wire.requestFrom(ADDR,1); //读取1个字节的数据 if(Wire.available()== 1) { data i = Wire.read(); } } //转换数据 T2 =(data 1 * 256.0)+ data 0; for(int i = 0; i <2; i ++) { //启动I2C传输 Wire.beginTransmission(ADDR); //发送数据寄存器 Wire.write((62 + i)); //停止I2C传输 Wire.endTransmission(); //请求1个字节的数据 Wire.requestFrom(ADDR,1); //读取1个字节的数据 if(Wire.available()== 1) { data i = Wire.read(); } } //转换数据 T3 =(data 1 * 256.0)+ data 0; //启动I2C传输 Wire.beginTransmission(ADDR); //发送数据寄存器 Wire.write(0x28 | 0x80); //停止I2C传输 Wire.endTransmission(); //请求4个字节的数据 Wire.requestFrom(ADDR,4); //读取4个字节的数据 //湿度msb,湿度lsb,temp msb,temp lsb if(Wire.available()== 4) { val 0 = Wire.read(); val 1 = Wire.read(); val 2 = Wire.read(); val 3 = Wire.read(); } //转换数据 float humidity =(val 1 * 256.0)+ val 0; 湿度=((1.0 * H1) - (1.0 * H0))*(1.0 *湿度-1.0 * H2)/(1.0 * H3-1.0 * H2)+(1.0 * H0); int temp =(val 3 * 256)+ val 2; float cTemp =(((T1-T0)/ 8.0)*(temp-T2))/(T3-T2)+(T0 / 8.0); float fTemp =(cTemp * 1.8)+ 32; //将数据输出到串行监视器 Serial.print(“相对湿度:”); Serial.print(湿度); Serial.println(“%RH”); Serial.print(“以摄氏度为单位的温度:”); Serial.print(CTEMP); Serial.println(“C”); Serial.print(“华氏温度:”); Serial.print(fTemp); Serial.println(“F”); 延迟(500); } HTS221可用于各种消费产品,如空气加湿器和冰箱等。该传感器还可用于更广泛的领域,包括智能家居自动化,工业自动化,呼吸设备,资产和货物跟踪。第4步:申请: