Mam problem z komunikacją między Arduino a I2C. Z jakiegoś powodu, obsługa onReceive
jest wywoływana tylko raz.I2C onReceive-handler wywoływany tylko raz
Kod Główny (nadawca):
#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);
}
Kod slave (odbiornik):
#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!");
}
Chodzi w tym test-setup jest, aby nadawca wysyła bajt każdego po drugie, niech odbiorca zareaguje na to, drukując wiadomość. Jednak wiadomość jest drukowana tylko raz. Po zresetowaniu urządzenia Slave drukowane jest ponownie, ale tylko raz.
Jakieś pomysły, skąd może to pochodzić?
Dzięki! Bardzo dobrze wiedzieć, mimo że projekt dobiegł końca. Będę o tym pamiętać, by móc się z nim zapoznać w przyszłości i zaakceptuję odpowiedź, gdy będę miał szansę to potwierdzić. – JorenHeit