
韌體 | 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。
樹莓派端程式碼:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 留言
不一定能即時回覆問題,有時間會盡量答覆。