上位に戻る | 初版2021/11/14 |
思わず、買ってしまったELEGOOのArduino用UNO R3スターターキット 距離センサーと、サーボモータが入っていたので、室内の
距離を測って、自動で、室内レイアウト図を起こせたらいちいちメジャーで測定しなくてもすむかと思ってチャレンジしてみましたが
ダメでした
@センサーの測定距離 データシート上は、4mになっていますが、おそらくノイズで測れません。 1m以内です。ノートPCだと若干
ましです。アースがあれば、もう少し距離伸びる可能性はあります
A斜めに照射されると、反射がうまくないようで直線の壁が湾曲して測定されます
で諦めて、レーダもどきを作ってみました 斜め照射でも正しく距離が測れるセンサーがあれば良かったですが・・・・。
思わず、安! と思ってポチってしまいました ELEGOOの Arduino用UNO R3スターターキット まあ知ってはいましたが、特に作って見たいもの が思いつかなったので、触手が伸びませんでし たが、各種センサーやら、LCD表示器やらなに やら、一杯入って\3,959 遊ぶにはいいかと、買ってしまいました 添付の距離センサーと、サーボモータを使いました |
@シリアルポート番号 プログラムを起動する前に ArduinoのUSBを差してく ださい(ポートを検索します) A通信速度 Arduinoと合わせてください Bフロー制御 Arduinoには、フロー用の 信号線は無さげなので、 利用しません 余裕をもったタイミングでの 通信が必要です C通信接続切断ボタン D開始ボタンを押すと、 100msecごとに、測定要求 を出します なので、180度測定するのに 18秒かかります G試験ボタンは、1回だけ 測定要求を出します Hテキストボックスに値を入れて 送信ボタンを押すと値が送信 されます J受信したデータをそのまま 表示します |
#include <HCSR04.h> #include <Servo.h> byte triggerPin = 12; byte echoPin = 11; char inputdata; int pos = 0; int flgg = 0; Servo myservo; void setup () { Serial.begin(9600); HCSR04.begin(triggerPin, echoPin); myservo.attach(9); } void loop () { inputdata=Serial.read(); // inputdata='1'; if (inputdata == '1'){ if (flgg==0){ pos =pos + 1; if (pos==181){flgg=1;} myservo.write(pos); } if (flgg==1){ pos =pos - 1; if (pos==0){flgg=0;} myservo.write(pos); } double* distances = HCSR04.measureDistanceCm(); Serial.print("S"); Serial.print(pos); Serial.print(","); Serial.print(distances[0]); Serial.println("E"); } } |
距離センサー HCSR04と サーボモータ Servo ライブラリを使っていますので 利用するには事前に読み込まして おいてください |