2015-08-26 104 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