模拟指针风格 POV 时钟:Arduino Nano + 17 LED + 霍尔传感器
所需元件
- Arduino Nano R3 × 1
- 直插 LED × 17(建议分 3 组颜色:时标/刻度/指针)
- 100 Ω 限流电阻 × 17
- 霍尔效应传感器(检测旋转基准)× 1
- DC 电机 + 可调电源(控制转速)
- Boost 升压模块(锂电池供电)
原理:视觉暂留 (POV)
LED 阵列随电机高速旋转,霍尔传感器检测磁铁给出每圈同步脉冲。单片机在每圈内按角度分时点亮对应 LED,人眼因视觉暂留效应看到完整模拟时钟面:外圈 60 个分钟刻度、12 个小时刻度、4 个 1/4 刻度、时/分/秒三根指针、中心圆点。
关键代码逻辑
// 16 个 LED 引脚:D2~D11, A1~A5
// 霍尔传感器:A0 (INPUT_PULLUP)
// 内部时钟:hours/minutes/seconds 变量自增
void loop() {
// 等待霍尔低电平(磁铁经过)
while (digitalRead(sensorPin) == LOW);
// 等待霍尔高电平结束(磁铁离开)
while (digitalRead(sensorPin) == HIGH);
// 一圈内 60 个角度槽位
for (int pos = 0; pos < 60; pos++) {
drawMinuteMarker(); // 每槽亮 LED16
if (pos % 5 == 0) drawHourMarker(); // 5 的倍数亮 LED14/15
if (pos % 15 == 0) drawQuarterMarker(); // 1/4 刻度亮 LED12/13
if (pos == hours*5) drawHoursHand(); // 时针 LED1~7
if (pos == minutes) drawMinutesHand(); // 分针 LED1~9
if (pos == seconds) drawSecondsHand(); // 秒针 LED1~11
delayMicroseconds(140); // 像素宽度,随转速调整
displayClear();
drawInner_Circle(); // 中心点
delayMicroseconds(600); // 像素间隙
}
}
机械调试要点
- 动平衡:电池必须置于旋转中心,否则高速震动严重。
- 转速与延迟:
delayMicroseconds(140)和600需按实际转速微调,转速快则减小,慢则增大。 - 供电:锂电池 + 升压模块给 Nano 和 LED 供电,滑环或柔性排线引出信号(霍尔信号共地即可)。
效果展示
暗室中可清晰看到模拟指针时钟,秒针平滑扫过,极具科技感。代码占用 Flash < 10 KB,RAM < 1 KB,Nano 绰绰有余。
制造工艺
- 布谷鸟钟:历史、工艺与现代演变
- 自制LUMAZOID:基于Arduino的音乐可视化灯光控制器
- Arduino POV 时钟:自制视觉暂留 LED 显示器
- 基于模拟传感器的高精度压力与气流测量装置
- 用 Arduino Nano 自制 37 灯珠轮盘赌游戏机
- 自制大尺寸LED主时钟带闹钟功能 — 12米外清晰可见
- 3D RGB Arduclock — 蓝牙控制全彩LED时钟带RTC与闹钟
- 自制 FlightGear 飞行模拟升降舵配平轮:Arduino Nano + Python UDP 桥接方案
- 互动 LED 矩阵门显:PIR 触发节日问候 + 待机特效
- Windows 10 Cortana 蓝牙控制 Arduino LED:UWP 应用开发全流程
- Arduino 8×8 LED 矩阵翻页时钟 - DIY 实时时钟项目
- 构建LED定序器:555定时器与4017计数器——分频与去抖动