## **數據圖表**
本例向你展示如何從Arduino或Genuino板發送一個字節(byte)的數據并且用圖表的方式顯示結果。板子和電腦使用串口連接(不管你是用USB連接電腦還是USB轉串口芯片,最終都是通過串口通信)。
你可以通過Arduino IDE來看到數據的圖表,或者也可以用Processing(下面附上了代碼),Flash, PD或Max/MSP等軟件查看。
### **所需硬件**
Arduino板Genuino板?
模擬信號傳感器(電位器,光電管, 壓力傳感器等均可)?
連接線
### **所需軟件**
Processing或Max/MSP 5.x
### **電路**
?
將電位器或者其他模擬信號傳感器連接到A0口。
### **原理圖**

### **代碼**
~~~
/*
數據圖表
Arduino板和電腦的簡單通信。
A0口的數據將被發送到串口。我們之所以說“串口”是因為通信用到的是串口協議(不管你是用USB、USB串口板等方式連接電腦,歸根到底用的都是串口)。數據將以字節為單位一個一個從板子發送到電腦。你可以用Arduino串口監視器來繪制串口圖表。使用Processing, PD, Max/MSP或其他軟件也可以。Processing代碼將會將串口數據繪圖,因此你可以真切的看到串口輸入的改變。
電路搭建:
連接到A0的模擬信號傳感器。
代碼是公開的。
*/
void setup() {
// 初始化串口:
Serial.begin(9600);
}
void loop() {
// 將值發送到A0:
Serial.println(analogRead(A0));
//等待一會確保數模轉換完成:
delay(2);
}
~~~
#### **Processing代碼**
Processing代碼將會根據板子發送的數據進行繪圖,隨著傳感器狀態的改變,你應該可以看到下列圖像:?

~~~
// 數據圖表
// 本例從9600波特率的串口讀取數據,然后根據數據進行繪圖。發過來的數據應為0-1023,然后換行。(或者回車)
// 代碼是公開的。
import processing.serial.*;
Serial myPort; // 串口
int xPos = 1; // 水平方向位置
float inByte = 0;
void setup () {
// 設置窗口大小:
size(400, 300);
// 列舉所有可用串口。
//(若用了2.1或之前版本,請用Serial.printArray())
println(Serial.list());
//由于我知道我的MAC上面第一個串口永遠是Arduino,因此我直接使用了0號串口。Serial.list()[0].
// 下面代碼參數應該根據你用的串口進行改變.
myPort = new Serial(this, Serial.list()[0], 9600);
// 直到獲取到換行符時,觸發serialEvent():
myPort.bufferUntil('\n');
// 設置背景色:
background(0);
}
void draw () {
// 畫線:
stroke(127, 34, 255);
line(xPos, height, xPos, height - inByte);
// 若到了屏幕邊緣,則從開始處繼續:
if (xPos >= width) {
xPos = 0;
background(0);
} else {
// 增加當前所在的水平位置:
xPos++;
}
}
void serialEvent (Serial myPort) {
// 獲取ASCII的字符串:
String inString = myPort.readStringUntil('\n');
if (inString != null) {
// 刪掉空格:
inString = trim(inString);
// 轉換成int類型,并且根據屏幕大小映射到合適位置:
inByte = float(inString);
println(inByte);
inByte = map(inByte, 0, 1023, 0, height);
}
}
~~~
#### **Max/MSP v5 補丁**
請復制下面這些代碼,并且粘貼到新建patch的串口。Max/MSP將會如以下圖片一樣顯示。?

