0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

LED像素时钟DIY图解

454398 来源:工程师吴畏 2019-08-20 10:32 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

第1步:收集材料和工具。

LED像素时钟DIY图解

组件。

这个项目建立在我当地DIY商店的吱吱爱好板上。该板尺寸为850mm宽,500mm高,18mm深。

本项目中使用的LED为5050 WS2812b,安装在圆形PCB上,直径约9mm,后面有焊盘。

《我正在使用Arduino Pro Mini兼容的微控制器。它的5V 16 MHZ版本。我之所以选择这款产品,是因为它具有超薄设计,小尺寸和所有必需的端口以及未来升级的备用空间。它也是5伏特,所以我可以使用单个电源为LED,微控制器和RTC

时间保持由具有DS3231芯片的RTC(实时时钟)模块负责。这个芯片非常准确,所以时间不应该漂移太多。

也使用:

电线。焊锡和热胶。

工具:

电钻和木钻头(10mm和5mm)

烙铁

热胶枪

电线狙击

Dremel和插入式路由器配件

第2步:标记,钻孔和布线

钻井

使用海峡边缘通过从对角处画一条线来找到板的中心

使用一根绳子和一支笔标记3个圆圈。最外面的圆圈距离板边缘约20mm,另外两条线距离最后一条线15mm。

我使用一个印刷的钟面来帮助我在内线的外部2行和小时上标出每个分钟和秒的位置。

每小时,分钟和秒钟钻出约5毫米深的10毫米孔。

使用5毫米钻头在板上打小时,分钟和秒钟。

路由

虽然这一步骤不是必需的,但它可以让时钟与墙壁齐平。

使用路由器和圆形导轨在电路板上布线线路

Mark将RTC和微控制器的凹槽输出并布线。

将通道从外线布线到凹槽中以便接线

步骤3:如此多的士兵,切割和剥离。

下一部分比说起来容易得多。我的建议是注意赶紧。尝试找到一个系统并进入一个节奏。

每个LED需要5伏输入,5伏输出,数据输入,数据输出,接地和接地。包括微控制器和RTC的电源,其400多根电线,两端均剥离和焊接。

粘性蓝色物质对此步骤非常有用。

I首先将2个LED放在彼此相邻的孔中,以计算出相互连接所需的导线长度。

使用第一根导线作为导向,然后切割60根每根彩色导线。

从每根导线的末端剥去2毫米的套管,并用焊料将它们焊接。

在每个LED焊盘上焊接一小滴焊料。

将导线焊接到LED上,形成两条60分钟和几秒钟的链条,以及一条12小时的链条。我用红线表示5V,黄色表示数据,蓝色表示接地。

注意将每个数据输出(DOUT)连接到下一个LED的数据输入(DIN)

每个链中的最后一个LED不需要数据输出线。

一旦完成所有链条,最好在安装它们之前测试它们。我用我的Arduino UNO和Adafruit NeoPixel Strand Test来确认每个LED都在工作。

将更长的导线焊接到每个链上,用于5V,接地和数据输入。

此时应该有五条5v线,三根数据线连接到Arduino Pro Mini和5地线。

从5v导线末端剥离5mm并将它们全部焊接在一起并重复接地线。

完成三个链条后,将一根5V导线焊接到Arduino Pro Mini的RAW引脚上,也可以放在RTC的VCC引脚上。接地线连接到Arduino Pro Mini和RTC上的GND,再接下来两条线:

SCL 从RTC到Pro Mini上的 A5

SDA f 将RTC转换为 A4 o n Pro Mini

来自 LED的数据线应该连接到:

秒》 - 数字Pin 3 。

分钟 - 数字 Pin 4

小时 - 数字 第5针

第4步:安装

焊接后,将LED安装在孔中应该是直线的。需要安装LED,因此当代码设置为正面时,数据在逆时针方向运行,因为代码设置在前面。

我使用了少量的热胶将它们固定下来希望能够在将来发生故障时更换单个LED。

我还使用热胶来保持所有电线整洁,并将桶形连接器固定到电路板上。

