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) 実験シーン図