Чтение данных с i2c-датчика температуры tc74a0-5.0vat

Mihay
Offline
Зарегистрирован: 07.08.2020

Здравствуйте

Приобрел датчик температуры TC74A0-5.0VAT

собрал схему и залил скетч:

http://wikihandbk.com/wiki/Arduino:%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B/%D0%A7%D1%82%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_%D1%81_I2C-%D0%B4%D0%B0%D1%82%D1%87%D0%B8%D0%BA%D0%B0_%D1%82%D0%B5%D0%BC%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D1%83%D1%80%D1%8B_TC74A0-5.0VAT

Но данных нет, вернее зависает на ожидании ответа

while(Wire.available() == 0);

Уже все перепробовал, менял контакты, расположение датчика и т.д.

Хоть ты тресни не пойму в чем дело?

Кто может подсказать? По ссылке простейший пример, который я не могу реализовать!

Mihay
Offline
Зарегистрирован: 07.08.2020
#include <Wire.h>                              // Подключаем библиотеку Wire
int temp_address = 72;                         // Адрес(1001000) I2C-датчика температуры TC74A0-5.0VAT в десятичной нотации

void setup()
{
  Serial.begin(9600);                          // Инициализация последовательной передачи данных на скорости в 9600 бод
  Wire.begin();                                // Создаем Wire объект
}

void loop()
{
  // Отправка запроса
  Wire.beginTransmission(temp_address);        // Выбор ведомого устройства отправкой его адреса
  Wire.write(0);                               // Отправка 0, тем самым указывая что мы хотим прочитать данные из регистра температуры нашего датчика
  Wire.endTransmission();                      // Отправка стоп-бита, тем самым сообщаем об окончании записи на устройство
  
  // Чтение температуры с датчика 
  Wire.requestFrom(temp_address, 1);           // Запрос 1 байта по адресу устройства 
  while(Wire.available() == 0);                // Ожидаем ответа
  int c = Wire.read();                         // Чтение данных в переменную
 
  int f = round(c * 9.0 / 5.0 + 32.0);         // Переводим Цельсии в Фаренгейты и округляем результат
 
  // Передаем считанную температуру в последовательный порт
  Serial.print("Температура: ");
  Serial.print(c);
  Serial.print("C (");
  Serial.print(f);
  Serial.print("F");
  Serial.println(")");
 
  delay(500);                                // Задержка 500 мс.
}
См.та

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

1. Как подключено? Питание, данные, давайте схему и фото.

2. Что говорит I2C сканер?

3. Откуда уверенность, что зависает на ожидании ответа?

Komandir
Komandir аватар
Offline
Зарегистрирован: 18.08.2018

i2c scanner что говорит ? Какая маркировка на чипе ???

Mihay
Offline
Зарегистрирован: 07.08.2020

ЕвгенийП пишет:

1. Как подключено? Питание, данные, давайте схему и фото.

2. Что говорит I2C сканер?

3. Откуда уверенность, что зависает на ожидании ответа?

1. подключено вот так

2. я не знаю как написать I2C сканер. Помогите мне.

3. Если я ожидание ответа закомментирую, то каждые 500 мс пишет в порт нулевые -неправильные данные 

Mihay
Offline
Зарегистрирован: 07.08.2020

Komandir пишет:

i2c scanner что говорит ? Какая маркировка на чипе ???

Я не знаю как написать I2C сканер. Маркировка 

TC74A0-5.0VAT 19207V7

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Mihay, к чему подключаете - к Arduino? Что вам советуют испытать - I2C сканер?

Какой поисковый запрос должен быть - "Arduino I2C сканер"? 

Mihay
Offline
Зарегистрирован: 07.08.2020

сегодня ничего не делая решил проверить - заработало. А что вчера было не пойму! Спасибо всем!

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Mihay пишет:
2. я не знаю как написать I2C сканер. Помогите мне.
Ну, вот прямо так и пишите. В поисковой строке гугла "I2C сканер" да и здесь на форуме его много раз выкладывали.

Обязательно запустите его. Он покажет по какому адресу он видит устройство.

Скорее всего у Вас неверный адрес. Вы используете 72, а в даташите написано, что по умолчанию - 77

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Mihay пишет:

Я не знаю как написать I2C сканер. Маркировка 

TC74A0-5.0VAT 19207V7

i2c_scanner у меня почему-то лежит в родных Ардуиновских библиотеках