有许多arduino pro mini编程指南可供使用。我使用外部USB到串行转换器方法将此代码加载到Arduino上:

此代码还将RTC上的时间设置为编译时。因此,重要的是只需上传按钮,以便它尽快符合并上传。

这些代码的大部分都来自Andy Doro的NeoPixel Ring Clock。一些来自Adafruit NeoPixel Strand Test和一些我放在一起。

您需要安装一些库。它们可以从Arduino软件的Libraries Manager获得。

用于ws2812b LED的Adafruit NeoPixel

用于通过I2C与RTC通信的线路(这是作为标准内置的)

和RTClib知道询问RTC的内容

/**************************************************************************

* *

NeoPixel Ring Clock

by Andy Doro (mail@andydoro.com)

http://andydoro.com/ringclock/

* *

**************************************************************************

Revision History

Date By What

20140320 AFD First draft

20160105 AFD Faded arcs

20160916 AFD Trinket compatible

20170727 AFD added STARTPIXEL for 3D enclosure, variable starting point, added automatic DST support

20180424 AFD using DST library https://github.com/andydoro/DST_RTC

*

/ include the library code:

#include

#include

#include

// define pins

#define SECPIN 3

#define MINPIN 4

#define HOUPIN 5

#define BRIGHTNESS 20 // set max brightness

#define r 10

#define g 10

#define b 10

RTC_DS3231 rtc; // Establish clock object

Adafruit_NeoPixel stripS = Adafruit_NeoPixel(60, SECPIN, NEO_GRB + NEO_KHZ800); // strip object

Adafruit_NeoPixel stripM = Adafruit_NeoPixel(60, MINPIN, NEO_GRB + NEO_KHZ800); // strip object

Adafruit_NeoPixel stripH = Adafruit_NeoPixel(24, HOUPIN, NEO_GRB + NEO_KHZ800); // strip object

byte pixelColorRed, pixelColorGreen, pixelColorBlue; // holds color values

void setup () {

Wire.begin(); // Begin I2C

rtc.begin(); // begin clock

Serial.begin(9600);

// set pinmodes

pinMode(SECPIN, OUTPUT);

pinMode(MINPIN, OUTPUT);

pinMode(HOUPIN, OUTPUT);

if (rtc.lostPower()) {

Serial.println(“RTC lost power, lets set the time!”);

// following line sets the RTC to the date & time this sketch was compiled

rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

// This line sets the RTC with an explicit date & time, for example to set

// January 21, 2014 at 3am you would call:

// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));

}

stripS.begin();

stripM.begin();

stripH.begin();

//strip.show(); // Initialize all pixels to ‘off’

// startup sequence

delay(500);

colorWipeS(stripS.Color(0, g, 0), 5); // Blue

colorWipeM(stripM.Color(r, 0, 0), 5); // Blue

colorWipeH(stripH.Color(0, 0, b), 50); // Blue

delay(1000);

DateTime theTime = rtc.now(); // takes into account DST

byte secondval = theTime.second(); // get seconds

byte minuteval = theTime.minute(); // get minutes

int hourval = theTime.hour();

hourval = hourval % 12; // This clock is 12 hour, if 13-23, convert to 0-11`

for (uint16_t i = 0; i 《 secondval ; i++) {

stripS.setPixelColor(i, 0,0,b);

stripS.show();

delay(5);

}

for (uint16_t i = 0; i 《 minuteval ; i++) {

stripM.setPixelColor(i, 0,g,0);

stripM.show();

delay(5);

}

for (uint16_t i = 0; i 《 hourval ; i++) {

stripH.setPixelColor(i, r,0,0);

stripH.show();

delay(5);

}

}

void loop () {

// get time

DateTime theTime = rtc.now(); // takes into account DST

byte secondval = theTime.second(); // get seconds

byte minuteval = theTime.minute(); // get minutes

int hourval = theTime.hour(); // get hours

hourval = hourval % 12; // This clock is 12 hour, if 13-23, convert to 0-11`

stripS.setPixelColor(secondval, 0,0,20);

stripS.show();

delay(10);

if (secondval ==59 ) {

for (uint8_t i = stripS.numPixels(); i 》 0; i--) {

stripS.setPixelColor(i, 0,g,0);

stripS.show();

delay(16);}

}

stripM.setPixelColor(minuteval, 0,g,0);

stripM.show();

delay(10);

if (secondval ==59 && minuteval == 59) {

for (uint8_t i = stripM.numPixels(); i 》 0; i--) {

stripM.setPixelColor(i, r,0,0);

stripM.show();

delay(16);}

}

stripH.setPixelColor(hourval, r,0,0);

stripH.show();

delay(10);

if (secondval == 59 && minuteval == 59 && hourval == 11) {

for (uint8_t i = stripH.numPixels(); i 》 0; i--) {

stripH.setPixelColor(i, 0,0,b);

stripH.show();

delay(83);}

}

// for serial debugging

Serial.print(hourval, DEC);

Serial.print(‘:’);

Serial.print(minuteval, DEC);

Serial.print(‘:’);

Serial.println(secondval, DEC);

}

// Fill the dots one after the other with a color

void colorWipeS(uint32_t c, uint8_t wait) {

for (uint16_t i = 0; i 《 stripS.numPixels(); i++) {

stripS.setPixelColor(i, c);

stripS.show();

delay(wait);

}

}

void colorWipeM(uint32_t c, uint8_t wait) {

for (uint16_t i = 0; i 《 stripM.numPixels(); i++) {

stripM.setPixelColor(i, c);

stripM.show();

delay(wait);

}

}

void colorWipeH(uint32_t c, uint8_t wait) {

for (uint16_t i = 0; i 《 stripH.numPixels(); i++) {

stripH.setPixelColor(i, c);

stripH.show();

delay(wait);

}

}

步骤5:最后的接触

现在应该留下的只是将RTC和微控制器固定在凹槽中。

我已经将RTC电池安装在一边,这样我就可以轻松如果需要,请更换电池。

将5v电线连接到连接器的+侧,将接地连接到 - 侧

将电源连接起来!

我已经连接到USB电池组,但USB手机充电器也可以正常工作。

注意:

LED的亮度设置在代码中。它被设置为低电平以保持低电流。在所有LED点亮的全亮度下,它可以汲取近8安培。当前设置小于1.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • led
    led
    +关注

    关注

    244

    文章

    24779

    浏览量

    693393
  • 时钟
    +关注

    关注

    11

    文章

    2005

    浏览量

    135395
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    图解芯技术 | RISC-V 同构融合计算

    图解芯技术 | RISC-V 同构融合计算
    的头像 发表于 05-20 18:04 95次阅读
    <b class='flag-5'>图解</b>芯技术 | RISC-V 同构融合计算

    基于STM32F103+ESP01S的复古桌面辉光管时钟开源项目介绍

    作为电子 DIY 爱好者,一直觉得市面上辉光管时钟的方案有些单一:要么是无 WiFi 功能的纯 STM32 设计,时间容易偏差;要么依赖 ESP32 主控,少了些单片机开发的专属体验。于是决定自己
    的头像 发表于 04-14 15:15 483次阅读
    基于STM32F103+ESP01S的复古桌面辉光管<b class='flag-5'>时钟</b>开源项目介绍

    IEEE1588从时钟模块 ptp时钟源 1588V2时钟发货视频

    时钟模块
    jf_47371611
    发布于 :2026年04月08日 16:41:29

    TRCX应用:OLED 像素模拟及电容提取

    1. 摘要 由于驱动TFT的迁移率和阈值电压的不均匀性,需要在OLED中进行OLED像素电路的补偿和先进的驱动技术。此外,电容的计算对于提高像素电路的补偿精度至关重要,因为现代OLED使用了更多
    发表于 04-07 08:20

    用 1024 颗 LED 点亮像素创意!涂鸦 T5 AI 像素屏方案,高密度·高兼容·全开源

    (Tuya-T5-Pixels)基于TuyaOpen开源框架打造,采用32x32LED像素矩阵(1024颗WS2812RGBLED),搭配高性能涂鸦T5Wi-Fi/蓝牙芯片模组,
    的头像 发表于 01-29 18:11 538次阅读
    用 1024 颗 <b class='flag-5'>LED</b> 点亮<b class='flag-5'>像素</b>创意!涂鸦 T5 AI <b class='flag-5'>像素</b>屏方案,高密度·高兼容·全开源

    涂鸦 On-App AI 像素屏图像生成方案,移动端本地图像秒级生成!

    像素屏这个“小而美”的世界里,一张好图和有趣的体验,往往决定了用户是否会为产品买单。无论是车载屏、桌面时钟,还是儿童创意像素板、智能家居辅助显示屏等,这些智能设备上的像素屏正在迅速成
    的头像 发表于 12-11 18:04 1235次阅读
    涂鸦 On-App AI <b class='flag-5'>像素</b>屏图像生成方案,移动端本地图像秒级生成!

    ‌NCV78343像素控制器技术解析与应用指南

    安森美 NCV78343汽车(前)照明单芯片像素控制器是一款单芯片像素控制器,带控制串联LED灯串中单个LED的嵌入式开关。安森美 NCV78343设计用于汽车动态照明应用,特别是
    的头像 发表于 11-26 09:57 1002次阅读
    ‌NCV78343<b class='flag-5'>像素</b>控制器技术解析与应用指南

    铁路时钟系统介绍、时钟系统、授时服务器

    时钟系统
    西安同步电子科技有限公司
    发布于 :2025年11月12日 17:39:23

    手搓DIY的直流LISN能用吗?

    手搓DIY的直流LISN能用吗?
    的头像 发表于 11-11 11:34 542次阅读
    手搓<b class='flag-5'>DIY</b>的直流LISN能用吗?

    指针式时钟 单面网络子钟

    时钟
    jf_47371611
    发布于 :2025年09月12日 13:38:52

    ‌基于TLC6984 LED驱动器的微间距LED显示技术解析

    ×16和32×32 RGB LED像素外,三个TLC6984能够驱动48×48 RGB LED像素,堆叠四个TLC984能够驱动64×64 RGB
    的头像 发表于 09-04 10:23 967次阅读
    ‌基于TLC6984 <b class='flag-5'>LED</b>驱动器的微间距<b class='flag-5'>LED</b>显示技术解析

    TLC6983EVM LED矩阵驱动评估模块技术解析

    恒流源和16个扫描FET。单个TLC6983可以驱动16 x 16 RGB LED像素,两个TLC6983堆叠后可以驱动32 x 32 RGB LED像素。Texas Instrume
    的头像 发表于 08-26 11:15 1269次阅读
    TLC6983EVM <b class='flag-5'>LED</b>矩阵驱动评估模块技术解析

    ‌TLC6984 LED显示驱动芯片技术文档总结

    该TLC6984是一款高度集成的共阴极矩阵LED显示驱动器,具有48个恒流源和16个扫描FET。除了TLC6983驱动16个×16和32个×32个RGB LED像素外,三个TLC6984能够驱动48
    的头像 发表于 08-22 10:06 1451次阅读
    ‌TLC6984 <b class='flag-5'>LED</b>显示驱动芯片技术文档总结

    图解单片机功能与应用(完整版)

    从基础知识的介绍出发,图文并茂,直观、系统地介绍了单片机的内部结构、工作原理和应用技巧。全书分为10章,内容包括51单片机编程资源图解、51单片机指令系统图解、汇编语言程序设计图解、输入/输出
    发表于 06-16 16:52

    TRCX应用:OLED 像素模拟及电容提取

    1. 摘要 由于驱动TFT的迁移率和阈值电压的不均匀性,需要在OLED中进行OLED像素电路的补偿和先进的驱动技术。此外,电容的计算对于提高像素电路的补偿精度至关重要,因为现代OLED使用了更多
    发表于 05-28 08:43