54356


超音波距離センサ(HC-SR04)の出力をMATLABで取得しようとしていますが、  
[MATLAB 入門チュートリアル](https://jp.mathworks.com/learn/tutorials/matlab-
onramp.html)しか行った経験がなく、  
既存の他の言語で書かれたプログラムを実現するにはどこから手をつけたらいいのか  
検討がつかないため、アドバイスをいただきたいです。  
[HC-SR04 秋月電子](http://akizukidenshi.com/catalog/g/gM-11009/)

実装環境ではArduinoは使いません。PCはMacbook Proです。  
MATLABから超音波距離センサを制御するために、デバイスをつなげています。  
以下MATLAbコンソールから返ってきた結果の一部です。

[code]

    >> daq.getDevices
    
    ans = 
    
    ni: National Instruments USB-6361 (Mass Termination) (Device ID: 'Dev1')
       Analog input subsystem supports:
          7 ranges supported
          Rates from 0.1 to 2000000.0 scans/sec
          16 channels ('ai0' - 'ai15')
          'Voltage' measurement type
    
       Analog output subsystem supports:
          -5.0 to +5.0 Volts,-10 to +10 Volts ranges
          Rates from 0.1 to 2857142.9 scans/sec
          2 channels ('ao0','ao1')
          'Voltage' measurement type
    
       Digital subsystem supports:
          Rates from 0.1 to 10000000.0 scans/sec
          24 channels ('port0/line0' - 'port2/line7')
          'InputOnly','OutputOnly','Bidirectional' measurement types
    
[/code]

電源は5Vで超音波距離センサのGNDとVCCにつなげています。

以下はArduinoのコードで、出力として物体までの距離を返します。  
[引用元：【Arduino】超音波距離センサ(HC-
SR04)の使い方](https://algorithm.joho.info/arduino/ultrasonic-distance-sensor-hc-
sr04/)

[code]

    int trig = 8; // 出力ピン
    int echo = 9; // 入力ピン
    
    void setup() {
      Serial.begin(9600);
      pinMode(trig,OUTPUT);
      pinMode(echo,INPUT);
      }
    
    void loop() {
      // 超音波の出力終了
      digitalWrite(trig,LOW);
      delayMicroseconds(1);
      // 超音波を出力
      digitalWrite(trig,HIGH);
      delayMicroseconds(11);
      // 超音波を出力終了
      digitalWrite(trig,LOW);
      // 出力した超音波が返って来る時間を計測
      int t = pulseIn(echo,HIGH);
      // 計測した時間と音速から反射物までの距離を計算
      float distance = t*0.017;
      // 計算結果をシリアル通信で出力
      Serial.print(distance);
      Serial.println(" cm");
      delay(500);
    }
    
[/code]


CC BY-SA 4.0
2019-04-13T06:19:48.157
54133
2019-04-21T05:14:17.973
2019-04-13T07:25:10.013
question
arduino matlab センサー
超音波距離センサ(HC-SR04)をMATLABで扱う方法


信号の時間差を測定する際には、アクチュエータ(超音波距離センサの超音波送信器)とセンサ(超音波距離センサの超音波受信器)が制御機構の近いほど誤差が出にくくなります。Macで制御する場合、超音波距離センサとの間に”デバイス”が介在せざるを得ませんが、Arduinoであればセンサと直結きるので、Arduinoで超音波の送信、超音波の受信、時間の測定を行うほうが良いように思います。

質問に書かれているスケッチ(Arduinoのプログラムコード)では、無限に測定を繰り返すようになっていますが、これを制御ピンの信号がLowからHighに変わった超音波を送信して、反響して返ってくる超音波を受信した時までの時間を測定。測定結果をシリアル通信で送るように変えます。

Macにつながったデバイスの出力ピンとArduinoの制御ピンを接続。Arduinoのシリアル通信をMacのシリアル通信（なければUSB-
シリアル通信アダプタを介して）に接続。  
そうするとMacからデバイスの出力ピンをLowからHighにすると、Arduinoが超音波が往復する時間を計った結果が、Macのシリアル通信に届くようになります。


CC BY-SA 4.0
2019-04-21T05:14:17.973
54356
2019-04-21T05:14:17.973
217
54133
answer