登录/注册

oled/LIS3DH显示屏

更多

看到你提到 OLED/LIS3DH 显示屏组合,我理解你大概率是希望在项目中同时使用 OLED 显示屏和 LIS3DH 加速度计传感器,并将 LIS3DH 读取的数据(如倾斜角度、运动方向等)实时显示在 OLED 屏幕上。?

这两个器件是电子项目中非常常见的组合:

  1. LIS3DH: 一款由意法半导体 (STMicroelectronics) 生产的低成本、低功耗、三轴加速度计传感器(不是显示屏)。
    • 它通过 I2C 或 SPI 接口输出 X, Y, Z 三个方向的加速度数据。
    • 常用于检测倾斜、运动、振动、点击/双击等。
  2. OLED (Organic Light-Emitting Diode) 显示屏: 一种使用有机发光二极管的显示屏幕
    • 常见规格:128x64像素、128x32像素、0.96英寸或1.3英寸尺寸(最常见的是0.96英寸 128x64)。
    • 优点是:自发光(不需要背光)、高对比度、宽视角、响应速度快、可显示清晰图案和文字。
    • 接口通常是 I2C (省线) 或 SPI (速度快),接口选择会影响到代码和接线方式。

如何将两者结合使用?

  1. 硬件连接 (核心是共享 I2C 总线):

    • 选择接口: 大多数情况下,为了方便,OLED 和 LIS3DH 都选择 I2C 接口模式。它们可以共享同一个 I2C 总线(即 SCLSDA 两根线)。

    • 连线要点:

      • 将 OLED 的 VCC 连接到主控板(如 Arduino)的 3.3V5V (取决于OLED模块规格,多数5V兼容)。
      • 将 OLED 的 GND 连接到主控板的 GND
      • 将 OLED 的 SCL 连接到主控板的 I2C SCL 引脚(如 Arduino Uno/Nano 的 A5)。
      • 将 OLED 的 SDA 连接到主控板的 I2C SDA 引脚(如 Arduino Uno/Nano 的 A4)。
      • 将 LIS3DH 的 VCC 连接到 3.3V ⚠️非常重要! LIS3DH 通常工作在 2.16V - 3.6V 范围,连接到 5V 可能损坏!如果你的主控板只有 5V,需要使用电平转换器。
      • 将 LIS3DH 的 GND 连接到主控板的 GND
      • 将 LIS3DH 的 SCL 连接到主控板的 SCL (与 OLED 共享)。
      • 将 LIS3DH 的 SDA 连接到主控板的 SDA (与 OLED 共享)。
      • LIS3DH 可能需要连接 CS 引脚到高电平 (VCC) 以启用 I2C 模式(具体看模块说明)。
      • (可选) LIS3DH 的中断引脚 (INT1, INT2) 可以连接到主控板的数字输入引脚用于触发中断。
    • ? 关键点:I2C 地址冲突检查!

      • OLED I2C 地址常见为 0x3C (最普遍) 或 0x3D (当模块上有电阻配置时)。
      • LIS3DH I2C 地址取决于 SA0/SDO 引脚的电平:接地 (LOW) 时为 0x18,接电源 (HIGH) 时为 0x19
      • 必须确保 OLED 和 LIS3DH 的 I2C 地址不同(0x3C vs 0x180x19)才能同时挂在总线上! 如果不相同,配置地址即可解决冲突问题。
  2. 软件 (Arduino 示例思路):

    • 安装库:
      • OLED 库: 安装 Adafruit SSD1306Adafruit GFX Library (通过 Arduino IDE 库管理器搜索安装)。
      • LIS3DH 库: 安装 Adafruit LIS3DH 库 (通过 Arduino IDE 库管理器搜索安装)。
    • 代码流程:

      #include <Wire.h>
      #include <Adafruit_GFX.h>
      #include <Adafruit_SSD1306.h>
      #include <Adafruit_LIS3DH.h>
      #include <Adafruit_Sensor.h>
      
      // 定义OLED尺寸 (常见128x64, 128x32)
      #define SCREEN_WIDTH 128
      #define SCREEN_HEIGHT 64
      #define OLED_ADDR 0x3C // OLED的I2C地址,通常0x3C
      
      // 创建OLED对象
      Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);
      
      // 创建LIS3DH对象
      Adafruit_LIS3DH lis = Adafruit_LIS3DH(); // 使用默认地址0x18
      // 如果地址不同(0x19),需修改构造函数: Adafruit_LIS3DH lis = Adafruit_LIS3DH(0x19);
      
      void setup() {
        Serial.begin(9600);
      
        // 初始化OLED
        if(!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
          Serial.println(F("SSD1306 allocation failed"));
          for(;;); // 死循环
        }
        display.display(); // 显示Adafruit Logo
        delay(2000);       // 暂停2秒
        display.clearDisplay(); // 清除缓冲区
        display.setTextSize(1);
        display.setTextColor(SSD1306_WHITE);
        display.setCursor(0,0);
      
        // 初始化LIS3DH
        if (! lis.begin(0x18)) { // 根据实际连接的SA0/SDO引脚调整地址参数 (0x18 或 0x19)
          Serial.println("LIS3DH not found");
          display.println("LIS3DH not found!");
          display.display();
          while (1);
        }
      
        lis.setRange(LIS3DH_RANGE_4_G); // 设置量程(可选: 2_G, 4_G, 8_G, 16_G)
      
        Serial.println("LIS3DH and OLED found!");
        display.println("LIS3DH OK!");
        display.display();
        delay(1000);
        display.clearDisplay();
      }
      
      void loop() {
        // 清除显示缓冲区
        display.clearDisplay();
        display.setCursor(0,0);
      
        // 读取LIS3DH数据 (G为单位)
        sensors_event_t event;
        lis.getEvent(&event);
      
        // 在串口监视器打印
        Serial.print("X: "); Serial.print(event.acceleration.x); Serial.print("  ");
        Serial.print("Y: "); Serial.print(event.acceleration.y); Serial.print("  ");
        Serial.print("Z: "); Serial.print(event.acceleration.z); Serial.println(" m/s^2");
      
        // 在OLED上显示标题
        display.println("Accel (m/s^2):");
      
        // 在OLED上格式化显示X, Y, Z数据
        display.print("X: "); display.println(event.acceleration.x, 2); // 保留2位小数
        display.print("Y: "); display.println(event.acceleration.y, 2);
        display.print("Z: "); display.println(event.acceleration.z, 2);
      
        // 你也可以显示其他信息,比如角度或状态
        // float angleX = atan2(event.acceleration.y, event.acceleration.z) * RAD_TO_DEG;
        // display.print("Angle X: "); display.println(angleX, 1);
      
        // 将缓冲区内容发送到OLED显示
        display.display();
      
        delay(200); // 稍作延时,更新速率约为5Hz
      }

