wangshizf 发表于 2015-5-11 14:32:43

温湿度传感器SI7021代码求教

我的SI7021连接UNO,使用如下代码正常测得数据,连接2560后,出现的负值,而且数值一直无变动,请问需要修改哪里?
#include <Wire.h>

const int ADDR =0x40;
int X0,X1,Y0,Y1,Y2,Y3;
double X,Y,X_out,Y_out1,Y_out2;

void setup()
{
   Serial.begin(9600);   

   Wire.begin();                                 
   delay(100);
   Wire.beginTransmission(ADDR);
   Wire.endTransmission();

   pinMode(13,OUTPUT);                           
}
void loop()
{
   /**发送温度测量命令**/       
   Wire.beginTransmission(ADDR);                  
   Wire.write(0xE3);                               //发送读温度命令
   Wire.endTransmission();

   Serial.print("Temp");Serial.print("\t");Serial.println("RH");

   /**读取温度数据**/
   digitalWrite(13,HIGH);                        //LED亮开始读数据
   Wire.requestFrom(ADDR,2);                     //回传数据

   if(Wire.available()<=2);
   {
   X0 = Wire.read();
   X1 = Wire.read();
   X0 = X0<<8;
   X_out = X0+X1;
   }

   /**计算并显示温度**/
   X=(175.72*X_out)/65536;                        
   X=X-46.85;
   Serial.print(X);Serial.print("C");Serial.print("\t");

   /**发送湿度测量命令**/       
   Wire.beginTransmission(ADDR);                     
   Wire.write(0xE5);
   Wire.endTransmission();

   /**读取湿度数据**/       
   Wire.requestFrom(ADDR,2);
   if(Wire.available()<=2);
   {
   Y0 = Wire.read();Y2=Y0/100; Y0=Y0%100;
   Y1 = Wire.read();
   Y_out1 = Y2*25600;
   Y_out2 = Y0*256+Y1;
   }

   /**计算并显示湿度**/
   Y_out1 = (125*Y_out1)/65536;                     
   Y_out2 = (125*Y_out2)/65536;
   Y = Y_out1+Y_out2;
   Y=Y-6;
   Serial.print(Y);Serial.println("%");

   digitalWrite(13,LOW);                           
   delay(1000);
}

Cain 发表于 2015-5-11 16:48:27

本帖最后由 Cain 于 2015-5-11 16:49 编辑

怎么接线的?上连线图。另外注意I2C的口,uno和mega复用的位置是不一样的,不要接A4,A5,mega有专门的20,20引脚用作SDA,SCL

大连林海 发表于 2015-5-12 07:27:54

有问题你 建议把连线图也一起放出来 大家可以清晰的看清 能结合连线 再分析代码 有的时候 代码没有问题 是因为接线:P

wangshizf 发表于 2015-5-12 13:23:43

感谢楼上二位。
设备不在手边没法上图,mega接的20、21引脚的。

wangshizf 发表于 2015-5-12 13:23:52

感谢楼上二位。
设备不在手边没法上图,mega接的20、21引脚的。

VincenChang 发表于 2015-8-13 11:28:44

楼主问题解决了么,我也遇到这个问题了,弄不明白。

juliuke 发表于 2015-11-19 13:58:06

I2C接口的温湿度传感器AM2320,相关的资料找奥松电子下载咨询
页: [1]
查看完整版本: 温湿度传感器SI7021代码求教