【花雕学编程】Arduino动手做(239)---GY-61 ADXL335使用 OLED 显示屏显示实时运动状态

在这里插入图片描述

《Arduino 手册(思路与案例)》栏目介绍:
在电子制作与智能控制的应用领域:广泛涉及了Arduino BLDC、Arduino CNC、Arduino ESP32 SPP、Arduino FreeRTOS、Arduino FOC、Arduino GRBL、Arduino HTTP、Arduino HUB75、Arduino IoT Cloud、Arduino JSON、Arduino LCD、Arduino OLED、Arduino LVGL、Arduino PID 及 Arduino TFT 等方面的相关拓展思路和众多参考案例。本专栏目前博客近2300篇。
https://blog.csdn.net/weixin_41659040/category_12422453.html

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手试试多做实验,不管成功与否,都会记录下来——小小的进步或是搞不掂的问题,希望能够抛砖引玉。

**【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百三十九:GY-61 ADXL335 模拟量加速度模块 倾斜角度三轴加速度传感器模块 **

在这里插入图片描述
在这里插入图片描述

ADXL335 概述
ADXL335 是一款由美国模拟器件公司(ADI)推出的低成本、小尺寸、低功耗的三轴加速度传感器。ADXL335 是一款小尺寸、薄型、低功耗、完整的三轴加速度计,提供经过信号调理的电压输出,能以最小±3 g 的满量程范围测量加速度。它可以测量倾斜检测应用中的静态重力加速度,以及运动、冲击或振动导致的动态加速度。用户使用 CX、CY和 CZ引脚上的电容 XOUT、YOUT和 ZOUT选择该加速度计的带宽。可以根据应用选择合适的带宽,X 轴和 Y 轴的带宽范围为 0.5 Hz 至 1600 Hz,Z 轴的带宽范围为0.5 Hz 至 550 Hz。ADXL335 提供小尺寸、薄型、16 引脚、4 mm × 4 mm × 1.45 mm 塑料引脚架构芯片级封装(LFCSP_LQ)。

1、主要特点
测量范围:可测量三个轴向(X、Y、Z)的加速度,每个轴的测量范围为 ±3g。
高灵敏度:具有较高的灵敏度,能精确检测到微小的加速度变化,典型灵敏度为 250mV/g,这使得它可以感知到非常小的运动或振动。
低功耗:工作电流低,通常在 2.3mA 左右,适合电池供电的设备,有助于延长设备的电池续航时间。
小尺寸:采用小型的 LCC 表面贴装封装形式,尺寸仅为 5mm×5mm×2mm,便于集成到各种小型化的产品中。
模拟输出:提供与加速度成正比的模拟电压输出,方便与微控制器、放大器等其他模拟电路接口,易于信号处理和转换。

2、工作原理
基于微机电系统(MEMS)技术,利用内部的可动质量块在加速度作用下产生位移,通过检测电容变化来测量加速度。当有加速度作用于传感器时,质量块会产生相应的位移,导致电容值发生变化,经过内部的信号处理电路将电容变化转换为与加速度成正比的模拟电压输出。

3、应用领域
(1)消费电子:常用于手机、平板电脑、游戏机等设备中,实现屏幕自动旋转、运动游戏控制、跌落检测等功能。例如,在手机中,ADXL335 可以检测手机的方向变化,从而自动切换屏幕显示方向,提供更好的用户体验。
(2)汽车电子:可应用于汽车的安全气囊触发、车辆姿态监测、轮胎压力监测系统等。比如,在安全气囊系统中,ADXL335 能够实时监测车辆的加速度变化,当检测到碰撞等突发情况时,及时触发安全气囊弹出,保护乘客安全。
(3)工业监测:用于工业设备的振动监测、故障诊断以及机器人的运动控制等方面。通过监测设备的振动情况,ADXL335 可以帮助工程师及时发现设备的异常运行状态,提前进行维护和维修,减少设备停机时间和维修成本。
(4)医疗设备:在一些可穿戴式医疗设备和便携式医疗仪器中,用于监测人体的运动状态、姿态变化等,辅助医疗诊断和康复治疗。例如,在康复训练设备中,ADXL335 可以监测患者的肢体运动情况,为医生提供数据支持,评估康复效果。