常见问题 & 解决:

总结:

OLED 和 LIS3DH 是非常适合搭配的硬件 - OLED 清晰显示数据,LIS3DH 提供实时的动态感知。使用中关键是 I2C 地址不能冲突,以及 LIS3DH 务必使用 3.3V 供电。库的使用让代码编写相对简单。

如果你需要关于具体接线图(哪个模块需要连到哪个开发板的哪个引脚?)、更高级的功能实现(如检测点击、手势或绘制图形?),或者遇到了特定错误,请告诉我你使用的开发板型号、OLED尺寸和遇到的问题细节,我很乐意继续深入探讨!?

LIS3DH的应用笔记

本文档介绍了以 LGA 封装提供的低压 3 轴数字量输出线性 MEMS 加速度计。LIS3DH 是属于 “nano” 系列的超低功耗高性能 3

2023-09-13 06:53:17

LIS3DH相关资料分享

LIS3DH 是属于 “nano” 系列的超低功耗高性能 3 轴线性加速度计,具有数字 I2C、 SPI 串行接口标准输出。器件具有超低功耗工作模式,可实现高级节能、智能睡眠唤醒以及恢复睡眠功能。

2023-09-06 08:08:49

LIS3DH地址更改配置后的问题求解

我正在使用表现出奇怪行为的 LIS3DH 分线板。我的 I2C master 是一块 STM32L496 板,已经用其他 I2C 芯片测试过。 启动I2C 初始化至 400 KHz通过

