質問編集履歴

1 修正

super987

super987 score 7

2017/06/29 20:45  投稿

Arduinoで複数の超音波センサを用いた距離の測定
###前提・実現したいこと
Arduino DUEで2つの超音波センサ(HC-SR04)を用いて距離を測定。
誤差・振れをできるだけ取り除き、安定した距離測定の実現。
###発生している問題・エラーメッセージ
距離は取れているが、誤差・振れが大きい。
###該当のソースコード  
```  
#define echo1Pin 4 // Echo1 Pin  
#define trig1Pin 3 // Trigger1 Pin  
#define echo2Pin 5 // Echo2 Pin  
#define trig2Pin 6 // Trigger2 Pin  
int Duration_1, Duration_2;  
float Distance_1, Distance_2,AveDistance;  
void setup() {  
 Serial.begin( 9600 );  
 pinMode( echo1Pin, INPUT );  
 pinMode( trig1Pin, OUTPUT );  
 pinMode( echo2Pin, INPUT );  
 pinMode( trig2Pin, OUTPUT );  
}  
////////////////////////////////////////////////////////////////////////////////  
void loop() {  
 ultra_sonicPin();  
 Distance_1 = Duration_1 / 2;  
 Distance_2 = Duration_2 / 2;  
 Distance_1 = (Distance_1 * 0.034);//1番センサ cm間隔で取得  
 Distance_2 = (Distance_2 * 0.034);//2番センサ cm間隔で取得  
 AveDistance=((Distance_1+Distance_2)/2);//センサ-壁間の距離  
}  
////////////////////////////////////////////////////////////////////////////////  
/* 超音波センサ */  
void ultra_sonicPin() {  
 int count=0;  
 if(count==0){  
   digitalWrite(trig1Pin, LOW);  
   delayMicroseconds(10);  
   digitalWrite(trig1Pin, HIGH);  
   delayMicroseconds(10);  
   digitalWrite(trig1Pin, LOW);  
   Duration_1 = pulseIn(echo1Pin, HIGH);  
   delay(60);  
   count=1;  
 }  
 if(count=1){  
   digitalWrite(trig2Pin, LOW);  
   delayMicroseconds(10);  
   digitalWrite(trig2Pin, HIGH);  
   delayMicroseconds(10);  
   digitalWrite(trig2Pin, LOW);  
   Duration_2 = pulseIn(echo2Pin, HIGH);  
   delay(60);  
   count=0;  
 }  
}  
```  
###補足情報(言語/FW/ツール等のバージョンなど)
また、main文内にdelayが入らないように超音波センサの値を取得することは可能でしょうか。
  • C++

    7888 questions

    C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

  • Arduino

    1249 questions

    Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る