Processing3에서 Arduino 시리얼에서 값을 읽고 싶습니다.
7798 단어 Arduinoprocessing3Teensy
할 일
Arduino 시스템 (특히 Teensy3.2)에서 읽은 시리얼 값을 Processing3에 전달하여 화면에 그려지는 도형을 변경합니다. 그뿐입니다.
이번에는 거리 센서 2Y0A21을 사용합니다 (아날로그 출력이라면 센서는 무엇이든 좋습니다.)
가능한 한 최소한의 요소로 하여, 성공하기 쉽게 하고 있습니다.
준비물·실시 환경
연결
-센서의 전원선을 필요전압에 따라 Arduino계의 5v(or3V), GND에 접속.
- 센서의 아날로그 출력선을 Arduino 계열의 A0 핀에 연결.
프로그램
Arduino 계측의 스케치
Arduino 시스템
int sensorPin = 0; //analog入力に使うセンサ用のピン番号。0ならA0ピン
int val; //センサの値
void setup(){
Serial.begin(9600); //シリアルを9600bpsで開始
}
void loop(){
//センサのアナログ値(0~1024を読み取って0-255の1バイトに変換)
val = map(analogRead(sensorPin),0,1023,0,255);
Serial.write(val);//1バイト(0-255)にしたセンサ値をシリアル送信
delay(10); //0.01秒止める
}
Arduino에 씁니다. Arduino의 SDK는 여기에서 닫힐 수 있습니다.
일단 Processing3에서 시리얼 포트 확인
Processing3을 열고 아래 스크립트를 실행합니다.
Processing3
import processing.serial.*;
Serial myPort;
printArray(Serial.list());
그러면 Processing3의 스크립트 화면 하단에 시리얼 통신 콘솔 화면이 나타나 다음과 같은 결과가 표시됩니다. (콘솔 화면이 나오지 않으면 화면 오른쪽 하단의 삼각형을 누르면 나옵니다.)
결과 예>
[0]/dev/cu. Honyara/Honyara
[1]/dev/tty. Honyara/Honyara
[2]/dev/호냐라라/호냐라라
여기서 Arduino 계에서 사용하고 있는 시리얼 포트와 같은 것의 번호를 조사해 둡니다.
Arduino에서 사용중인 포트는 ArduinoSDK의 메뉴에서 "도구"→ "시리얼 포트"
Proessing3 측면 스케치
Processing3
import processing.serial.*; // シリアルライブラリをインポート
Serial myPort; //シリアルポートのインスタンス
int available_serialport = 2; // シリアル検索プログラムで調べたシリアルポートの番号に変更
String arduinoPort = Serial.list()[available_serialport]; //
int x; //シリアルから読み取った値を入れる
void setup(){
size(300, 300); // キャンバスサイズ
myPort = new Serial(this, arduinoPort, 9600); // シリアルポートの設定
}
void draw(){
background(251,252,239); //背景色をやわらかい色に
noFill(); //図形をぬりつぶさない
stroke(153,0,0) ;//線を赤っぽく
strokeWeight(3);//線をちょっと太く
ellipse(width/2,height/2,x,x); //キャンバスの中心に円を描画。サイズはシリアルの値(0-255)
}
void serialEvent(Serial p){
x = p.read(); //xにシリアルの値を入れる
println(x); //processingのシリアルモニタに数値を表示
}
실행
Processing을 실행합니다.
센서가 연결되어 있으면 센서에서 나오는 아날로그 전압에 따라 화면의 원이 깨지거나 작아지거나 합니다.
(↑실행예)
트러블 슛
작동하지 않는 경우 문제가 먼저 프로그램 쪽인지 센서 쪽인지를 확인합니다.
A0을 Arduino의 GND에 접속하여 아날로그 입력의 전압을 0으로 해 보거나, 마찬가지로 3.3v(경우에 따라 5v)에 접속하여 전압을 최대로 한 경우에 Processing3측의 도형에 반영되는지 조사 합니다. (GDN에 연결한 경우에는 원은 점에, 3.3or5V에 접속한 경우에는 원의 크기가 최대가 됩니다.)
이 표시가 잘되면 문제는 센서 측입니다.
Teensyduino라면 시리얼 포트의 사정에서 잘못될지도 모른다고 우려했지만, 이 간단한 프로그램의 경우에는 무사히 움직였습니다. I2C의 데이터 등 조금 긴 데이터도 시도해 보겠습니다.
다음 번 기사
htps : // 이 m / 니나가와 _ 이즈미 /
6축 센서(MPU6050/GY-521)의 값을 Arduino계에서 읽습니다.
Reference
이 문제에 관하여(Processing3에서 Arduino 시리얼에서 값을 읽고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Ninagawa_Izumi/items/8d9e023547c20bc171a0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)