2

ハードウェア:

  • 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 を起動し、センサーに電力を供給することができます。これは私には失敗した回避策のように思えます。ハードコードされたソフトウェア ソリューションが欲しいです。

4

1 に答える 1