[Diao Ye learns programming] Arduino hands-on (58) --- HC-SR04 ultrasonic sensor module 6

insert image description here

The reference to 37 sensors and modules has been widely circulated on the Internet. In fact, there must be more than 37 sensor modules compatible with Arduino. In view of the fact that I have accumulated some sensor and actuator modules on hand, in accordance with the concept of true knowledge (must be hands-on), for the purpose of learning and communication, here I am going to try and do more experiments one by one. Whether it is successful or not, it will be recorded ——Small progress or unsolvable problems, I hope to be able to throw bricks and spark jade.

[Arduino] 168 kinds of sensor module series experiment (data code + simulation programming + graphic programming)
Experiment 58: wide voltage HC-SR04 ultrasonic module 3.3V-5V distance sensor board with UART IIC interface

insert image description here
Experimental environment of HC-SR04 ultrasonic ranging sensor module
1. Hardware list required for HC-SR04 ultrasonic ranging sensor module experiment

TM1637 four-digit digital tube X1
Arduino Uno development board X1
DuPont lines (9 pieces are prepared)
LED light-emitting diode (blue, green) X2
IIC/I2C 1602 LCD screen module X1
HC-SR04 ultrasonic distance sensor module X1
Proto Shield prototype Expansion board (with mini breadboard) X1

insert image description here
Experimental wiring diagram

insert image description here

Program 8: Turn on the LED light when the distance is 10 cm
(1) Experiment with open source graphics programming (Mind+, learning by playing)

insert image description here
(2) The return status of the experimental serial port

insert image description here

Program 9: OLED display shows the actual distance measurement value
(1) Schematic diagram of experimental wiring

insert image description here
(2) Arduino reference open source code

/*
  【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) The return status of the experimental serial port

insert image description here
(4) Experimental scene diagram

insert image description here
Program 10: LCD1602 display distance
(1) Schematic diagram of experimental wiring

insert image description here
(2) Arduino reference open source code

/*
  【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) Experimental scene diagram

insert image description here

Program 11: LCD screen displays ultrasonic distance measurement value
(1) Experimental open source simulation programming (Linkboy V4.63)

insert image description here

(2) Experimental scene diagram

insert image description here

insert image description here

Guess you like

Origin blog.csdn.net/weixin_41659040/article/details/132333903