Arduino I2C DS1621命令

时间:2013-06-04 03:03:08

标签: c++ arduino

我对DS1621(arduino)有疑问:

必须将哪些命令和参数发送到引脚3(TOut),以便在HIGH时显示温度高于25摄氏度?

我想使用Wire lib。 这是正确的还是我还需要什么?

 #define DEV_ID 0x90 >> 1 
 int tempC = 25;  //for 25 Celsius 

 void setup() {
  Serial.begin(9600);           
  Wire.begin();
  Wire.beginTransmission(DEV_ID);           // connect to DS1621 
  Wire.send(0xAC);                          
  Wire.send(0x02);                          
  Wire.beginTransmission(DEV_ID);           
  Wire.send(0xEE);                          
  Wire.endTransmission();
 }

 void loop() {
  tempC = Wire.receive();
  Serial.print(tempC);
 }

1 个答案:

答案 0 :(得分:0)

Tout是“恒温器输出。当温度超过TH时有效;将在何时复位 温度低于TL。“

所以你必须设置TL和TH。必须发送控制字节,因为值为send

[A1h] [TH的值] [A2h] [TL的值]

幸运的是,我们25度是他们给出的值为0x19或00011001 所以我的代码看起来像这样

 Wire.begin();
 Wire.beginTransmission(DEV_ID);           //I am talking to you
 Wire.send(0xA1);                          //I want to change TH
 Wire.send(0x19);                          //Value of 25
 Wire.endTransmission();

 Wire.beginTransmission(DEV_ID);           //I am talking to you
 wire.send(0xA2);                          //I want to change TL
 Wire.send(0x19);                          //value of 25                      
 Wire.endTransmission();

你已经添加/保留了其余的代码,但看看是否可以解决问题。

以下是数据表http://pdfserv.maximintegrated.com/en/ds/DS1621.pdf