Project 21.2 超音波測距モジュール温度補正版/Ultrasonic Ranging

前回は超音波測距モジュールを使用して距離を測定してみました。

あわせて読みたい
Project 21.1 超音波測距モジュール/Ultrasonic Ranging 前回はLCDディスプレイに文字を表示してみました。 https://kaneshige.org/?p=595 今回は超音波モジュールを使用して距離を測定してみましょう。 【超音波測距モジュー...

今回はライブラリを使用して温度補正できるようにしてみましょう。使用する回路は前回と同様です。

目次

ライブラリのインストール

arduino->Sketch->Include library-> Manage libraries.と進んでください。
検索窓に『UltrasonicSensor』と入れて検索します。
そして、インストールしてください。

コード

/**********************************************************************
  Filename    : Ultrasonic Ranging
  Description : Use the ultrasonic module to measure the distance.
  Auther      : www.freenove.com
  Modification: 2022/10/25
**********************************************************************/
#include <UltrasonicSensor.h>

UltrasonicSensor ultrasonic(13, 14);

void setup() {
  Serial.begin(115200);
  
  int temperature = 22;
  ultrasonic.setTemperature(temperature);
}

void loop() {
  int distance = ultrasonic.distanceInCentimeters();
  Serial.printf("Distance: %dcm\n",distance);
  delay(300);
}

なんともシンプルなコードですね。これがライブラリの威力です。ありがたや~。

さて、これだけだとあまりにも芸が無いので、前回ちょっと触れたサーミスタを使用して、現在の温度を取得し反映させてみましょう。

以前の記事の回路図・配線図・コードを参考に、どうしたら現在の温度を取得して反映させられるか考えてみましょう。

あわせて読みたい
Project 13.1 サーミスタ/Thermometer 前回はフォトレジスターを使って周辺の明るさに応じてLEDの光量をコントロールしてみました。 https://kaneshige.org/?p=406 今回はサーミスタを使用して温度を測定して...
カスタマイズ例
#include <UltrasonicSensor.h>
#define PIN_ANALOG_IN   1
UltrasonicSensor ultrasonic(13, 14);

void setup() {
  Serial.begin(115200);
}

void loop() {
  ultrasonic.setTemperature(temp());
  int distance = ultrasonic.distanceInCentimeters();
  Serial.printf("Distance: %dcm\n",distance);
  delay(300);
}
int temp() {
  int adcValue = analogRead(PIN_ANALOG_IN);                       //read ADC pin
  double voltage = (float)adcValue / 4095.0 * 3.3;                // calculate voltage
  double Rt = 10 * voltage / (3.3 - voltage);                     //calculate resistance value of thermistor
  double tempK = 1 / (1 / (273.15 + 25) + log(Rt / 10) / 3950.0); //calculate temperature (Kelvin)
  double tempC = tempK - 273.15;                                  //calculate temperature (Celsius)
  //Serial.printf("ADC value : %d,\tVoltage : %.2fV, \tTemperature : %.2fC\n", adcValue, voltage, tempC);
  //delay(1000);
  return (int)tempC;
}

こんな感じだと温度を取得してより正確に距離を測れるのではないでしょうか?
あくまでも一例なので、皆さんのオリジナルなコードを作成頂いて大丈夫です!

次回はマトリックスキーパッドについて学びましょう!

あわせて読みたい
Project 22.1 マトリックスキーパッド/Matrix Keypad 前回は超音波測距モジュールを温度補正して距離を測定してみました。 https://kaneshige.org/?p=626 今回はマトリックスキーパッドを使用してみましょう。 【4x4マト...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

金重総合研究所の主席研究員。
子供の頃から研究者を目指し、ライフワークとして日々様々な研究をしています。
経営・マネジメント・金融・DXあたりが本職です。
私を採用したい人、私と一緒に働きたい人、一緒に知識を肥やしていきたい人はぜひお声がけ下さい。

コメント

コメントする

目次