Arduino 超声波测距+OLED显示

Arduino 超声波测距+OLED显示

一.项目简介
用超声波测距,实时显示在OLED上面
在这里插入图片描述

二.接线
超声波:
VCC->5V GND->GND
Trig->2 Echo->3
OLED:

VCC->3V GND->GND
SCL(时钟线)->SCL SDA(数据线)->SDA
(可参考上图)

三.库安装
在这里插入图片描述点击管理库
搜索关键词为GFX和SSD1306的库,点击install
在这里插入图片描述
四.模块介绍

超声波:
在这里插入图片描述在这里插入图片描述
OLED:
在这里插入图片描述
这款屏幕尺寸约为0.96英寸,由SSD1306驱动,驱动接口I2C,I2C地址(0x3c 默认/0x3d)。
通过时钟线和数据线来传递数据

五.代码详解

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET -1
#define TrigPin 2
#define EchoPin 3

Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);//声明OLED
/*
一,二参数0.96寸OLED长宽参数为128 64,第三个参数默认&Wire,第四个参数
设置重置脚,-1就是不设置
*/
long getTime()//检测Echo脚高电平的时间
{
  digitalWrite(TrigPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPin,LOW);

  return pulseIn(EchoPin,HIGH);
}

void setup() {
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.setTextColor(WHITE);//开像素点发光
  display.clearDisplay();//清屏

  display.setTextSize(2); //设置字体大小
  pinMode(TrigPin, OUTPUT);
  pinMode(EchoPin, INPUT);
}

void loop() {
  
  int dis;
  dis = getTime()/ 58;
/*
关于距离中除以58的说明:
声音在干燥、摄氏20度的空气中的传播速度大约为343米/秒,合34,300厘米/秒。 或者,我们作一下单位换算, 34,300除以1,00000厘米/微秒。即为: 0.0343厘米/微秒, 再换一个角度,1/ (0.0343 厘米/微秒)即: 29.15 微秒/厘米。这就意味着,每291.5微秒表示10CM的距离。1厘米就是29.15微秒。 但是发送后到接收到回波,声音走过的是2倍的距离呀。所以实际距离就是1厘米,对应58.3微秒。 实际上整个测距过程是测的发出声波到收到回波的时间,时间us。所以换成距离cm,要除以58。当然除以58.3可能更精确。所以程序中用pulseln(EchoPin, HIGH) / 58.00获取测得的距离。
*/
  display.clearDisplay();//清屏
  display.setCursor(50,10);
  display.print(dis);
  display.println("cm");
  display.drawRect(0, 33, 128, 12, WHITE);
  display.fillRect(2, 35, map(dis, 2, 30, 2, 124), 8, WHITE);//map(要映射的值,旧区间初值,旧区间终值,新区间初值,新区间终值)
 /*
 进度条采用静态空心矩形套一个动态实心矩形实现
*/
  display.display();//开显示
}
  • 18
    点赞
  • 144
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要实现这个功能,需要连接一个超声波传感器和一个LCD显示屏到Arduino板上。然后编写程序,让Arduino读取超声波传感器的距离数据,并将其显示在LCD屏幕上。具体实现方法可以参考Arduino官方文档或者相关的教程。 ### 回答2: Arduino超声波测距显示LCD上,可以通过以下步骤实现: 1. 首先,准备好硬件设备:Arduino板、超声波传感器、LCD显示屏、杜邦线等。 2. 将超声波传感器的VCC、GND和Trig连接到Arduino的数字口,将Echo连接到Arduino的模拟口。 3. 将LCD的VCC、GND、SDA、SCL连接到Arduino的相应引脚上。 4. 使用Arduino的编程软件,编写程序代码,实现超声波测距和LCD显示的功能。具体代码可以在网上找到或自行编写。 5. 测试程序,调试功能,确保数据能够正常地从传感器获取并在LCD上显示出来。 6. 在实际应用中,可以将超声波传感器安装在需要测距的位置,利用Arduino板和LCD显示屏实时监测距离变化,实现智能化控制。 总之,通过组合使用Arduino和超声波传感器,可以实现高精度的距离测量功能,加上LCD显示屏,可以直观地显示距离数据,从而方便高效地进行各种应用。 ### 回答3: Arduino超声波测距显示在LCD上的需求很常见,实现起来也比较简单。首先需要连接超声波模块和LCD模块,可以使用板载模块或者外部模块,然后编写相应的代码。 以下是一个简单的示例代码: ``` #include <LiquidCrystal.h> const int trigPin = 2; // 超声波模块控制引脚 const int echoPin = 3; // 超声波模块接收引脚 const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; // LCD模块引脚 LiquidCrystal lcd(rs, en, d4, d5, d6, d7); void setup() { Serial.begin(9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); lcd.begin(16, 2); } void loop() { long duration, distance_cm; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance_cm = duration * 0.034 / 2; // 根据声速计算距离,单位为厘米 lcd.clear(); lcd.setCursor(0,0); lcd.print("Distance: "); lcd.print(distance_cm); lcd.print(" cm"); delay(500); } ``` 该代码中,用LiquidCrystal库控制LCD显示器,用pinMode函数定义trigPin和echoPin的引脚为输入/输出,Serial.begin函数打开串口,LCD.begin函数初始化显示器。在循环循环中,使用pulseIn函数读取回声时间,然后根据声波的速度计算距离,接着清除LCD显示,设置光标的位置,并打印输出距离,最后延时500毫秒后再重新测距。 需要注意的是,由于声波的传输和反射存在误差,所以超声波模块测得的距离可能会产生一定的误差,我们需要根据实际情况进行调整。另外,使用不同型号的LCD模块时,引脚定义有可能会有所不同,所以需要根据具体的接线调整引脚号。 总之,Arduino超声波测距并将结果显示在LCD上是一种简单而实用的应用,可以用于测量距离、监测物体位置等方面的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值