工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino UNOとHC-SR04超音波センサーで距離測定:Adafruit OLED表示

部品と材料

部品数量備考
Arduino UNO1
超音波センサー HC-SR041
Adafruit 128×64 OLEDディスプレイ(SSD1306)1I2C接続

使用アプリとオンラインサービス

プロジェクト概要

Arduino UNOとHC-SR04超音波センサーで距離測定:Adafruit OLED表示

OLEDディスプレイ(SSD1306)の使い方

必要なライブラリと初期化:

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4  // リセットピン(未使用)
Adafruit_SSD1306 display(OLED_RESET);

setup()内で初期化:

display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // I2Cアドレス0x3C(128x64)
display.clearDisplay();

loop()内で表示更新:

display.setCursor(22, 20);
display.setTextSize(3);
display.setTextColor(WHITE);
display.println(distance);
display.setCursor(85, 20);
display.setTextSize(3);
#ifdef CommonSenseMetricSystem
  display.println("cm");
#endif
#ifdef ImperialNonsenseSystem
  display.println("in");
#endif
display.display();
delay(500);
display.clearDisplay();

HC-SR04超音波距離センサーの使い方

HC-SR04はパルスバーストを送信し、超音波のエコーが戻るまでの時間を測定します。

トリガーパルス生成:

long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

pulseIn()でエコーパルスの長さを測定:

duration = pulseIn(echoPin, HIGH);
#ifdef CommonSenseMetricSystem
  distance = (duration/2) / 29.1; // cm
#endif
#ifdef ImperialNonsenseSystem
  distance = (duration/2) / 73.914; // inch
#endif

デバッグ用にシリアル出力も可能:

Serial.println(distance);

完全なスケッチ

// CODE BY Javier Muñoz Sáez, 05/11/2016
// questions to javimusama@gmail.com
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define CommonSenseMetricSystem
//#define ImperialNonsenseSystem

#define trigPin 13
#define echoPin 12
#define OLED_RESET 4

Adafruit_SSD1306 display(OLED_RESET);

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
}

void loop() {
  long duration, distance;
  
  // トリガーパルス送信
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // エコー受信
  duration = pulseIn(echoPin, HIGH);
  
  // 距離計算
  #ifdef CommonSenseMetricSystem
    distance = (duration/2) / 29.1;
  #endif
  #ifdef ImperialNonsenseSystem
    distance = (duration/2) / 73.914;
  #endif
  
  // OLED表示
  display.setCursor(22, 20);
  display.setTextSize(3);
  display.setTextColor(WHITE);
  display.println(distance);
  display.setCursor(85, 20);
  display.setTextSize(3);
  #ifdef CommonSenseMetricSystem
    display.println("cm");
  #endif
  #ifdef ImperialNonsenseSystem
    display.println("in");
  #endif
  display.display();
  delay(500);
  display.clearDisplay();
  
  Serial.println(distance); // デバッグ用
}

回路図

Arduino UNOとHC-SR04超音波センサーで距離測定:Adafruit OLED表示

接続まとめ:

製造プロセス

  1. Raspberry PiとPythonでリモート温度センサーを構築 – ステップバイステップガイド
  2. Raspberry PiとDS18B20でマルチセンサー温度・光監視システムを構築
  3. Raspberry Piでセンサーとアクチュエータを制御:加速度計、サーボ、データストリーミング
  4. Raspberry Piと湿度センサーで作る自動エアロポニックスシステム
  5. 湿度センサーの検証とキャリブレーションで精密測定を実現
  6. Windows 10 IoT CoreとSHT15センサーで高精度な温湿度モニタリング
  7. Arduino Nanoと128x64 OLEDで実行するセルラーオートマトン「ライフゲーム」
  8. 距離センサーの仕組みと主要アプリケーション
  9. Arduinoセンサー:種類、応用、実世界プロジェクト
  10. 指紋センサー技術:動作原理、アプリケーション、Arduino統合
  11. 振動センサー:原理、種類、産業アプリケーション