Arduino и TWI
- Войдите на сайт для отправки комментариев
Вс, 29/09/2013 - 03:04
Доброго времени суток! Подскажите, как получить данные с датчика по 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. Что не так?
Вы забыли описать как подключен датчик.
Что за дуина?
К каким выводам подключаетесь?
Судя по адресу все три адресные ноги подключены к питанию, так?
Подтягивающие резисторы установлены? Для работы данного датчика с дуиной обязятелен хотябы 1 резистор на линии SDA ибо у датчика на ней open-drain.
Друина Мега. Подключаюсь к выводам SDA (20) и SCL (21).
Все три адресных ноги на питании. Подтягивающие резисторы есть. В работоспособности датчика и в правильности соединения я более чем уверен, этот же датчик подключал к другому камню (не друино и не АВР) и он работал.
P.S. Датчик питаю от самой друино (пины 5В и земля соответственно).
То есть в монитор вы получаете следующее:
верно?
Нет. Я получаю -1-1-1-1-1-1-1...
P.S. Не получаю 13 т.к. удалил переменную rx и все, что с ней связано.
Попробуйте этим сканером найти датчик.
Все работает! Проблема была в преобразователе логических уровней. :-))
Подскажите, есть какой-то более низкоуровневый способ общения по TWI(он же I2C)?