공부를 하다가 배운것을 잊어먹지 않기 위해서 여기에 정리를 한다.
아두이노에서 나오는 데이터를 컴퓨터에 저장해야 할 일이 생겼는데,
아두이노 IDE자체에서는 txt파일 등으로 만들어 내는 기능이 없는 것 같다.
애플 홈페이지에서 Xcode의 IOKitLib 으로 시리얼 통신하는 것을 공부하고 있는데,
다른 방법으로는 "Processing" 이라는 IDE를 이용하여서 아두이노랑 시리얼 통신을 하는 방법이 있다고 해서 적용 하여 봤다.
아래가 그 스케치들인데 프로세싱과 아두이노는 IDE가 비슷한 형태를 가지고 있다.
그림1. 스케치 예
아두이노에서는,
1
2
3
4
5
6
7
8
9
10
|
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("Hello, world!");
delay(100);
}
|
cs |
Serial.println("Hello, world!"); 를 0.1초 간격으로 보낸다.
프로세싱에서는,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import processing.serial.*;
Serial SerialPort;
PrintWriter output;
void setup() {
String portName = Serial.list()[0]; // 번호를 변경해 주면서 포트번호를 찾아준다
SerialPort = new Serial( this, portName, 9600 ); // 아두이노의 보레이트에 맞춘다
output = createWriter( "/Users/유저명/Desktop/processing/data.txt" ); // 파일이 저장되는 곳을 설정한다
}
void draw()
{
// 시리얼 포트의 데이터 확인
if (SerialPort.available() > 0 ) {
String value = SerialPort.readString();
if ( value != null ) {
//Save data
output.println( value );
}
}
}
void keyPressed() {
// 텍스트 파일을 완성시키기
output.flush(); // Writes the remaining data to the file
output.close(); // Finishes the file
exit(); // Stops the program
}
|
cs |
1. import processing.serial.*; 로 라이브러리를 불러낸다.
2. String portName = Serial.list()[0]; 로 시리얼 포트를 설정해야 하는데, 각자의 컴퓨터에 있는 포트번호가 다르기 때문에, 번호를 변경하면서 시리얼 포트를 찾아준다.
3. SerialPort = new Serial( this, portName, 9600 );로 시리얼 포트 설정을 맞춘다. 아두이노에서의 보레이트를 9600으로 설정하였으므로, 여기서도 9600으로 맞춘다.
4. output = createWriter( "/Users/'유저명'/Desktop/processing/data.txt" );으로 새 파일을 만들기 위해서 폴더 설정을 해 준다. 여기서는 데스크탑에 processing 이라는 폴더 내부에 저장을 한다.
5. output.println( value ); 으로 값을 저장한다.
6. output.flush();와 output.close(); 으로 끝을 내 주어야 데이터가 텍스트 파일 내부에 저장이 된다. 저장된 파일은, 아래와 같이 소스에서 설정 해 둔 폴더내부에 있다.
그림2. 폴더 내부
이걸 확장시키면, 이것저것 써 먹을 수 있을 것 같다.
인터넷에서 프로세싱 소스를 참고를 한 곳을, 아래의 참고문헌에 링크를 남긴다.
[참고문헌]
https://processing.org/reference/libraries/serial/Serial.html
https://stackoverflow.com/questions/40480737/how-to-write-data-to-a-text-file-on-arduino