树莓派与Arduino通过IIC传递字符串

1,树莓派配置成IIC主机,请参阅有关资料

 

2,编写并上传Arduino发送信息的程序  

 

#include <Wire.h>
#define SLAVE_ADDRESS 0x05    //此处为IIC终端机的编号,因为IIC是可以连多个从机的,用编号区分

String msg = "";

void sendData() {
  Wire.write(msg.c_str()); 
}

void setup() {
  Wire.begin(SLAVE_ADDRESS);//为IIC终端绑定编号,主机是用这个号来识别此机器的
  Wire.onRequest(sendData);     //绑定接受事件,似乎是主机只要读,它就会执行
}
void loop() {
  msg = "noTruck";
  delay(1000);

   msg = "pm10=200";
  delay(1000);

   msg = "pm100=300";
  delay(1000);
}

 

 

3.编写树莓派主机端程序

 

import smbus    #python 的IIC库

 

import time

 

bus = smbus.SMBus(1)

 

address = 0x05

 

def readString():

 

     bytes = bus.read_i2c_block_data(address,0,20)  #从IIC设备读20个byte, 如果对方没有那么多数据,用255补齐

 

     s= ''

 

      for i in range(20):        #转换为字符川

 

          if bytes[i] == 255 :

 

                break

 

          s = s + chr(bytes[i])

 

      return s

 

 

 

while True:

 

    var = input('input 1 - 9')

 

    str = readString()

 

    print "receive string:", str

 

    print

 

    time.sleep(1)

 

 

 

4, 树莓派与Arduino的连接

 

      RPI               Arduino (Uno/Duemillanove)

 

 -------------------------------------------- 

 

GPIO 0 (SDA) <--> Pin 4 (SDA)

 

 GPIO 1 (SCL) <--> Pin 5 (SCL) 

3.3V <----------------->3.3v

Ground       <--> Ground

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值