OLED屏幕实时显示超声波测距数值(Arduino学习笔记1)

废话不多说,直接介绍该项目!!

1.元器件和设备

Arduino UNO板 X1

HC-SR04超声波测距模块 X1

OLED显示屏模块 X1

杜邦线公对公 X8

面包板 X1

2.接线到对应引脚

本人没有什么艺术造诣,天外飞线才是我的准则 

 

3.查询OLED地址

!!!关键步骤 !!!如果OLED没显示任何东西的话,一定是OLED的地址没填对

查询地址步骤如下:

给开发板上电并连接好OLED模块 -> 打开Arduino -> 点击示例 -> 选择Wire -> 选择i2c-scanner

 进入示例 -> 烧写程序  -> 串口监视器查看地址

4.调用库

<Adafruit_GFX.h>

<Adafruit_SSD1306.h>

调用库前得先下载所需要的两个库,不然到时候红花花的一片代码,按顺序下载库

 

 

 

5.编写程序

#define fasong 3 //宏定义发送端端口
#define jieshou 2 //宏定义接收端端口
#include<Wire.h>
#include<Adafruit_GFX.h>
#include<Adafruit_SSD1306.h>
Adafruit_SSD1306 oled(128, 64, &Wire, -1); //初始化调用SSD1306的长128和宽64两者像素,&Wire默认,共享开发板复位引脚填-1
float juli; //全局变量距离结果,哈哈很多变量名都是拼音,写代码还是得规范一下千万别学我0v0

void oled1() {
  oled.clearDisplay();    //当该被函数调用时清除oled缓存内容(通俗点来讲就是刷新数据)
  oled.setTextSize(1);   //字体
  oled.setTextColor(1);  //字体颜色默认白色
  oled.setCursor(64, 0); //设置显示的位置
  oled.print(juli);     //显示结果,单位厘米
  oled.display();       //显示字体
}

void setup() {
  Serial.begin(9600);
  oled.begin(SSD1306_SWITCHCAPVCC, 0x3C); //查询OLED的地址,一般默认0x3C
  pinMode(fasong, OUTPUT);
  pinMode(jieshou, INPUT);
}


void loop() {
  digitalWrite(fasong, 0); //将发送端置0
  delayMicroseconds(2);   //延迟2微秒,微秒函数用这个
  digitalWrite(fasong, 1); //发送端开始测距,置1
  delayMicroseconds(10);   //延迟10微秒
  digitalWrite(fasong, 0); //接收端开始,发送端结束测距,发送端置0,接收端置1
  juli = float(pulseIn(jieshou, 1) * 17) / 1000; //统计接收端从0到1的时间,也是统计发送端从1到0的时间,pulseIn(jieshou,1)是超声波来回总和时间
  Serial.println(juli);  //用串口通信来检测时间正确
  oled1();
  delay(1000);  //延迟可以自己拟定

}

6.效果

 

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值