2015-08-26 4 views
0

Я подключил MCP3221 к Teensy 3.1 на шине I2C и подключил его к Vref (3.3V), чтобы проверить, работает ли он. Однако он читает 0, даже когда я подключаю его к другому напряжению. Является ли мой код неисправным или я должен просто получить новое устройство?I2C MCP3221 12-разрядное чтение АЦП 0 при любом напряжении

#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 в файле> Примеры> MCP3221.

Посмотрите на пример, похоже, что второй аргумент, который вы передали в adc, тоже может быть неправильным, но я не уверен в этом. Попытайтесь повысить ценность, если увидите, что вы всегда измеряете то же самое.

+0

oh duh, haha. Я использую ADDRESS сейчас, но я вижу тот же результат. Я даже отключил новый компонент АЦП и просто увидел 0. Я вижу, что в библиотеке второй аргумент на самом деле милливольта, поэтому я изменил объявление объекта на: MCP3221 adc (ADDRESS, 0xBB8); Все еще не работает – pshao

+0

Вы пробовали пример? – mclopez