【圖形化學習 Arduino】(五)串口調試四神器
Processing
- 易用度:☆☆☆
- 通用性:
- 可視度:
Processing 是一門數據可視化的編程語言,與 Arduino 頗有淵源。Arduino 的 IDE 就是基於 Processing 的開源 IDE 改寫而成的,二者風格類似(都很難用←_←)。Arduino 語言是基於 C++,而 Processing 語言是基於 Java 的。
Arduino 運行於單片機上,Processingn運行於 PC,二者通過串口通信,Processing 就可以將nArduino 中的某些數據以圖形化的方式顯示出來。以陀螺儀+加速度計模塊 MPU6050 為例,Processingn將陀螺儀的姿態以直觀的方式顯示,便於調試。
其中 Arduino 代碼只是讀取陀螺儀數據並通過串口轉發到 Processing:
#include "MeOrion.h"n#include <Wire.h>nnMeGyro gyro;ndouble x, y, z;nnvoid setup()n{n Serial.begin(9600);n gyro.begin();n}nnvoid loop()n{n gyro.update();nn x = gyro.getAngleX();n Serial.print("x=");n Serial.print(x);n y = gyro.getAngleY();n Serial.print(" y=");n Serial.print(y);n z = gyro.getAngleZ();n Serial.print(" z=");n Serial.println(z);n delay(100);n}nnvoid sendData(char *startAddr, int length)n{n for (int i = 0; i < length; ++i)n {n Serial.write(startAddr[length]);n }n}n
而 Processing 中讀取數據,並顯示為 3D 圖形:
import processing.serial.*;nnSerial myPort;nnfloat x = 0;nfloat y = 0;nfloat z = 0;nnvoid setup()n{n size(700, 700, P3D);n noFill();n n myPort = new Serial(this, Serial.list()[0], 9600);n myPort.bufferUntil(n);n}nnvoid draw()n{n background(0);n translate(width / 2, height / 2, -width / 2);n rotateX(x / 180 * PI);n rotateY(y / 180 * PI);n rotateZ(z / 180 * PI);n stroke(200);n box(8*4, 24*4, 180*4);n}nn// Listen to the event. When buffer filled, run this method.nvoid serialEvent(Serial p)n{n String inString = p.readString();n String[] strArray = inString.split(" ");n for (int i = 0; i < strArray.length; ++i)n {n strArray[i] = strArray[i].substring(2);n //print(strArray[i]);n }n x = Float.parseFloat(strArray[0]);n y = Float.parseFloat(strArray[1]);n z = Float.parseFloat(strArray[2]);n n println("x = " + x + ", y = " + y + ", z = " + z);n}n
二者的總代碼量不超過 80 行,卻實現了 3D 顯示陀螺儀狀態的功能。
點擊鏈接查看動圖:
用 Processing 調試的優勢在於顯示效果好,可以 3D 顯示,甚至添加材質、光線等渲染效果,也可以通過插件導入 3D 模型進行增強顯示。劣勢在於需要編寫兩部分的代碼,一部分是 Arduino 代碼,另一部分是 Processing 的顯示代碼。
SerialChart
- 易用度:☆☆
- 通用性:☆☆
- 可視度:☆
SerialChart 是一個串口調試軟體,可以將串口接收到的數據以曲線圖表的形式顯示出來。在調試 PID 參數、監視感測器狀態等場合下,具有相當的實用性。可以通過簡單地編輯配置文件來修改軟體參數,如顯示範圍、柵格大小、曲線顏色等。SerialChart 只能識別類似 *.csv 格式的數據包,即只使用英文半形逗號、空格、回車這三種符號分割的數據。
舉個例子,將一個溫濕度感測器接到 Makeblock Orion 上,並燒錄以下代碼:
#include "MeOrion.h"nnMeHumiture humiture(PORT_3);nnvoid setup()n{n Serial.begin(9600);n}nnvoid loop()n{n humiture.update();n Serial.print(humiture.getHumidity());n Serial.print(",");n Serial.println(humiture.getTemperature());n delay(300);n}n
配置 SerialChart 後,就可以在軟體中實時監測感測器的狀態了。
點擊鏈接查看動圖:
mBlock
- 易用度:☆
- 通用性:☆☆
- 可視度:☆
mBlock 是 Makeblock 團隊基於 MIT Media Lab 的作品 Scratch 製作的一個圖形化編程工具,與 Scratch 的區別在於:mBlock 完美兼容 Arduino 硬體,並且可以根據圖形化程序實時生成 Arduino 代碼。
mBlock 用於調試 Arduino 時,優勢在於,可以便捷地編輯所要調試的各個模塊,無需反覆燒錄程序,而且可以使用鍵盤和滑鼠與 Arduino 硬體進行交互,對於初期的模塊化調試來說十分方便。
例如,以下「程序」可以使用鍵盤來控制電機的轉動,用來測試電機的功能。
測試過程: 使用 mBlock 測試電機運轉—在線播放—優酷網,視頻高清在線觀看 http://v.youku.com/v_show/id_XMTM3MjMxOTM0OA==.html串口顯示屏
- 易用度:☆☆
- 通用性:
- 可視度:☆
在 從未見過有如此易用的串口彩屏 一文中,筆者曾介紹過一款串口顯示屏,可以通過簡單的串口指令顯示文字和圖形。類似功能的顯示屏都可以作為實時顯示的調試工具。
這個視頻展示了一個用顯示屏實時顯示溫度感測器數據的案例:
超級易用的 TFT 彩屏—在線播放—優酷網,視頻高清在線觀看 http://v.youku.com/v_show/id_XMTMzMzE5OTgzMg==.html推薦閱讀:
※電氣小混混的環境盒子——持續更新
※當樂高遇見Arduino:樂高喊你吃飯啦~
※Arduino可通過哪些方式把數據發送到互聯網
※Openlab Taipei的TaiwanDuino
TAG:Arduino |