hm184092 发表于 2018-11-24 21:32:32

树莓派与arduino i2c通信教程

本帖最后由 hm184092 于 2018-11-24 21:32 编辑

树莓派和arduino之间通讯有很多方法,这里讲解一下i2c通信

首先先打开树莓派的i2c功能,新安装的系统 i2c 默认是关闭的,打开就好了



系统默认已安装了i2c工具,如果没有就安装一下
sudo apt-get install i2c-tools

安装好之后来查看一下已连接树莓派的i2c地址
sudo i2cdetect -y 1

当然这里看不到任何地址,因为还没有连接任何i2c器件,接下来写一下代码


Wire.begin(8);这里的8是设定arduino的从机地址,这个地址随便设置,范围到255
程序下载到arduino之后,连接树莓派,这里使用的是uno,A4连接树莓派sda,A5连接scl,gnd接gnd,接好之后再来查看一下i2c地址


那个08就是arduino的i2c地址,这说明和树莓派连接成功

接下来写个例子,树莓派通过i2c发送随机数给arduino,ard收到后把这个数通过pwm来点亮led

python代码:
import smbus
import time
import random


bus = smbus.SMBus(1)

while 1:
    val=random.randint(0, 255)#产生随机数,范围0-255
    bus.write_byte(0x08, val)#向地址8发送数据
    time.sleep(0.5)            #延时0.5秒

arduino代码:
#include <Wire.h>

int a;

void setup() {
Wire.begin(8);               
Wire.onReceive(receiveEvent);
Serial.begin(9600);         
pinMode(11,OUTPUT);
}

void loop() {
delay(100);
}


void receiveEvent(int howMany)
{
while (Wire.available())
{
    a = Wire.read();
    analogWrite(11,a);
    Serial.println(a);      
}
}
对指令不懂的可以看下语法手册
没有问题后可以看到11号引脚的led灯忽亮忽暗的
页: [1]
查看完整版本: 树莓派与arduino i2c通信教程