ハードウェア:
- Arduino メガ 2560
- 2×MaxBotix MaxSonar-EZ0
ソフトウェア (プログラム全体ではなく、超音波に関連するもの):
void setup() {
Serial.begin(9600);
//Ultrasonic Left
pinMode(26, OUTPUT);
pinMode(2, INPUT);
digitalWrite(26, LOW);
//Ultrasonic Right
pinMode(27, OUTPUT);
pinMode(3, INPUT);
digitalWrite(27, LOW);
}
void readSonar() {
digitalWrite(26, HIGH);
delayMicroseconds(25);
digitalWrite(26, LOW);
data[0] = pulseIn(2, HIGH);
digitalWrite(27, HIGH);
delayMicroseconds(25);
digitalWrite(27, LOW);
data[1] = pulseIn(3, HIGH);
return data;
}
問題:
- Arduino を最初に起動したとき、2 つの超音波センサーからの読み取り値は更新されていません。通常は 500 ~ 1500 の範囲のゼロ以外の値としてレポートされます。少し変動しますが (電源のノイズが原因である可能性が最も高い)、初期化時の値付近にとどまる傾向があります。
- これらのセンサーのデータ シートによると、初期化段階ではセンサーの 14 インチ以内に障害物はありません。
- センサーに接続されているケーブル (Arduino の入力に直接接続するのではなく、センサーの背面から) を取り外して再接続するだけで、センサーから正確な読み取り値をすぐに受け取ることができます。
誰かが以前にこの問題を抱えていましたか? 私の setup() 関数は、私が見た例から「正常」に見えます。この問題を解決するために、両方のセンサーのアクティブ ラインにスイッチを接続しました。このようにして Arduino を起動し、センサーに電力を供給することができます。これは私には失敗した回避策のように思えます。ハードコードされたソフトウェア ソリューションが欲しいです。