###前提・実現したいこと
ArduinoとProcessingのシリアル通信による連携で、超音波距離センサモジュール (HC-SR04)の値をArduinoで読み取り、Processingで可視化しようとしています。
###発生している問題・エラーメッセージ
シリアル通信はできているのですが、物体をセンサに近づけても、Arduinoのシリアルモニタの値は変わりますが、Processingとシリアル通信した時にProcessingに表示される値が変わらず、困っています。
###該当のソースコード
Arduino
1#define echoPin 2 // Echo Pin 2#define trigPin 3 // Trigger Pin 3 4double Duration = 0; //受信した間隔 5double Distance = 0; //距離 6void setup() { 7 Serial.begin( 9600 ); 8 pinMode( echoPin, INPUT ); 9 pinMode( trigPin, OUTPUT ); 10} 11void loop() { 12 digitalWrite(trigPin, LOW); 13 delayMicroseconds(2); 14 digitalWrite( trigPin, HIGH ); //超音波を出力 15 delayMicroseconds( 10 ); // 16 digitalWrite( trigPin, LOW ); 17 Duration = pulseIn( echoPin, HIGH ); //センサからの入力 18 if (Duration > 0) { 19 Duration = Duration / 2; //往復距離を半分にする 20 Distance = Duration * 340 * 100 / 1000000; // 音速を340m/sに設定 21 Serial.print("Distance:"); 22 Serial.print(Distance); 23 Serial.println(" cm"); 24 } 25 delay(500); 26}
Processing
1import processing.serial.*; 2 3// Serialクラスのインスタンス 4Serial myPort; 5// シリアルポートから取得したデータ(Byte) 6int inByte; 7 8void setup() 9{ 10 size(640, 640); 11 // Macのシリアルのリストの最初のポートがFTDIアダプタのポート 12 String portName = Serial.list()[1]; 13 // ポートとスピードを設定して、Serialクラスを初期化、 14 myPort = new Serial(this, portName, 9600); 15} 16 17void draw() 18{ 19 // シリアルから取得した値を背景色に設定 20 println(inByte); 21} 22 23void serialEvent(Serial p){ 24 // 設定したシリアルポートからデータを読み取り 25 inByte = myPort.read(); 26}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/07/07 08:12