2011年12月24日 星期六

mArduino - 多台 Arduino 透過 I2C 通訊

image

在寫前一篇的時候,我突然想到「I2C bus 上最多可以有 128 個設備,Arduino 也可以透過 I2C 串在一起,而一台 Arduino 只有 14 個 digital pins 和 6 個 analog pins」,既然如此,「何不利用多台 Arduino 來擴充 I/O 呢?」。

於是我寫了一個 mArduino Library,可以讓 Master 很方便的控制 Slave 的 I/O pins 達到用多台 Arduino 擴充 I/O 的目的。

下載 mArduino Library

請點底下的網址下載 mArduino:

https://github.com/coopermaa/mArduino

image

mArduino 提供了 Blink, Fade 和 AnalogReadSerial 等三個 Master 範例和 General_slave 一個 Slave 範例。

範例程式

General_slave 是一個通用的 Slave 程式:

除了要根據需要改 SLAVE_ADDRESS 外,基本上你不需要變動 General_slave 的程式。

Blink 是 Master 程式,它和標準 Blink 的不同點,在於它控制的不是 Master 自己的 LED,而是 slave 的 LED:

Fade 也是 Master 程式,它和標準 Fade 的不同點,在於它控制的也不是 Master 自己的 LED,而是 slave 的 LED:

AnalogReadSerial 也是 Master 程式,它讀取的不是自己 analog pin 的狀態,而是 slave 的 A0 類比腳位的狀態:

使用 mArduino 你很容易就可以控制 I2C bus 上其它 Arduino 的 I/O 腳位,所以就不需要像 74HC595 這類移位暫存來擴充腳位了。

參考資料

8 則留言:

  1. 都忘記還有I2C可以用了,之前做的三合一應該二合一就夠用了XD

    回覆刪除
  2. Thx,
    三合一? 你用到三台 Arduino? 什麼情況要用到這麼多台?

    回覆刪除
  3. 就暑假弄的弱弱的六足XD控制十八個Servo外加RF還有一些地方留給Sensor,其實我發現那顆NT80的馬達輸出根本沒有到理想的1.6kg/cm連1.2kg/cm都沒有,而且腳太長力矩太大整個就很軟弱XD接下來打算用MG99G這顆來作雙足W

    回覆刪除
  4. GCY 你太猛了,我到現在都還踏不進機器人的領域。
    不過,我對通訊倒是挺有興趣的。
    請問一下,你那六足是用什麼 RF ?

    回覆刪除
  5. 我是用315MHz的RF比如TG-11,用RXD、TXD連接到RF傳輸資料,可以參考外國人的lib改寫自己要的:D

    回覆刪除
  6. 看到你寫的這篇 RF 使用心得了: http://gcyrobot.blogspot.com/2011/07/arduino-rf.html

    TG-11 這顆露天上賣 230 元,一對就要 460 元,也是不便宜耶。

    回覆刪除
  7. 不一定要TG-11我忘記我是買哪個但是315MHz的RF都可以,只要有TXD、RXD輸出入都可以,我傳輸跟接收總共買NT:210。

    這個接收加上輸出一共230漲20元XD

    http://goods.ruten.com.tw/item/show?21009309882282

    回覆刪除

注意:只有此網誌的成員可以留言。