亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 工业技术

Arduino Nano 自制 USB 供电 LED 风扇时钟:电路图、代码与时间校准全攻略

Arduino Nano 驱动 USB LED 扇叶时钟——电路图、源码与时间设置功能

见过迷你 USB LED 风扇时钟的视频吗?本项目教你用 Arduino Nano、霍尔传感器、电阻、电池、直流电机与 LED 复刻同款:LED 随扇叶旋转形成视觉暂留(POV)模拟指针时钟,显示时/分/秒三针及圆形表盘。亮点是可通过 USB 上传代码修改时分秒初始值,无需外部按键。

Arduino Nano 自制 USB 供电 LED 风扇时钟:电路图、代码与时间校准全攻略

元器件清单(BOM)

电路原理图与 PCB 布局

Arduino Nano 自制 USB 供电 LED 风扇时钟:电路图、代码与时间校准全攻略

制作流程

  1. 按电路尺寸裁剪 PCB 小板;
  2. 绿色 LED(LED12–16 对应 A5–A1)长脚朝左插入,焊盘侧弯脚固定;
  3. 红色 LED(LED1–11 对应 D2–D12)同法插装;
  4. 蓝色 LED17 插在绿 LED 上方(经 R17 接 A7,阴极与其他 LED 共阴,阳极经 R17 接 Arduino 5V);
  5. 所有 LED 阴极并联接地,修剪多余引脚;
  6. 电阻同法插装焊接;
  7. 按原理图焊接所有元件;
  8. 焊接 Arduino Nano 排针座;
  9. LED 共阴线接 Arduino GND;
  10. 电阻另一端按下表接 Arduino 数字/模拟口:
电阻Arduino 引脚
R1–R11D2–D12
R12–R16A1–A5

霍尔传感器接线:输出脚 → A0,VCC → 5V,GND → GND。

收尾:接电池与拨码开关(正极串联开关),整体固定在芯板上配合玩具电机旋转(高速电机改用 9–12V 供电),上传代码,拨动开关,POV 时钟即刻呈现。

核心源码(含时间设置逻辑)

代码来源:hobbyprojects

int LED1=2, LED2=3, LED3=4, LED4=5, LED5=6, LED6=7, LED7=8, LED8=9, LED9=10, LED10=11, LED11=12;
int LED12=A1, LED13=A2, LED14=A3, LED15=A4, LED16=A5;
int sensorPin=A0, minuteSensor=A7, hourSensor=A6;
unsigned int n, ADCvalue, propeller_posn;
unsigned long previousTime=0;
byte hours=12, minutes=15, seconds=0;  // 初始时间在此修改
int val;

void setup() {
  for(int i=2;i<=12;i++) pinMode(i,OUTPUT);
  for(int i=A1;i<=A5;i++) pinMode(i,OUTPUT);
  pinMode(sensorPin,INPUT_PULLUP);
  if(hours==12) hours=0;
  /* 串口调试红外传感器阈值
  Serial.begin(9600);
  while(1){
    ADCvalue=analogRead(minuteSensor); Serial.print("minuteSensor "); Serial.println(ADCvalue);
    ADCvalue=analogRead(hourSensor); Serial.print("hourSensor "); Serial.println(ADCvalue);
    Serial.println(); delay(1000);
  }
  */
}

