【貂蝉がプログラミングを学ぶ】Arduinoハンズオン(58) --- HC-SR04超音波センサーモジュール6

ここに画像の説明を挿入

37 個のセンサーとモジュールについての言及はインターネット上で広く広まっていますが、実際には、Arduino と互換性のあるセンサー モジュールは 37 個以上あるはずです。真の知識(実践的でなければならない)の概念に従って、学習とコミュニケーションの目的でいくつかのセンサーとアクチュエーターモジュールを手元に蓄積しているという事実を考慮して、ここではさらに試してみるつもりです成功しても失敗しても、それは記録されます ——小さな進歩や解決できない問題、レンガを投げてヒスイを輝かせることができれば幸いです。

[Arduino] 168種類のセンサーモジュールシリーズ実験(データコード+シミュレーションプログラミング+グラフィックプログラミング)
実験58:UART IICインターフェースを備えた広電圧HC-SR04超音波モジュール3.3V-5V距離センサーボード

ここに画像の説明を挿入
超音波測距センサーモジュール HC-SR04 の実験環境
1. 超音波測距センサーモジュール HC-SR04 の実験に必要なハードウェア一覧

TM1637 4桁デジタル管 X1
Arduino Uno開発ボード X1
DuPontライン(9個用意)
LED発光ダイオード(青、緑) X2
IIC/I2C 1602 LCD LCDスクリーンモジュール X1
HC-SR04超音波距離センサーモジュール X1
プロトシールドプロトタイプ拡張ボード(ミニブレッドボード付き)X1

ここに画像の説明を挿入
実験用配線図

ここに画像の説明を挿入

プログラム8:距離が10cmになったらLEDライトを点灯する
(1) オープンソースグラフィックスプログラミングの実験(Mind+、遊びながら学ぶ)

ここに画像の説明を挿入
(2) 実験用シリアルポートの復帰状況

ここに画像の説明を挿入

プログラム9:有機ELディスプレイで実際の距離測定値を表示
(1) 実験配線の模式図

ここに画像の説明を挿入
(2) Arduino リファレンス オープンソース コード

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序九:OLED显示屏显示实际测距值
  Arduino------HG-SR04
  5V------------VCC
  GND-----------GND
  D8------------Echo
  D9------------Trig
 Arduino------OLED 0.96
  A4------------SDA
  A5------------SCK
*/

#include <SPI.h>
#include <Wire.h>

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>//导入驱动库

#define trigPin 9//定义超声波模块接脚
#define echoPin 8

#define OLED_RESET 4

Adafruit_SSD1306 display(OLED_RESET);

void setup() {
    
    
  Serial.begin (9600);

  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

  //使用 I2C 地址初始化 0x3C (128x64)
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
}

void loop() {
    
    
  float duration;
  float distance_cm;
  float distance_in;

  digitalWrite(trigPin, LOW); //脉冲___|---|___
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  duration = pulseIn(echoPin, HIGH);

  distance_cm = (duration / 2) / 29.1;
  distance_in = (duration / 2) / 73.914;

  display.setCursor(30, 0); //OLED显示屏
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.println("Range Finder");

  display.setCursor(20, 15); //OLED显示屏输出定位
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.println(distance_cm);

  display.setCursor(80, 15);
  display.setTextSize(2);
  display.println("cm");

  display.setCursor(10, 45); //OLED显示屏
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.println(distance_in);

  display.setCursor(90, 45);
  display.setTextSize(2);
  display.println("in");
  display.display();

  delay(500);
  display.clearDisplay();

  Serial.println(distance_cm);
  Serial.println(distance_in);
}

(3) 実験用シリアルポートの復帰状況

ここに画像の説明を挿入
(4) 実験風景図

ここに画像の説明を挿入
プログラム 10: LCD1602 表示距離
(1) 実験配線の概略図

ここに画像の説明を挿入
(2) Arduino リファレンス オープンソース コード

/*
  【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
  程序十:1602LCD显示距离
  Arduino------HG-SR04
  5V------------VCC
  GND-----------GND
  D8------------Echo
  D9------------Trig
*/

#include <LiquidCrystal_I2C.h>//导入驱动库
LiquidCrystal_I2C lcd(0x27, 16, 2);// I2C地址0x27,16列2行
int trigPin = 9;    // TRIG pin
int echoPin = 8;    // ECHO pin
float duration_us, distance_cm;

void setup() {
    
    
  lcd.init();               //初始化液晶屏
  lcd.backlight();          // 打开背光
  pinMode(trigPin, OUTPUT); // 配置触发引脚为输出模式
  pinMode(echoPin, INPUT);  // 将回显引脚配置为输入模式
}

void loop() {
    
    
  // 生成 10 微秒脉冲到 TRIG 引脚
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // 测量来自 ECHO 引脚的脉冲持续时间
  duration_us = pulseIn(echoPin, HIGH);
  //计算距离
  distance_cm = 0.017 * duration_us;

  lcd.clear();
  lcd.setCursor(0, 0); //从第一行开始打印
  lcd.print("Distance: ");
  lcd.print(distance_cm);

  delay(500);
}

(3) 実験風景図

ここに画像の説明を挿入

プログラム 11: LCD 画面に超音波距離測定値が表示される
(1) 実験的なオープンソース シミュレーション プログラミング (Linkboy V4.63)

ここに画像の説明を挿入

(2) 実験シーン図

ここに画像の説明を挿入

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_41659040/article/details/132333903