gpt4 book ai didi

arduino - Raspberry Pi 作为 I2C 中的 Slave 和 arduino 作为 Master

转载 作者:行者123 更新时间:2023-12-03 17:38:56 26 4
gpt4 key购买 nike

我正在尝试编写一个代码,在其中我在 arduino 中运行我的主程序,并在需要时从树莓派的 i2c 总线获取数据。因此,我需要将我的 arduino 配置为 I2C Master,将 raspberry pi 配置为 I2C slave。是否有可能以与使 pi 为主而 arduino 为从属相同的方式来做到这一点?如果没有,还有其他可能的方法吗?

P.S.:-我只进行一对一的通信,即 arduino 作为主设备,覆盆子作为从设备。没有连接其他设备。

谢谢你的帮助。

最佳答案

是的;这是我在构建需要 Arduino 模拟和中断触发输入的气象站时所做的事情。在 Master 上,python 代码如下所示:

i2c_ch = 1
bus = smbus.SMBus(i2c_ch)
#address of the Arduino slave:
i2c_address = 20
...
readArray = bus.read_i2c_block_data(i2c_address,8)

然后在 Arduino 上,代码将如下所示:
#define I2C_SLAVE_ADDR 20

void setup() {
Wire.begin(I2C_SLAVE_ADDR);
Wire.onReceive(receieveEvent);
Wire.onRequest(requestEvent);
}

void receieveEvent() { //for reading data from the master
byte byteRead = 0;
while(0 < Wire.available()) // loop through all but the last
{
byteRead = Wire.read();
}
}

void requestEvent(){ //for sending data to the master
long val = millis(); //whatever you want to send, in this case millis()
byte buffer[4];
buffer[0] = val >> 24;
buffer[1] = val >> 16;
buffer[2] = val >> 8;
buffer[3] = val;
Wire.write(buffer, 4);
}
有关这方面的更多详细信息,请在此处查看我为该气象站的代码制作的 github 存储库: https://github.com/judasgutenberg/i2c-weather-slave

关于arduino - Raspberry Pi 作为 I2C 中的 Slave 和 arduino 作为 Master,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41005114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com