我遇到了在Arduino之间通过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!");
}
在这个测试设置中,发送者每秒发送一个字节,让接收者通过打印一条消息来响应。但是,消息只会被打印一次。当我重置从设备时,它会再次打印,但只有一次。
有任何想法是怎么回事?