openFrameworks와 Arduino를 연계
하기 서적을 참고로 했습니다.
최초의 openFrameworks - "크리에이티브 코딩"을위한 "C ++"용 프레임 워크! (I · O BOOKS)
이즈모토 유키 공학사 판매 순위 : 799,616
Amazon.co.jp에서 자세히 보기
# 위의 책은 엄격한 리뷰가 붙어 있으며, 책은 얇고 멋진 느낌도 없지만 원래 국내에 2 종류밖에 없는 oF 전문서 중 하나이며 Arduino, Wii 리모컨, Kinect 등 와의 디바이스와의 제휴 방법도 실려 있어, 참고가 되는 부분도 있으므로, 의외로 추천입니다.
Arduino 측면
회로를 짜다
택트 스위치의 한쪽을 GND에, 다른 한쪽을 디지털 핀의 2번에 꽂고 있습니다.
코드
Arduino의 코드는 이런 느낌입니다.
const int SW = 2;
void setup(){
// シリアル通信開始
Serial.begin(9600);
// ピンモード
pinMode(SW, INPUT_PULLUP);
}
void loop(){
// スイッチの値を読み取る
int value = digitalRead(2);
if (value != HIGH) {
Serial.println(1);
}
}
택트 스위치를 누르고있는 동안 "1"을 직렬 통신으로 보냅니다.
openFrameworks 측 구현
멤버 변수 추가
int nBytesRead = 0;
ofSerial serial;
char bytesReadString[4];
설정
void testApp::setup(){
ofBackground(255,255,255);
// シリアル通信開始
serial.setup("/dev/tty.usbmodem1411",9600);
}
시리얼 통신을 개시한다
ofSerial::setup
의 제1 인수에는 포트명을 지정할 필요가 있습니다만, 이 포트명은 Arduino의 IDE로부터,[도구] -> [시리얼 포트]
에서 확인할 수 있습니다. Arduino를 연결하는 포트 이름에 체크 표시가 있습니다.
통신 데이터 읽기 및 드로잉
void testApp::update(){
nBytesRead = 0;
int nRead = 0;
char bytesRead[3];
unsigned char bytesReturned[3];
memset(bytesReturned, 0, 3);
memset(bytesReadString, 0, 4);
// シリアル通信で受け取ったデータを読み込む
while ((nRead = serial.readBytes(bytesReturned, 3)) > 0) {
nBytesRead = nRead;
};
if (nBytesRead > 0) {
memcpy(bytesReadString, bytesReturned, 3);
string x = bytesReadString;
}
}
void testApp::draw(){
// 送られてきた文字列を表示
string msg;
msg += ofToString(nBytesRead) + " [bytes]" + "\n";
msg += "read: " + ofToString(bytesReadString);
ofSetColor(0);
ofDrawBitmapString(msg, 100, 100);
}
움직여 보자
Reference
이 문제에 관하여(openFrameworks와 Arduino를 연계), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/shu223/items/a3754f8015875c1cc4f2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)