使用Arduino Nano制作一个好看的时钟

%title插图%num

先来几张图

%title插图%num
%title插图%num

材料

arduino nano(仿制版)、DS3231模块、type-c母座、3528封装的ws2812b、透明刻字亚克力板、不透明亚克力底板、玻纤万用板、嘉立创白嫖的PCB、自喷漆、螺丝螺母铜柱等等。。。

显示原理

这个原理很简单,通过DS3231(不建议DS1302,没有温度补偿,误差挺大的)获取当前时间,然后点亮ws2812b灯,照亮灯上的亚克力板,显示一位数字

过程

%title插图%num
其中数字亚克力板7cm x 4cm大小;用来卡住数字的黑色亚克力板要根据PCB的设计画CAD图形,但是那个文件已经删了。。

安装刻有数字的亚克力板要注意,如果下面卡住它的底板的开槽设计的太宽,会卡不住,需要用502固定一下。同时注意数字不要像我一样刻的这么宽,找个细一点的字体去定制,不然显示效果不好

%title插图%num
立创eda做的led底板,没有铺铜。。
%title插图%num
底座的3d预览

焊接led要注意,这个封装的ws2812b非常容易虚焊啊啊啊,一开始我还以为led坏了= =

还有这个排针要反过来焊,3d预览图上的排针方向不对

只有左上角的三个引脚有实际作用,其他的都是用来固定在下面的玻纤板上用的

线路连接:

DS3231引脚Arduino引脚
SCLA5
SDAA4
VCC5V
GNDGND
时钟数字模块引脚Arduino引脚
“时”的十位的DD12
“时”的个位的DD11
“分”的十位的DD10
“分”的个位的DD9
5V5V
GNDGND

因为这块仿制的Arduino Nano只有上古的MINI USB接口,所以我们可以外接一个Type-c母座来供电。只需要用到Type-c母座的供电功能就好了

Type-c母座Arduino引脚
VCCVIN
GNDGND

给Arduino上传如下代码(需要用到FastLED库和uRTCLib库):

#include <FastLED.h>
#include "Arduino.h"
#include "uRTCLib.h"
uRTCLib rtc(0x68);
CRGB led1[11];
CRGB led2[11];
CRGB led3[11];
CRGB led4[11];
void setup() {
  Serial.begin(9600);
  URTCLIB_WIRE.begin();
  FastLED.addLeds<WS2812, 12, GRB>(led1, 10);
  FastLED.addLeds<WS2812, 11, GRB>(led2, 10);
  FastLED.addLeds<WS2812, 10, GRB>(led3, 10);
  FastLED.addLeds<WS2812, 9, GRB>(led4, 10);
}
void loop() {

  rtc.refresh();
  for(int i=0;i<10;i++){
    led1[i]=CRGB ( 0, 0, 0);
    led2[i]=CRGB ( 0, 0, 0);
    led3[i]=CRGB ( 0, 0, 0);
    led4[i]=CRGB ( 0, 0, 0);
    //重置所有led的颜色
  }
  int hour=rtc.hour();
  int minute=rtc.minute();
  Serial.println(hour);

  led1[11]=CRGB ( 255, 25, 122);//设置led颜色。也可以做成颜色渐变,但是懒(

  led1[int(hour/10)]=led1[11];//显示小时的十位
  led2[hour%10]=led1[11];//显示小时的个位
  led3[int(minute/10)]=led1[11];//显示分钟的十位
  led4[minute%10]=led1[11];//显示分钟的个位
  FastLED.show();
  delay(1000);
}

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注