void loop() {
  val=digitalRead(sensorPin);
  while(val==LOW) val=digitalRead(sensorPin);  // 等待霍尔传感器触发(转到基准位置)
  if(millis()>=previousTime){
    previousTime+=1000;
    if(++seconds==60){seconds=0; if(++minutes==60){minutes=0; if(++hours==12) hours=0;}}
  }
  propeller_posn=30; n=0;
  while(n<60){
    ADCvalue=analogRead(minuteSensor);
    if(ADCvalue<500){minutes=propeller_posn; seconds=0;}  // 红外遥控校时:分针
    ADCvalue=analogRead(hourSensor);
    if(ADCvalue<500){hours=propeller_posn/5; seconds=0;}  // 红外遥控校时:时针
    drawMinuteMarker();
    if(propeller_posn%5==0) drawHourMarker();
    if(propeller_posn%15==0) drawQuarterMarker();
    if(propeller_posn==hours*5 || (propeller_posn==0 && hours==0)) drawHoursHand();
    if(propeller_posn==minutes) drawMinutesHand();
    if(propeller_posn==seconds) drawSecondsHand();
    delayMicroseconds(100);  // 像素宽度,随电机转速调整
    displayClear();
    drawInner_Circle();
    delayMicroseconds(450);  // 像素间隙,随电机转速调整
    n++; propeller_posn++; if(propeller_posn==60) propeller_posn=0;
  }
  val=digitalRead(sensorPin);
  while(val==HIGH) val=digitalRead(sensorPin);  // 等待下一转霍尔信号
}

// ===== 绘图子程序 =====
void displayClear(){ for(int i=2;i<=12;i++) digitalWrite(i,LOW); for(int i=A1;i<=A5;i++) digitalWrite(i,LOW); }
void drawMinuteMarker(){ digitalWrite(LED16,HIGH); }
void drawHourMarker(){ digitalWrite(LED15,HIGH); digitalWrite(LED14,HIGH); }
void drawQuarterMarker(){ digitalWrite(LED13,HIGH); digitalWrite(LED12,HIGH); }
void drawHoursHand(){ for(int i=1;i<=7;i++) digitalWrite(i+1,HIGH); }  // LED1-7
void drawMinutesHand(){ for(int i=1;i<=9;i++) digitalWrite(i+1,HIGH); } // LED1-9
void drawSecondsHand(){ for(int i=1;i<=11;i++) digitalWrite(i+1,HIGH); } // LED1-11
void drawInner_Circle(){ digitalWrite(LED1,HIGH); delayMicroseconds(30); digitalWrite(LED1,LOW); }

红外遥控校时功能扩展(可选)

接收端增补元件:R19=R20=10kΩ,两只 IR 接收管(分别置于 LED13 附近对应分针、LED16 附近对应时针)。公共端接地,上拉电阻接 5V,信号线分别接 A7、A6。

Arduino Nano 自制 USB 供电 LED 风扇时钟:电路图、代码与时间校准全攻略

发射端(简易遥控器):9V 电池 + IR 发射管 + 1kΩ 电阻 + 轻触开关串联。

校时逻辑(已集成在主循环中):


ADCvalue = analogRead(minuteSensor);
if(ADCvalue < 500) { minutes = propeller_posn; seconds = 0; }
ADCvalue = analogRead(hourSensor);
if(ADCvalue < 500) { hours = propeller_posn/5; seconds = 0; }

操作:对准分针标记按遥控器 → 设定分钟;对准时针标记按遥控器 → 设定小时。串口监视器观察 ADC 阈值(环境光 >500,IR 照射 <500),可按实测调整判断阈值。

视频演示:[视频链接]

资源:成品购买链接、套件元件包、Arduino Nano 选购

工业技术

  1. Arduino POV 时钟:自制视觉暂留 LED 显示器
  2. 自制大尺寸LED主时钟带闹钟功能 — 12米外清晰可见
  3. Arduino 井字棋游戏:MAX7219 点阵屏 + 纸板外壳 DIY
  4. 从零构建智能 Arduino 四足机器人:完整指南
  5. 使用 SparkFun 7 段数码管构建可靠的 Arduino 倒计时器
  6. Arduino 8×8 LED 矩阵翻页时钟 - DIY 实时时钟项目
  7. 自制 Arduino 遥控保时捷赛车:从改装底盘到手机 App 控制全攻略
  8. DIY Arduino USB 触控板 —— 将废旧笔记本触控板改造为现代输入设备
  9. Arduino Nano 与 TCS3200 传感器实现物体颜色检测
  10. Arduino 实时时钟 LED 时钟:六位数码管精准计时制作指南
  11. 构建LED定序器:555定时器与4017计数器——分频与去抖动
  12. 专业LED夜灯电路图:230V/50Hz或110V/60Hz市电直驱设计