返回
运动模式给速度表添加数字显示,并非键盘侠,而是实实在在的键盘手!
前端
2023-12-22 13:23:42
为运动模式仪表添加数字速度显示
简介
对于骑行或跑步爱好者来说,实时监测速度至关重要。传统的运动模式仪表往往只提供模拟表盘,难以精确读取速度值。本教程将指导您如何使用 Arduino Uno 开发板、HMI-28 显示屏和编码器为您的运动模式仪表添加数字速度显示,让您时刻掌握速度信息。
材料清单
- HMI-28 显示屏
- Arduino Uno 开发板
- 编码器
- 电阻器
- 连接线
- 焊接工具
硬件连接
- 将编码器连接到 Arduino Uno 开发板的 A0 和 A1 引脚。
- 将 HMI-28 显示屏连接到 Arduino Uno 开发板的 I2C 引脚。
- 在编码器和 Arduino Uno 之间连接电阻器。
软件编程
- 打开 Arduino IDE,新建一个项目。
- 复制代码段到 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;
}
- 将代码上传到 Arduino Uno 开发板。
测试
- 将运动模式仪表连接到电源。
- 旋转编码器,观察速度表上的数字是否正确显示。
结语
恭喜您成功为您的运动模式仪表添加了数字速度显示!这不仅可以让您更精确地监测速度,还能提升骑行或跑步体验的专业性和乐趣。如果您对本教程有任何疑问或想要了解更多信息,请随时留言。
常见问题解答
1. 我可以在其他运动模式仪表上使用这个方法吗?
- 是的,该方法可以适用于任何兼容 Arduino 的运动模式仪表。
2. 编码器的类型对精度有影响吗?
- 是的,编码器的类型会影响精度的精度。建议使用高质量的增量式编码器。
3. 我可以调整速度显示的单位吗?
- 是的,您可以在代码中修改速度计算公式以调整显示单位。
4. 屏幕会一直显示速度吗?
- 是的,屏幕将持续显示当前速度。
5. 这个项目适合初学者吗?
- 是的,该项目对初学者来说相对简单易行,只要您具备基本的电子和编程知识。