在寫前一篇的時候,我突然想到「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:
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 這類移位暫存來擴充腳位了。
good!
回覆刪除都忘記還有I2C可以用了,之前做的三合一應該二合一就夠用了XD
回覆刪除Thx,
回覆刪除三合一? 你用到三台 Arduino? 什麼情況要用到這麼多台?
就暑假弄的弱弱的六足XD控制十八個Servo外加RF還有一些地方留給Sensor,其實我發現那顆NT80的馬達輸出根本沒有到理想的1.6kg/cm連1.2kg/cm都沒有,而且腳太長力矩太大整個就很軟弱XD接下來打算用MG99G這顆來作雙足W
回覆刪除GCY 你太猛了,我到現在都還踏不進機器人的領域。
回覆刪除不過,我對通訊倒是挺有興趣的。
請問一下,你那六足是用什麼 RF ?
我是用315MHz的RF比如TG-11,用RXD、TXD連接到RF傳輸資料,可以參考外國人的lib改寫自己要的:D
回覆刪除看到你寫的這篇 RF 使用心得了: http://gcyrobot.blogspot.com/2011/07/arduino-rf.html
回覆刪除TG-11 這顆露天上賣 230 元,一對就要 460 元,也是不便宜耶。
不一定要TG-11我忘記我是買哪個但是315MHz的RF都可以,只要有TXD、RXD輸出入都可以,我傳輸跟接收總共買NT:210。
回覆刪除這個接收加上輸出一共230漲20元XD
http://goods.ruten.com.tw/item/show?21009309882282