~~~
----------begin_max5_patcher----------
1591.3oc0YszbaaCD9r7uBL5RalQUAO3CvdyS5zVenWZxs5NcfHgjPCIfJIT
RTxj+6AOHkoTDooroUs0AQPR73a+1cwtK3WtZxzEpOwqlB9YveAlL4KWMYh6
Q1GLo99ISKXeJMmU451zTUQAWpmNy+NM+SZ2y+sR1l02JuU9t0hJvFlNcMPy
dOuBv.U5Rgb0LPpRpYBooM3529latArTUVvzZdFPtsXAuDrrTU.f.sBffXxL
vGE50lIHkUVJXq3fRtdaoDvjYfbgjujaFJSCzq4.tLaN.bi1tJefWpqbO0uz
1IjIABoluxrJ1guxh2JfPO2B5zRNyBCLDFcqbwNvuv9fHCb8bvevyyEU2JKT
YhkBSWPAfq2TZ6YhqmuMUo0feUn+rYpY4YtY+cFw3lUJdCMYAapZqzwUHX8S
crjAd+SIOU6UBAwIygy.Q1+HAA1KH6EveWOFQlitUK92ehfal9kFhUxJ3tWc
sgpxadigWExbt1o7Ps5dk3yttivyg20W0VcSmg1G90qtx92rAZbH4ez.ruy1
nhmaDPidE07J+5n2sg6E6oKXxUSmc20o6E3SPRDbrkXnPGUYE.i5nCNB9TxQ
jG.G0kCTZtH88f07Rt0ZMMWUw8VvbKVAaTk6GyoraPdZff7rQTejBN54lgyv
HE0Ft7AvIvvgvIwO23jBdUkYOuSvIFSiNcjFhiSsUBwsUCh1AgfNSBAeNDBZ
DIDqY.f8.YjfjV1HAn9XDTxyNFYatVTkKx3kcK9GraZpI5jv7GOx+Z37Xh82
LSKHIDmDXaESoXRngIZQDKVkpxUkMCyXCQhcCK1z.G457gi3TzMz4RFD515F
G3bIQQwcP3SOF0zlkGhiCBQ1kOHHFFlXaEBQIQnCwv9QF1LxPZ.A4jR5cyQs
vbvHMJsLll01We+rE2LazX6zYmCraRrsPFwKg1ANBZFY.IAihr8Ox.aH0oAL
hB8nQVw0FSJiZeunOykbT6t3r.NP8.iL+bnwNiXuVMNJH9H9YCm89CFXPBER
bz422p8.O4dg6kRxdyjDqRwMIHTbT3QFLskxJ8tbmQK4tm0XGeZWF7wKKtYY
aTAF.XPNFaaQBinQMJ4QLF0aNHF0JtYuHSxoUZfZY6.UU2ejJTb8lQw8Fo5k
Rv6e2PI+fOM71o2ecY1VgTYdCSxxUqLokuYq9jYJi6lxPgD2NIPePLB0mwbG
YA9Rgxdiu1k5xiLlSU6JVnx6wzg3sYHwTesB8Z5D7RiGZpXyvDNJY.DQX3.H
hvmcUN4bP1yCkhpTle2P37jtBsKrLWcMScEmltOPv22ZfAqQAdKr9HzATQwZ
q18PrUGt6Tst2XMCRUfGuhXs6ccn23YloomMqcTiC5iMGPsHsHRWhWFlaenV
XcqwgCQiGGJzptyS2ZMODBz6fGza0bzmXBj7+DA94bvpR01MffAlueO7HwcI
pWCwmzJdvi9ILgflLAFmyXB6O7ML0YbD26lenmcGxjVsZUN+A6pUK7AtTrPg
M+eRYG0qD9j4I7eEbco8Xh6WcO.or9XDC6UCiewbXHkh6xm5LiPEkzpJDRTu
mEB44Fgz4NCtJvX.SM1vo2SlTCZGAe7GZu6ahdRyzFOhYZ+mbVVSYptBw.K1
tboIkatIA7c1cTKD1u.honLYV04VkluHsXe0szv9pQCE9Ro3jaVB1o15pz2X
zYoBvO5KXCAe0LCYJybE8ZODf4fV8t9qW0zYxq.YJfTosj1bv0xc.SaC0+AV
9V9L.KKyV3SyTcRtmzi6rO.O16USvts4B5xe9EymDvebK0eMfW6+NIsNlE2m
eqRyJ0utRq13+RjmqYKN1e.4d61jjdsauXe3.2p6jgi9hsNIv97CoyJ01xzl
c3ZhUCtSHx3UZgjoEJYqNY+hYs5zZQVFW19L3JDYaTlMLqAAt1G2yXlnFg9a
53L1FJVcv.cOX0dh7mCVGCLce7GFcQwDdH5Ta3nyAS0pQbHxegr+tGIZORgM
RnMj5vGl1Fs16drnk7Tf1XOLgv1n0d2iEsCxR.eQsNOZ4FGF7whofgfI3kES
1kCeOX5L2rifbdu0A9ae2X.V33B1Z+.Bj1FrP5iFrCYCG5EUWSG.hhunHJd.
HJ5hhnng3h9HPj4lud02.1bxGw.
-----------end_max5_patcher-----------
~~~
### **相關資料**
[serial()](https://www.arduino.cc/en/Reference/Serial)?
[analogRead()](https://www.arduino.cc/en/Reference/AnalogRead)?
- 說明
- 系統示例文件目錄結構及說明
- 01.Basics
- AnalogReadSerial
- BareMinimum
- Blink
- DigitalReadSerial
- Fade
- ReadAnalogVoltage
- 02.Digital
- BlinkWithoutDelay
- Button
- Debounce
- DigitalInputPullup
- StateChangeDetection
- toneKeyboard
- toneMelody
- toneMultiple
- tonePitchFollower
- 03.Analog
- AnalogInOutSerial
- AnalogInput
- AnalogWriteMega
- Calibration
- Fading
- Smoothing
- 04.Communication
- ASCIITable
- Dimmer
- Graph
- Midi
- MultiSerial
- PhysicalPixel
- ReadASCIIString
- SerialCallResponse
- SerialCallResponseASCII
- SerialEvent
- SerialPassthrough
- VirtualColorMixer
- 05.Control
- Arrays
- ForLoopIteration
- IfStatementConditional
- switchCase
- switchCase2
- WhileStatementConditional
- 06.Sensors
- ADXL3xx
- Knock
- Memsic2125
- Ping
- 07.Display
- barGraph
- RowColumnScanning
- 08.Strings
- CharacterAnalysis
- StringAdditionOperator
- StringAppendOperator
- StringCaseChanges
- StringCharacters
- StringComparisonOperators
- StringConstructors
- StringIndexOf
- StringLength
- StringLengthTrim
- StringReplace
- StringStartsWithEndsWith
- StringSubstring
- StringToInt
- 09.USB
- Keyboard
- KeyboardLogout
- KeyboardMessage
- KeyboardReprogram
- KeyboardSerial
- KeyboardAndMouseControl
- Mouse
- ButtonMouseControl
- JoystickMouseControl
- 10.StarterKit_BasicKit (與特定硬件相關,暫無)
- p02_SpaceshipInterface
- p03_LoveOMeter
- p04_ColorMixingLamp
- p05_ServoMoodIndicator
- p06_LightTheremin
- p07_Keyboard
- p08_DigitalHourglass
- p09_MotorizedPinwheel
- p10_Zoetrope
- p11_CrystalBall
- p12_KnockLock
- p13_TouchSensorLamp
- p14_TweakTheArduinoLogo
- p15_HackingButtons
- 11.ArduinoISP(暫無)
- ArduinoISP