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

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

#include 
#include 

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 
#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个数。

你可能感兴趣的:(嵌入式学习,arduino,c++)