韌體 | I2C通訊:樹莓派控制多個Arduino---使用Python


韌體 | I2C通訊:樹莓派控制多個Arduino---使用Python


繼上一篇<韌體 | I2C通訊:樹莓派與Arduino---使用Python>能夠使用樹莓派透過I2C控制單個Arduino開發板後,要從單個控制多個也就容易多了,只需要設定好每個裝置的I2C位址即可進行多個I2C裝置通訊。


硬體配置

樹莓派環境

作業系統:Raspbian
硬體:樹莓派3B

Arduino環境

硬體:Mega 2560開發板、UNO開發板


線路配置圖

當然I2C線上的裝置可以控制到128個,黑修斯只有使用兩個Arduino實驗。


程式碼

Arduino端程式碼:

Arduino端程式碼與上一篇<韌體 | I2C通訊:樹莓派與Arduino---使用Python>的一樣,只有更改前置處理器I2C的位址,一個Arduino開發板位址設為0x04,另一個位址設為0x05。


樹莓派端程式碼:


import smbus
import time
bus = smbus.SMBus(1)
def writeNumber(address, value):
bus.write_byte(address, value)
return -1
def readNumber(address):
number = bus.read_byte(address)
return number
while True:
address = input('請輸入位址: ')
var = input('Enter 1 – 9: ')
writeNumber(int(address),int(var))
print ('RPI: Hi Arduino, I sent you ', var)
# 等待1秒
time.sleep(1)
number = readNumber(int(address))
print ('Arduino: Hey RPI, I received a digit ', number)


進行通訊測試

最後,透過樹莓派與I2C位址0x04、0x05的Arduino開發板溝通。


本篇程式放置的GitHub連結

轉貼本文時,需註明來自黑修斯的隨手札記原創作者 hughes chen(黑修斯),及附上原文連結,同時 禁止修改,禁止商業使用 。

張貼留言

0 留言