2022-12-28 11:05:15

LIS3DH高性能3轴线性加速度计应用笔记

本文档介绍了以 LGA 封装提供的低压 3 轴数字量输出线性 MEMS 加速度计。 LIS3DH 是属于 “nano” 系列的超低功耗高性能 3

资料下载 乐侨珂 2023-07-31 09:44:39

LCD、OLED液晶显示屏完整中文资料合集

LCD、OLED液晶显示屏完整中文资料合集

资料下载 ChenGuanQing 2022-01-17 09:39:48

stm32 硬件IIC使用方法说明与示例---LIS3DH的IIC通信

例子很多。这里我需要使用LIS3DH三轴加速度传感器,获取三个方向的加速度用于碰撞检测。这个是LIS3DH数据刷新速率的配置寄存器:出于某些原因,我需要达到500hz以上的数据刷新速率,所以ODR要配置成0b1000

资料下载 mintsy 2021-12-09 12:21:10

IIC通信小OLED显示屏模块资料汇总

IIC通信小OLED显示屏模块资料汇总

资料下载 jf_42320578 2021-05-20 15:38:44

1.3OLED显示屏IIC接口电路原理图免费下载

本文档的主要内容详细介绍的是1.3OLED显示屏IIC接口电路原理图免费下载。

资料下载 佚名 2019-12-20 16:41:37

LIS3DH INT1_THS设置问题

我想要做一个LIS3DH角度报警的程序 目前中断 角度值都可以实现,但是关于设置报警的角度时遇到了问题,如何设置INT1_THS寄存器都只会让角度在80-90之间进行报警,无法在自己想要的角度区间

2022-04-24 10:42:29

请问LIS3DH是否有FIFO空中断?

LIS3DH是否有FIFO空中断? #motion-sensor #accelerometer#lis3dh #fifo#lis3dh以上来自于

2019-06-04 11:40:52

在与EEPROM相同的SPI总线上使用LIS3DH,是否可能?

我打算在与SPI相同的SPI总线上使用LIS3DH。 但在数据表中,它说LIS3DH CS引脚选择SPI或I2C。 当LIS3DH CS引脚为

2019-05-31 12:27:15

LIS3DH INT2配置和功能是否与INT1不同?

嗨, 对于LIS3DH,数据表提到了两个用户可编程中断INT1和INT2。虽然为INT1列出了配置,阈值,持续时间等(INT1_CFG,INT1_SRC,INT1_THS

2019-05-30 07:26:36

LIS3DH功耗太高

我们使用10Hz的LIS3DH,具有FIFO,低功耗模式,I2C用于通信。我们测量当前的电流: - 3.6V电源,160uA - 3.0V电源,100uA - 2.3V电源60uA 数据表声称

2019-05-23 06:44:44

LIS3DH高通滤波器不工作

在工作中我使用LIS3DH加速度计来检测身体运动。它配置为+/- 2 gs,每秒50个样本,带有流式FIFO。水印可以很好地确定FIFO何时需要清空。 该规范说明所有三个XY和Z轴都可以

2019-05-22 11:18:25

LIS3DH Z输出噪音很大

我正在尝试使用LIS3DH传感器测量机器的振动。我将LIS3DH设置为低功耗模式和5.376 kHz采样频率,输出8位输出。我使用spi从传感器获取数据。我使用数据表中给出的灵敏度值将此原始输出更改

2019-05-21 13:35:00
7天热门专题 换一换
相关标签