返回

运动模式给速度表添加数字显示,并非键盘侠,而是实实在在的键盘手!

前端

为运动模式仪表添加数字速度显示

简介

对于骑行或跑步爱好者来说,实时监测速度至关重要。传统的运动模式仪表往往只提供模拟表盘,难以精确读取速度值。本教程将指导您如何使用 Arduino Uno 开发板、HMI-28 显示屏和编码器为您的运动模式仪表添加数字速度显示,让您时刻掌握速度信息。

材料清单

  • HMI-28 显示屏
  • Arduino Uno 开发板
  • 编码器
  • 电阻器
  • 连接线
  • 焊接工具

硬件连接

  1. 将编码器连接到 Arduino Uno 开发板的 A0 和 A1 引脚。
  2. 将 HMI-28 显示屏连接到 Arduino Uno 开发板的 I2C 引脚。
  3. 在编码器和 Arduino Uno 之间连接电阻器。

软件编程

  1. 打开 Arduino IDE,新建一个项目。
  2. 复制代码段到 Arduino IDE 中:
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C 地址为 0x27,16x2 LCD 模块

int encoderPinA = A0; // 编码器引脚 A 连接到模拟引脚 A0
int encoderPinB = A1; // 编码器引脚 B 连接到模拟引脚 A1
int encoderPosition = 0; // 当前编码器位置

void setup() {
  lcd.begin(); // 初始化 LCD 显示屏
  lcd.setCursor(0, 0); // 将光标位置设置为第一列和第一行
  lcd.print("Speed:"); // 打印标签 "Speed:"
}

void loop() {
  // 读取编码器位置
  int newPosition = readEncoder();

  // 计算速度
  int speed = abs(newPosition - encoderPosition);

  // 更新编码器位置
  encoderPosition = newPosition;

  // 在 LCD 显示屏上显示速度
  lcd.setCursor(7, 0); // 将光标位置设置为第二列和第一行
  lcd.print(speed); // 打印速度值
}

int readEncoder() {
  int MSB = digitalRead(encoderPinA); // 从编码器读取 MSB
  int LSB = digitalRead(encoderPinB); // 从编码器读取 LSB

  // 计算编码器位置
  int position = (MSB << 1) | LSB; // 将 MSB 左移 1 位并与 LSB 进行 OR 运算

  // 返回编码器位置
  return position;
}
  1. 将代码上传到 Arduino Uno 开发板。

测试

  1. 将运动模式仪表连接到电源。
  2. 旋转编码器,观察速度表上的数字是否正确显示。

结语

恭喜您成功为您的运动模式仪表添加了数字速度显示!这不仅可以让您更精确地监测速度,还能提升骑行或跑步体验的专业性和乐趣。如果您对本教程有任何疑问或想要了解更多信息,请随时留言。

常见问题解答

1. 我可以在其他运动模式仪表上使用这个方法吗?

  • 是的,该方法可以适用于任何兼容 Arduino 的运动模式仪表。

2. 编码器的类型对精度有影响吗?

  • 是的,编码器的类型会影响精度的精度。建议使用高质量的增量式编码器。

3. 我可以调整速度显示的单位吗?

  • 是的,您可以在代码中修改速度计算公式以调整显示单位。

4. 屏幕会一直显示速度吗?

  • 是的,屏幕将持续显示当前速度。

5. 这个项目适合初学者吗?

  • 是的,该项目对初学者来说相对简单易行,只要您具备基本的电子和编程知识。