米斯齐超声波传感器显示测量距离(oled)内附Arduino代码

本文介绍了一个使用Arduino平台,结合超声波传感器和SSD1306 OLED显示屏的项目。通过U8g2库控制显示屏,超声波传感器测量距离并更新显示。程序涉及I2C通信,SCL和SDA信号线的理解,以及如何在OLED屏幕上实时显示距离数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用到的东西:
    超声波传感器,uno,SSD1306 OLED显示屏
超声波:gnd-gnd
             vcc-5v
             trig-接脚这里是A0
             echo-接脚这里是A1
 显示器:vcc-3.5
                gnd-gnd
                scl-scl
                sda-sda


名词解释:SCL(Serial Clock)是I2C总线的时钟信号线,由主设备(如微控制器)产生,并控制通信速度。
SDA(Serial Data)是I2C总线的数据信号线,用于在设备之间传输数据。
在I2C总线中,每个设备都有一个唯一的地址,主设备可以向任意设备发送命令,并从设备读取数据。SCL和SDA信号线上的信号是由主设备产生和控制的。SCL和SDA信号线的电平是由器件状态和主设备控制来确定的。


 

#include <U8g2lib.h>    // 引入U8g2库,用于控制SSD1306 OLED显示屏
#include <Wire.h>       // 引入Wire库,用于I2C通信

volatile int item;      // 定义变量item,用于存储距离值
U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);  // 定义SSD1306 OLED显示屏对象

// checkdistance_0_0函数,用于测量超声波传感器与障碍物之间的距离
float checkdistance_0_0() {
  digitalWrite(0, LOW);        // 将超声波传感器的触发引脚设为低电平
  delayMicroseconds(2);        // 延时2微秒
  digitalWrite(0, HIGH);       // 将超声波传感器的触发引脚设为高电平
  delayMicroseconds(10);       // 延时10微秒
  digitalWrite(0, LOW);        // 将超声波传感器的触发引脚设为低电平
  float distance = pulseIn(0, HIGH) / 58.00;   // 使用pulseIn函数测量超声波回波时间,计算距离值
  delay(10);                   // 延时10毫秒
  return distance;             // 返回测量的距离值
}

// page1函数,用于在SSD1306 OLED显示屏上显示距离值
void page1() {
  u8g2.setFont(u8g2_font_timR08_tf);  // 设置字体
  u8g2.setFontPosTop();               // 设置字体位置
  u8g2.setCursor(0,20);               // 设置光标位置
  u8g2.print(item);                   // 在SSD1306 OLED显示屏上打印距离值
}

void setup(){
  item = 0;                           // 初始化item变量为0
  pinMode(0, INPUT);                  // 将超声波传感器的接收引脚设为输入模式
  u8g2.setI2CAddress(0x3C*2);         // 设置SSD1306 OLED显示屏的I2C地址
  u8g2.begin();                       // 初始化SSD1306 OLED显示屏
  u8g2.enableUTF8Print();             // 启用UTF-8编码
}

void loop(){
  item = checkdistance_0_0();         // 调用checkdistance_0_0函数,测量距离并将距离值存储到item变量中

  u8g2.firstPage();                   // 显示第一页
  do
  {
    page1();                          // 在第一页上显示距离值
  }while(u8g2.nextPage());            // 显示下一页
}

这段代码是一个基于Arduino平台的程序,使用了U8g2库来控制一个SSD1306 OLED显示屏的显示。程序通过测量超声波传感器的距离来更新变量item的值,并将其显示在OLED屏幕上。

具体来说,程序的主要流程如下:

引入U8g2库和Wire库。
定义一个名为item的整型变量和一个名为u8g2的U8G2_SSD1306_128X64_NONAME_1_HW_I2C类型对象,用于控制OLED屏幕。
定义一个名为checkdistance_0_0的函数,用于测量超声波传感器的距离并返回距离值。
定义一个名为page1的函数,用于在OLED屏幕上显示item变量的值。
在setup函数中初始化程序,包括设置pin 0为输入模式、设置OLED屏幕的I2C地址、初始化OLED屏幕等。
在loop函数中,调用checkdistance_0_0函数测量距离,并将测量结果保存到item变量中,然后在OLED屏幕上显示item变量的值。
总体来说,这个程序的作用是通过超声波传感器测量距离,并将测量结果显示在OLED屏幕上。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值