【雕爷学编程】Arduino动手做(58)---HC-SR04超声波传感器模块6

在这里插入图片描述

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验五十八:宽电压HC-SR04超声波模块3.3V-5V 测距离传感器板 带UART IIC接口

在这里插入图片描述
HC-SR04超声波测距传感器模块的实验环境
一、HC-SR04超声波测距传感器模块实验所需硬件清单

TM1637四位数码管X1
Arduino Uno开发板 X1
杜邦线 若干(备了9条)
LED发光二极管(蓝、绿色)X2
IIC/I2C 1602 LCD液晶屏模块X1
HC-SR04超声波测距传感器模块X1
Proto Shield原型扩展板(带mini面包板)X1

在这里插入图片描述
实验接线示意图

在这里插入图片描述

程序八:距离10厘米时点亮LED灯
(1)实验开源图形编程(Mind+、编玩边学)

在这里插入图片描述
(2)实验串口返回情况

在这里插入图片描述

程序九:OLED显示屏显示实际测距值
(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)实验场景图

在这里插入图片描述
程序十: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)实验场景图

在这里插入图片描述

程序十一:LCD屏显示超声波测距数值
(1)实验开源仿真编程(Linkboy V4.63)

在这里插入图片描述

(2)实验场景图

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41659040/article/details/132333903