在这里插入图片描述

在这里插入图片描述

实验模块接线示意图

在这里插入图片描述
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百三十九:GY-61 ADXL335模拟量加速度模块 倾斜角度三轴加速度传感器
项目之六:使用 OLED 显示屏显示实时运动状态

实验模块接线示意图
在这里插入图片描述
【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
实验二百三十九:GY-61 ADXL335模拟量加速度模块 倾斜角度三轴加速度传感器
项目之六:使用 OLED 显示屏显示实时运动状态

实验开源代码

/*
  【Arduino】189种传感器模块系列实验(资料代码+仿真编程+图形编程)
  实验二百三十九:GY-61 ADXL335模拟量加速度模块 倾斜角度三轴加速度传感器
  项目之六:使用 OLED 显示屏显示实时运动状态
*/

#include "Arduino.h"
#include "U8g2lib.h"
#include "Wire.h"

#define X_PIN A0  // 加速度计 X 轴输入
#define Y_PIN A1  // 加速度计 Y 轴输入
#define Z_PIN A2  // 加速度计 Z 轴输入

U8G2_SSD1306_128X64_NONAME_F_HW_I2C oled(U8G2_R0, U8X8_PIN_NONE);  // OLED 显示对象

void setup() {
    Wire.begin();           // 启动 I2C
    Serial.begin(115200);   // 初始化串口
    oled.begin();           // 初始化 OLED
    oled.setFont(u8g2_font_ncenB18_tr);  // 设置字体
}

void loop() {  
    int xRaw = analogRead(X_PIN);
    int yRaw = analogRead(Y_PIN);
    int zRaw = analogRead(Z_PIN);

    const float SCALE = 102.3;  // 灵敏度 330mV/g 转换因子
    float xAcc = ((float)xRaw - 331.5) / 65 * 9.8;
    float yAcc = ((float)yRaw - 329.5) / 68.5 * 9.8;
    float zAcc = ((float)zRaw - 340) / 68 * 9.8;

    // 串口输出格式化加速度数据
    Serial.print("X: ");
    Serial.print(xAcc, 2);
    Serial.print(" m/s² | Y: ");
    Serial.print(yAcc, 2);
    Serial.print(" m/s² | Z: ");
    Serial.println(zAcc, 2);

    // 在 OLED 显示加速度数据
    oledDisplayAcceleration(xAcc, yAcc, zAcc);

    delay(200);  // 适当延迟防止频繁刷新
}

/*****************************************************************************************************
 * 在 OLED 显示加速度数据
 *****************************************************************************************************/
void oledDisplayAcceleration(float x, float y, float z) {
    oled.firstPage();
    do {
        oled.setCursor(2, 20);
        oled.print("X: ");
        oled.print(x, 2);

        oled.setCursor(2, 40);
        oled.print("Y: ");
        oled.print(y, 2);

        oled.setCursor(2, 60);
        oled.print("Z: ");
        oled.print(z, 2);
    } while (oled.nextPage());
}

代码简单解读

这段代码使用 ADXL335 加速度传感器 通过 Arduino 采集 X、Y、Z 轴加速度数据,并使用 OLED 显示屏 显示实时运动状态,核心逻辑如下:

  1. 传感器数据采集
    ✅ analogRead(X_PIN); → 读取 X 轴模拟输入
    ✅ analogRead(Y_PIN); → 读取 Y 轴模拟输入
    ✅ analogRead(Z_PIN); → 读取 Z 轴模拟输入
    ✅ 将原始 ADC 值转换为加速度(单位:m/s²)

  2. 串口输出
    ✅ Serial.print(); → 格式化并输出 X、Y、Z 轴加速度
    ✅ 确保单位为 m/s²,提高数据可读性

  3. OLED 显示
    ✅ 使用 oledDisplayAcceleration(xAcc, yAcc, zAcc); 显示数据
    ✅ 优化文字排版,确保信息清晰可见

  4. 采集间隔
    ✅ delay(200); → 适当延迟,防止 OLED 频繁刷新

这段代码让 Arduino 读取加速度数据,并实时显示在 OLED 屏幕上。

实验串口返回情况

在这里插入图片描述

实验串口绘图器返回情况

在这里插入图片描述
实验场景图 动态图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值