2015-08-26 76 views
0

我已将I2C3221连接到I2C总线上的Teensy 3.1并将其连接到Vref(3.3V),以检查它是否正常工作。然而,即使我将它连接到不同的电压,它仍然读数为0。我的代码是否有问题,或者应该只是购买新设备?I2C MCP3221在任何电压下读取0的12位ADC

#include <MCP3221.h> 
#include <Wire.h> 
#include "SoftwareSerial.h" 

#define ADDRESS 0x4D // 7 bits address is 0x4D, 8 bits is 0x9B 

MCP3221 adc(155,0x3); 

void setup() { 
    Serial.begin(9600); 
    Serial.println("First"); 
    Wire.begin(); //connects I2C 

} 


void loop() { 

    Serial.println(adc.readI2CADC()); 

    delay(10); 

} 

回答

0

您没有使用正确的地址。你声明了这个常量,但从不使用它。 adc声明应该是这样的

MCP3221 adc(ADDRESS, 0x3); 

为什么?做一点搜索,我发现,而不是8位地址(十进制155或十六进制0x9B),在这种情况下,你have to use 7 bits address,0x4D。你也可以在this example看到。我想你应该在Arduino IDE中的File> Examples> MCP3221中有这个例子。

看看这个例子,好像你传递给adc的第二个参数也可能是错的,但我不确定这一点。如果你看到你总是测量一样的话,试试更大的价值。

+0

哦,哦,哈哈。我现在正在使用ADDRESS,但我看到相同的输出。我甚至换了一个新的ADC组件,只看到0。我在库中看到第二个参数实际上是毫伏,所以我将对象声明更改为: MCP3221 adc(ADDRESS,0xBB8); 仍然无法使用 – pshao

+0

您是否尝试过该示例? – mclopez