【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 屏幕上。
实验串口返回情况

实验串口绘图器返回情况

实验场景图 动态图



评论