Ho problemi a comunicare tra Arduino e I2C. Per qualche motivo, il gestore onReceive
viene chiamato solo una volta.I2C onReceive-handler chiamato solo una volta
Codice Master (mittente):
#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);
}
Codice Slave (ricevitore):
#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!");
}
L'idea in questo test-setup è quello di avere il mittente invia un byte ogni secondo, e lasciare che il destinatario agisca su questo stampando un messaggio. Tuttavia, il messaggio viene stampato solo una volta. Quando resetto lo slave, viene stampato di nuovo, ma solo una volta.
Qualche idea da dove possa venire?
Grazie! Molto buono a sapersi, anche se il progetto è finito da un po 'di tempo fa. Terrò questo a mente per riferimenti futuri e accetterò la risposta quando avrò la possibilità di confermarlo. – JorenHeit