2009-09-17

Mindsensors MagicWand 組裝測試 (II)



MagicWand是在Extreme NXT書中使用PCF8574實作NXT I 2C通訊的一個實驗專題, 而本書即是以這個專題作為封面, 而當初也因為被封面上的作品所吸引所以才買了這本書.




 



一般人如果想要參考書中的方式自行製作, 就必須自備所需的零件以及切割合適的萬用電路板, 這對於平常很少接觸電子實作的人還是有相當的門檻, 而最近Mindsensors即為它設計出專屬的電路板並附上所需的電子零件, 包裝成為Experimental kits, 提供有興趣的人只要自行完成焊接工作後很容易的就可以使用LEGO零件組合成為所需的機構.


當然, 零件的焊接工作也是一門功夫, 不過即使個人也從沒有實際焊接的經驗, 但還是可以從網路上尋找到很多的教學資源, 這裡有一個不錯的網站 THE ELECTRONICS CLUB 有各種電子學的相關資料, 加到我的最愛方便以後可以隨時參考, 同時網站大部分的內容也都有提供檔案下載的功能.


至於焊接工作的注意事項不外是注意安全、保持通風然後留意零件在電路板上的焊接位置與極性(正負極腳位), 這些在Mindsensors網站都有參考資料與User Guide可以下載.


 


NXT的操作方式則是利用I 2C 通訊控制連接於PCF8574 8I/O PinsLED的開關狀態, 這個KitI 2C 裝置位址為: 0x70, 使用LowspeedWrite寫入的Byte中每個bit即對應到控制8LED的開關, 比較特別的是 low bit(0)才是LED ON. 而你也可以同時寫入多個Byte到裝置中, 它會依序按照每個Bytebit setting/關對應的LED, 惟須注意以下兩點:


        I 2C buffer最後一個byte必須為0.


        I 2C buffer的長度限制為16, 扣除最後value 0byte, 所以最多可以傳送15 bytespattern.


 


Pattern的組合方式可以參考NXC程式, 先舉兩個做說明(為了編輯Pattern時能比較清楚, 所以先以High bit代表LED ON, 等到要做I 2C Write前再Invert回來):




  • 組合成 L Pattern: byte L_[] = {0xff, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0};

100000000


100000000


100000000


100000000


100000000


100000000


100000000


100000000


111111111




  • 組合成 E Pattern: byte E_[] = {0xff, 0x89, 0x89, 0x89, 0x89, 0x81, 0x81, 0};

1111111


1000000


1000000


1111100


1000000


1000000


1000000


1111111


 


而在以下的範例程式中, 在使用I 2C Writebuffer資料寫入裝置前, 有一段程式碼在做 High/Low bit invert就是前面曾提到的部份.


void DispLetter (const byte & letter[])


{


  int nbytes;


  // Wait for the end of previously sent data


  while(I2CStatus(I2Cport, nbytes)==STAT_COMM_PENDING);


  // Write buffer to send to PCF8574


  byte WriteBuf[];


  ArrayBuild(WriteBuf, I2CAddr8574, letter);


  for(int i=1; i

  {


     WriteBuf[i] ^= 0xff;


  }


  I2CWrite(I2Cport, 0,  WriteBuf);


}



 


2009-09-13

Mindsensors MagicWand kit 組裝測試



前不久在 Mindsensors 的 Coming Soon 中發現了這個有趣的新玩意, 原來是 Extreme NXT 書中作為 I2C的實驗專題, 現在 Mindsensors 開發出專屬的電路板並附上需要的電子零件做成kits, 讓有興趣的人自行焊完零件後就可以玩了.
由於自己手上有一本Extreme NXT, 最初看到時也覺得很有趣, 所以當下就寫email向 Mr. Deepak 表達要參加測試, 很快一週後就收到了, 不過有點不安的是自己從來沒有使用烙鐵的經驗, 只好一邊參考Extreme NXT附錄的Soldering guide以及網路上的資源, 同時也到光華買齊所需的工具, 然後利用一個週末的下午就動手焊接每一個零件, 當好不容易把最難的 Resistor array' IC 座以及 NXT 插座都焊好後, 在焊剩下比較容易的 LED 時, 可能太得意忘形居然沒留意LED應該焊在電路板的另一側,結果第一個LED就焊錯了, 當時沒有吸錫的工具, 所以只好焊完剩下的 7 個 LED.


也因此就成為 這個 7 LED 的 Magic Wand 版本, 先放上最後的成果照片, 後續有空再補實作的細節

.