回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页

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

头像 驴友花雕 2025.05.12 8 0

0-.jpg
02.jpg
05--.jpg

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

实验模块接线示意图

10-1.jpg

【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 屏幕上。


实验串口返回情况

10-2.jpg

实验串口绘图器返回情况

10-3.jpg

实验场景图 动态图

10-4 (1).jpg
10-4 (2).jpg
00127.gif

评论

user-avatar
icon 他的勋章
    展开更多