| 作者/攝影 | 許鈺莨 |
| 時間 |
0.5小時 |
| 難度 |
★☆☆☆☆ |
| 材料表 | ADXL345………………. 一片
LinkIt7697……………… 一片
|
Processing最大的優勢是在於這是可以透過程式碼產生平面或者立體的圖形化互動介面,最常拿來設計成體感遊戲,而本文會使用LinkIt7697來擷取ADXL345 三軸加速度計的角度變化數值,最後透過Processing使讀者可以感受到由數值轉換成3D的視覺化效果。
ADXL345 三軸加速度計(以下簡稱ADXL345)可以透過重力加速度用來偵測物體的傾斜角度,本文結合LinkIt7697,並將其數值擷取出來,本文將分成三個步驟說明:
1、ADXL345 與LinkIt7697接線圖
2、LinkIt7697程式說明
3、Processing程式說明
1、ADXL345與LinkIt7697接線圖
ADXL345 和 LinkIt7697溝通為I²C,需接四條線至LinkIt7697 NANO擴充板,接線圖如下:

| ADXL345 | LinkIt7697 NANO擴充板 |
| SDA | SDA |
| SCL | SCL |
| VCC | 5V |
| GND | G |
2、LinkIt7697程式說明
LinkIt7697的程式是透過BlocklyDuino 撰寫,需要下載BlocklyDuino,而使用BlocklyDuino是因為可以快速利用積木拼出程式碼,而BlocklyDuino裡面已含有ADXL345 的函示庫,所以可直接拼出ADXL345的積木進而讀取數值。
ADXL345積木可以從左方欄位的【感測模組】→【動態感測】可以找到。

