📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
編集の要約なし |
|||
| 16行目: | 16行目: | ||
zipファイルをダウンロード後、Arduino IDEを起動して、[Sketch]メニューバー - [Include Library] - [Add .ZIP Library...]を選択して、zipファイルを追加する。<br> | zipファイルをダウンロード後、Arduino IDEを起動して、[Sketch]メニューバー - [Include Library] - [Add .ZIP Library...]を選択して、zipファイルを追加する。<br> | ||
<br> | <br> | ||
次に、HC-SR04とSC1602A(I2Cアダプタ)を使用して、測定した距離をLCDに表示する仕組みを作成する。<br> | |||
<br> | |||
HC-SR04は電源電圧5[V]、動作周波数40[kHz]、測定角度15[度]で動作する。<br> | HC-SR04は電源電圧5[V]、動作周波数40[kHz]、測定角度15[度]で動作する。<br> | ||
* 測定可能距離 : 2[cm]~450[cm] | |||
* 分解能 : 0.3[cm] | |||
* 最小範囲 : 2[cm] | |||
* 動作方法 | |||
*: トリガー(TRIG)に印加する電圧を10[μs]以上Highにすると、距離の測定を開始する。 | |||
*: 測定後、距離に応じた長さの信号がECHOに返される。 | |||
*: 測定結果から距離への換算は、以下のように計算する。(単位は[mm]) | |||
*: <code>距離 = (ECHOがHighの時間 * 340) / 2</code> | |||
<br> | <br> | ||
HC-SR04のピン配置は、以下の通りである。<br> | HC-SR04のピン配置は、以下の通りである。<br> | ||
| 29行目: | 38行目: | ||
<code>ping_median</code>メソッドを使用して、Pingの応答時間を取得している。<br> | <code>ping_median</code>メソッドを使用して、Pingの応答時間を取得している。<br> | ||
pingを5回試行して中央値を取得することにより、安定した値を取得することを試みている。<br> | pingを5回試行して中央値を取得することにより、安定した値を取得することを試みている。<br> | ||
< | <syntaxhighlight lang="c++"> | ||
#include <NewPing.h> | #include <NewPing.h> | ||
#include <LiquidCrystal_I2C.h> | #include <LiquidCrystal_I2C.h> | ||
| 70行目: | 79行目: | ||
} | } | ||
</ | </syntaxhighlight> | ||
<br> | |||
または、NewPingライブラリを使用しない場合は、以下のようなソースコードとなる。<br> | |||
<syntaxhighlight lang="c++"> | |||
#include <LiquidCrystal_I2C.h> | |||
// address : 0x27, 1602LCD | |||
LiquidCrystal_I2C lcd(0x27, 16, 2); | |||
void wait_microsec(long wait) | |||
{ | |||
long start = micros(); | |||
while (( micros() - start) < wait); | |||
} | |||
void setup() | |||
{ | |||
pinMode(11, INPUT); | |||
pinMode(12, OUTPUT); | |||
lcd.init(); | |||
lcd.backlight(); | |||
} | |||
void loop() | |||
{ | |||
digitalWrite(2, HIGH); | |||
wait_microsec(11); | |||
digitalWrite(2, LOW); | |||
unsigned long range = pulseIn(3, HIGH ,1000000); | |||
if(range) | |||
{ | |||
range = ((range * 340) / 2) / 1000; | |||
lcd.setCursor(0, 0); | |||
lcd.print(range / 10, DEC); | |||
lcd.print("."); | |||
lcd.print(range - ((range / 10) * 10), DEC); | |||
lcd.print(" cm "); | |||
} | |||
delay(200); | |||
} | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||
__FORCETOC__ | __FORCETOC__ | ||
[[カテゴリ:Arduino]] | [[カテゴリ:Arduino]] | ||