Arduino и TWI

GOST
Offline
Зарегистрирован: 29.09.2013

Доброго времени суток! Подскажите, как получить данные с датчика по TWI. Датчик LM75A (http://www.nxp.com/documents/data_sheet/LM75A.pdf).

Написал такой код:

#include <Wire.h>

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

void loop()
{
  int rx = 13;
  Wire.beginTransmission(0x4F);
  Wire.write(0x00);  
  Wire.endTransmission();
  
  Wire.requestFrom(0x4F, 2); 

  char c = 13;
  while(Wire.available())
  { 
    c = Wire.read();   
    Serial.print(c, DEC);
  }
  
  Serial.print(rx);
  delay(5000);
}

Врезультате выдает -1. Что не так?

maksim
Offline
Зарегистрирован: 12.02.2012

Вы забыли описать как подключен датчик.

Что за дуина?
К каким выводам подключаетесь?

Судя по адресу все три адресные ноги подключены к питанию, так?
Подтягивающие резисторы установлены? Для работы данного датчика с дуиной обязятелен хотябы 1 резистор на линии SDA ибо у датчика на ней open-drain.

GOST
Offline
Зарегистрирован: 29.09.2013

Друина Мега. Подключаюсь к выводам SDA (20) и SCL (21).

Все три адресных ноги на питании. Подтягивающие резисторы есть. В работоспособности датчика и в правильности соединения я более чем уверен, этот же датчик подключал к другому камню (не друино и не АВР) и он работал.

P.S. Датчик питаю от самой друино (пины 5В и земля соответственно).

maksim
Offline
Зарегистрирован: 12.02.2012

То есть в монитор вы получаете следующее:

-1-113-1-113-1-113 и т.д.

верно?

GOST
Offline
Зарегистрирован: 29.09.2013

Нет. Я получаю -1-1-1-1-1-1-1...

P.S. Не получаю 13 т.к. удалил переменную rx и все, что с ней связано.

maksim
Offline
Зарегистрирован: 12.02.2012

Попробуйте этим сканером найти датчик.

GOST
Offline
Зарегистрирован: 29.09.2013

Все работает! Проблема была в преобразователе логических уровней. :-))

Подскажите, есть какой-то более низкоуровневый способ общения по TWI(он же I2C)?