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();//开显示
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值