У меня возникли проблемы с сообщением между Arduino's над I2C. По какой-то причине обработчик onReceive
вызывается только один раз.I2C onReceive-обработчик называется только один раз
Мастер код (отправитель):
#include <Wire.h>
#include "i2csettings.h" // defines address
void setup()
{
Wire.begin(I2C_MASTER_ADDRESS);
}
void loop()
{
Wire.beginTransmission(I2C_SLAVE_ADDRESS);
Wire.write(0x11);
Wire.endTransmission();
delay(1000);
}
Подчиненный код (приемник):
#include <Wire.h>
#include "i2csettings.h"
void takeAction(int);
void setup()
{
Serial.begin(9600);
Wire.begin(I2C_SLAVE_ADDRESS);
Wire.onReceive(takeAction);
}
void loop()
{}
void takeAction(int nBytes)
{
Serial.println("Action!");
}
Идея в этом тест-установки, чтобы иметь отправитель посылает байт каждый во-вторых, и пусть получатель действует на это, печатая сообщение. Однако сообщение печатается только один раз. Когда я перезагружаю Slave, он снова печатается, но только один раз.
Любые идеи, из которых это может произойти?
Спасибо! Очень хорошо знать, хотя проект подошел к концу некоторое время назад. Я буду иметь это в виду для будущей справки и буду принимать ответ, когда я получу шанс подтвердить это. – JorenHeit