從程式中可以可以看出BlocklyDuino已經把ADXL345的函式庫包在積木裡面,所以可以從積木中直接找出我們需要的『翻滾』和『俯仰』角度,而LinkIt7697跟Processing溝通則是靠序列埠傳輸。
3、Processing程式說明
再來是Processing程式撰寫,程式是引用至下列網站修改-連結
[pastacode lang=”python” manual=”import%20processing.serial.*%3B%0ASerial%20myPort%3B%0A%0AString%20data%3D%22%22%3B%0Afloat%20roll%2C%20pitch%3B%0A%0Avoid%20setup()%20%7B%0A%20%20size%20(960%2C%20640%2C%20P3D)%3B%20%2F%2F%E5%9F%B7%E8%A1%8C%E7%9A%84%E8%A6%96%E7%AA%97%E5%A4%A7%E5%B0%8F%EF%BC%8C%E5%8F%8A%E9%A1%AF%E7%A4%BA3D%E5%9C%96%E7%A4%BA%0A%0A%20%20myPort%20%3D%20new%20Serial(this%2C%20%22COM3%22%2C%209600)%3B%20%20%2F%2F%E7%94%B1%E5%BA%8F%E5%88%97%E5%9F%A0COM3%E6%BA%9D%E9%80%9A%0A%0A%20%20myPort.bufferUntil(‘%5Cn’)%3B%0A%7D%0A%0Avoid%20draw()%20%7B%0A%20%20translate(width%2F2%2C%20height%2F2%2C%200)%3B%20%2F%2F%E7%95%AB%E9%9D%A2%E4%BD%8D%E7%BD%AE%E7%BD%AE%E4%B8%AD%EF%BC%8C%E5%92%8C%E7%B8%AE%E6%94%BE%E6%AF%94%E4%BE%8B%0A%20%20background(150)%3B%20%2F%2F%E8%83%8C%E6%99%AF%E9%A1%8F%E8%89%B2%0A%20%20textSize(22)%3B%20%2F%2F%E8%83%8C%E6%99%AF%E6%96%87%E5%AD%97%E7%9A%84%E5%A4%A7%E5%B0%8F%0A%20%20text(%22Roll%3A%20%22%20%2B%20int(roll)%20%2B%20%22%20%20%20%20%20Pitch%3A%20%22%20%2B%20int(pitch)%2C%20-100%2C%20265)%3B%20%20%2F%2F%E8%83%8C%E6%99%AF%E6%96%87%E5%AD%97%E7%9A%84%E4%BD%8D%E7%BD%AE%0A%0A%20%0A%20%20rotateX(radians(pitch))%3B%20%2F%2F%20%E8%A8%88%E7%AE%97ADXL345%E7%9A%84%E4%BF%AF%E4%BB%B0%E8%A7%92%E5%BA%A6%0A%20%20rotateZ(radians(-roll))%3B%20%20%2F%2F%20%E8%A8%88%E7%AE%97ADXL345%E7%9A%84%E7%BF%BB%E6%BB%BE%E8%A7%92%E5%BA%A6%0A%20%20%0A%20%20fill(roll%2Bpitch%2C%20roll*50%2C%20pitch*200)%3B%20%2F%2F%E8%A8%AD%E5%AE%9A3D%20%E7%89%A9%E4%BB%B6%E9%A1%8F%E8%89%B2%EF%BC%8C%E9%9A%A8%E8%91%97%E7%BF%BB%E8%BD%89%E8%80%8C%E6%9C%89%E4%B8%8D%E5%90%8C%E7%9A%84%E9%A1%8F%E8%89%B2%E8%AE%8A%E5%8C%96%0A%20%20box%20(400%2C%2040%2C%20200)%3B%20%20%20%2F%2F%20%E8%A8%AD%E5%AE%9A3D%20%E7%89%A9%E4%BB%B6%E7%9A%84%E5%B0%BA%E5%AF%B8%0A%20%20textSize(25)%3B%20%2F%2F3D%20%E7%89%A9%E4%BB%B6%E5%AD%97%E7%9A%84%E5%A4%A7%E5%B0%8F%0A%20%20fill(255%2C%20255%2C%20255)%3B%20%2F%2F3D%20%E7%89%A9%E4%BB%B6%E5%AD%97%E7%9A%84%E9%A1%8F%E8%89%B2%0A%20%20text(%22blog.cavedu.com%22%2C%20-110%2C%2010%2C%20101)%3B%20%2F%2F%E8%A6%81%E5%9C%A83D%20%E7%89%A9%E4%BB%B6%E4%B8%8A%E8%A6%81%E9%A1%AF%E7%A4%BA%E7%9A%84%E6%96%87%E5%AD%97%EF%BC%8C%E4%BB%A5%E5%8F%8A%E4%BD%8D%E7%BD%AE%0A%7D%0A%0Avoid%20serialEvent%20(Serial%20myPort)%20%7B%20%20%2F%2F%20%E5%BE%9E%E5%BA%8F%E5%88%97%E5%9F%A0%E8%AE%80%E5%8F%96%E6%95%B8%E6%93%9A%0A%0A%20%20data%20%3D%20myPort.readStringUntil(‘%5Cn’)%3B%0A%0A%20%20if%20(data%20!%3D%20null)%20%7B%0A%20%20%20%20data%20%3D%20trim(data)%3B%0A%20%20%0A%20%20%20%20String%20items%5B%5D%20%3D%20split(data%2C%20’%2F’)%3B%20%20%20%2F%2F%20%E5%88%A9%E7%94%A8%22%2F%22%20%E4%BE%86%E5%88%86%E9%9A%94data%EF%BC%8C%E5%BE%97%E5%88%B0%E5%85%A9%E7%A8%AE%E6%95%B8%E5%80%BC%EF%BC%8C%E5%86%8D%E6%94%BE%E5%85%A5items%E5%AD%97%E4%B8%B2%E4%B8%AD%20%20%0A%20%20%20%20if%20(items.length%20%3E%201)%20%7B%0A%0A%20%20%20%20%2F%2F%20%E5%BE%97%E5%88%B0%E6%BB%BE%E5%8B%95%E5%92%8C%E4%BF%AF%E4%BB%B0%E8%A7%92%E5%BA%A6%0A%20%20%20%20%20%20roll%20%3D%20float(items%5B0%5D)%3B%0A%20%20%20%20%20%20pitch%20%3D%20float(items%5B1%5D)%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A” message=”” highlight=”” provider=”manual”/]最後執行,將手晃動ADXL345,3D物件會依照傾斜角度不同,在3D物件中也會隨著翻轉產生不同的顏色變化。
- 【教學】Processing互動專題:結合 LinkIt 7697
https://blog.cavedu.com/2020/04/01/processing-linkit-7697/




