我們在前一篇已經學會使用 I2C 建立 Arduino 間的通訊,接著再來做個簡單練習: 把 Blink 範例做個改良,讓兩台 Arduino 的 LED 可以交替閃爍。
接線
接線方法跟前一篇一樣,只不過這次在兩台 Arduino 的 pin 13 都加了一顆 LED。
老樣子,這兩台 Arduino 一台是 Master,一台是 Slave,其中 Slave 所用的 address 為 1。
程式
底下是 Master 的程式:
程式說明:
- Master 使用 Wire.begin() 加入 I2C bus
- 在 loop() 函式中,程式分成兩個步驟,第一個步驟是讓 Master 自己的 LED 閃爍一下,LED 開關的間隔時間預設是 400 ms;第二個步驟 Master 會要求 Slave,叫 Slave 讓自己 的 LED 也閃爍一下
- slaveLED() 函式則是負責透過 I2C 把資料送給 Slave,其中 value 變數裏的內容代表的是 LED 開關的狀態
底下是 Slave 的程式:
程式說明:
- Slave 一樣是使用 Wire.begin() 加入 I2C bus,但是必須傳入一個參數指定所用的 address
- 利用 Wire.onReceive(receiveEvent) 註冊事件,之後當 Master 送資料給 Slave 時,Arduino 就會自動呼叫 receiveEvent()
- 在 receiveEvent() 中,Slave 會從 I2C 讀取資料,然後根據收到的資料決定要開啟或是關閉 LED
示範影片
▲ 接上 Master 的 I2C 後,Master 和 Slave 上的 LED 開始交替閃爍
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。