NXT RJ12 Ports
由NXShield正面的配置方式,左右各有一組四個Ports的NXT RJ12接口,右邊為BANK-A(I2C
address:0x06),左邊為BANK-B(I2C address:0x08)。
NXShield所使用的Arduino腳位(IO Pins)
為了讓4個Sensor Ports都可以連接I2C數位裝置,Mindsensors在NXShield的程式庫實作了SoftI2cMaster的功能,以突破Arduino只能有一個Hardware I2C界面的限制,因此UNO版共使用了A0,A1,A2,A4,A5,D2,D4,D7這些Pin以及Hardware Timer 2 (D3,D11),詳細在NXShield Advanced Development Guide中有說明或直接參考API中的常數定義檔(SHDefines.h)。
NXShield的程式開發
Mindsensors替NXShield發展了功能相當齊全的程式庫:NXShield_AVR,以及整理完善的說明文件與範例程式,這些也都包含在下載的程式庫檔案中,事實上這個版本的API也就是以原來的NXTI2CDevice Library為基礎所發展出來,以下為Class的架構圖:
以後如果想要自行擴充標準API的功能或製作新的Device Class,都可以運用以這個程式庫的功能為基礎來開發,比較能事半功倍,因為到底NXShield還算是一個有相當複雜程度的裝置。
結論摘要
Arduino的系統資源比起NXT可以說是差了一大截,不過NXShield卻幾乎移植了NXT主要的 IO裝置功能到Arduino來,而且尚有餘裕的空間可以再擴充NXT所缺的功能,例如TCP/IP的網路通訊。
我想最主要的原因有兩個,首先,NXShield本身無論在Motor Control或類比式感應器等這些處理功能的齊全,分擔了Arduino相當多的工作,事實上,一個NXShield相當於結合兩個NXTMMX再加上許多額外的功能。
其次,API程式庫的功能規劃的相當完善且很容易上手使用,這是個人覺得最值得讚賞的部份。
等到收到產品之後,接下來要測試的重點會是:
(1)有沒有可能成為NXT的有力助手。
(2)附加其他擴充版的應用。
沒有問題, 也歡迎一起研究與分享心得
我自己也訂了兩片, 所以已經有了, 感謝您的好意 : )