Связь I2C, ESP->Nano на endTransmission без ACK от nano

Я пытаюсь установить связь между ESP (главным) и arduino nano (ведомым). Это только прототип и все работает отлично. Но я хочу добавить несколько ардуино, и поэтому мне нужно определить, подключено ли ардуино.

Я использую функцию возврата из wire.endTransmission, как показано в сканере i2c, для обнаружения устройств. Но это не работает.

На ардуино у меня есть эта программа:

#include <Wire.h>

const int16_t I2C_SLAVE = 0x22; // 0x22 = 34 cize izba 3(30)

void setup() {
  Wire.begin(I2C_SLAVE);  

}

void loop() {
  // поместите сюда ваш основной код для многократного запуска:

}

на ESP я пытаюсь это сделать:

Wire.beginTransmission(I2C_adress[adress]);
int error = Wire.endTransmission();

Serial.println(error);

Он возвращает только 2 (получен NACK при передаче адреса) Почему? Когда у меня есть другой код на подчиненном устройстве (с onRecive и onRequest все работает и общается)

Спасибо.

, 👍0

Обсуждение

у вас есть два адуино с вышеуказанной программой?, @jsotola

Пожалуйста, покажите полные компилируемые программы для Arduino и ESP., @chrisl

Спасибо вам, ребята., @Tomas


1 ответ


Лучший ответ:

1

Я дурак, я пытался определить другие устройства в функции настройки до Wire.begin(PIN_SDA, PIN_SCL, I2C_MASTER); Я нашел это только благодаря вам. Резиновая уточка. Я начал записывать программу, чтобы разместить ее здесь, и бинго. Именно по этой причине у мастера был "NACK" отвечать. Мастер еще не запущен.

Спасибо

,