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();//开显示
}
很抱歉,由于文本生成的限制和防止版权问题,我无法直接为您生成完整的STM32F103C8T6超声波测距与0.96英寸OLED显示原理图。但我可以提供一个基本的设计概念和步骤: 1. **硬件连接**: - STM32F103C8T6: 连接I2C或SPI接口用于控制OLED屏幕(通常GPIO用于数字信号传输)。 - 超声波模块: 接入微控制器的数字IO口作为发射/接收信号,并可能需要外部晶振和定时器。 - OLED屏: 通过I2C或SPI连接到STM32的相应接口,根据型号连接RST、SCL/SDA等控制引脚。 2. **软件部分**: - **超声波测距**: 使用超声波传感器发送短脉冲,计算接收到回音的时间差,从而得到距离。需要编写代码处理中断并计算距离。 - **OLED显示**: 编写驱动程序以控制OLED显示测量的距离数据,如设置字体、颜色和刷新频率。 3. **原理图设计**: - 在Eagle、KiCad或Arduino IDE中的Schematic View中创建一个新项目,添加STM32F103C8T6、超声波模块、OLED屏以及相关的电阻电容等元件。 - 绘制连接线,表示各部分之间的电气连接,并标记各个引脚的功能。 - 可以参考相关的STM32官方文档或第三方库的示例来确定精确的接线配置。 **相关问题**: 1. 如何在STM32上配置I2C或SPI接口? 2. 怎样在STM32中编写超声波测距的中断服务程序? 3. 如何使用STM32的GPIO控制OLED的初始化和数据传输? 请注意,为了获得完整的设计细节,您可能需要查阅具体的硬件规格文档、STM32的API指南和OLED屏的数据手册。实际制作时请务必参照详细的教程或电路图模板。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值