
先来几张图


材料
arduino nano(仿制版)、DS3231模块、type-c母座、3528封装的ws2812b、透明刻字亚克力板、不透明亚克力底板、玻纤万用板、嘉立创白嫖的PCB、自喷漆、螺丝螺母铜柱等等。。。
显示原理
这个原理很简单,通过DS3231(不建议DS1302,没有温度补偿,误差挺大的)获取当前时间,然后点亮ws2812b灯,照亮灯上的亚克力板,显示一位数字
过程

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


焊接led要注意,这个封装的ws2812b非常容易虚焊啊啊啊,一开始我还以为led坏了= =
还有这个排针要反过来焊,3d预览图上的排针方向不对
只有左上角的三个引脚有实际作用,其他的都是用来固定在下面的玻纤板上用的
线路连接:
DS3231引脚 | Arduino引脚 |
SCL | A5 |
SDA | A4 |
VCC | 5V |
GND | GND |
时钟数字模块引脚 | Arduino引脚 |
“时”的十位的D | D12 |
“时”的个位的D | D11 |
“分”的十位的D | D10 |
“分”的个位的D | D9 |
5V | 5V |
GND | GND |
因为这块仿制的Arduino Nano只有上古的MINI USB接口,所以我们可以外接一个Type-c母座来供电。只需要用到Type-c母座的供电功能就好了
Type-c母座 | Arduino引脚 |
VCC | VIN |
GND | GND |
给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);
}