双Arduino主从机I2C通讯程序的一些例子

    技术2026-06-11  8

    最近项目需要用到一个主机(2560)和多个从机(nano)通讯。 我使用了I2C协议。 主机程序

    #include <Arduino.h> #include <Wire.h> void setup() { Wire.begin(); //初始化I2C 注意-主机不需要指定地址 Serial.begin(115200); //初始化串口 delay(100); Wire.beginTransmission(8); Wire.write("this is master"); Wire.endTransmission(); } void loop() { }

    从机代码

    //arudino slave device #include <Arduino.h> #include "Wire.h" char *buf = NULL; void on_receive(int); void setup() { Wire.begin(8); //从机初始化I2C时需要指定地址 Wire.onReceive(on_receive);//注册回调函数 Serial.begin(115200); } void loop() { } void on_receive(int len) { // Serial.println(sizeof(char) * len); buf = (char *)malloc(sizeof(char) * len); //申请空间 for (char *i = buf; len > 0; i++) { *i = char(Wire.read()); len--; } for (int i = 0; i < len-1; i++) { Serial.print(*(buf + i)); } free(buf); }

    这个buf指针最好用数组替换。 len为I2C接口传来的char个数。

    Processed: 0.015, SQL: 9