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
    +关注

    关注

    237

    文章

    22418

    浏览量

    645781
  • 时钟
    +关注

    关注

    10

    文章

    1479

    浏览量

    130295
收藏 人收藏

    评论

    相关推荐

    酷虎CUHUB说:LED 显示屏的像素

    全彩 LED 显示屏因为要表现出多种多样的色彩, 因此需要能表现从黑色到白色之间的不同色彩。 因此全彩 LED 显示屏需要红、 绿、 蓝 3 颗灯一起构成一个像素, 才能表现出多种多样的色彩。 全彩
    的头像 发表于 04-18 11:23 24次阅读
    酷虎CUHUB说:<b class='flag-5'>LED</b> 显示屏的<b class='flag-5'>像素</b>

    像素流送如何应用在虚拟展会?

    芯片像素
    dianliang02
    发布于 :2023年12月13日 15:58:30

    什么是像素流送?像素流送如何应用?

    芯片像素
    dianliang02
    发布于 :2023年12月13日 15:56:04

    虚拟像素技术对LED直显的作用

    虚拟像素(动态像素)技术的广泛引入,更是引发了行业对LED直显未来发展趋势的重新审视:对此,行业专家表示,LED微间距直显的性能、技术与经济性“不可能三角”的破解,似乎找到了新方向。
    发表于 11-28 10:12 201次阅读
    虚拟<b class='flag-5'>像素</b>技术对<b class='flag-5'>LED</b>直显的作用

    DIY动手组装LED电子显示屏

    电子发烧友网站提供《DIY动手组装LED电子显示屏.doc》资料免费下载
    发表于 10-27 11:52 3次下载
    <b class='flag-5'>DIY</b>动手组装<b class='flag-5'>LED</b>电子显示屏

    DIY自制基于51单片机的LED金字塔

    电子发烧友网站提供《DIY自制基于51单片机的LED金字塔.pdf》资料免费下载
    发表于 10-25 10:27 0次下载
    <b class='flag-5'>DIY</b>自制基于51单片机的<b class='flag-5'>LED</b>金字塔

    炫酷好玩的像素时钟&amp;amp;音乐频谱,合宙ESP32-C3开发板创意DIY分享

    分享@亚里士不可得大佬的开源佳作——使用合宙ESP32-C3开发板自制像素时钟&音乐频谱。在变幻的时间和跳跃的频谱中,开启属于你的秋日浪漫……像素时钟&音乐频谱开源分
    的头像 发表于 10-21 08:04 478次阅读
    炫酷好玩的<b class='flag-5'>像素</b><b class='flag-5'>时钟</b>&amp;amp;音乐频谱,合宙ESP32-C3开发板创意<b class='flag-5'>DIY</b>分享

    快来!炫酷好玩的像素时钟&amp;音乐频谱,合宙ESP32-C3开发板创意DIY分享

    ,还要特别 分享 @ 亚里士不可得 大佬 的开源佳作—— 使用合宙ESP32-C3开发板自制 像素时钟音乐频谱。 在变幻的时间和跳跃的频谱中,开启属于你的秋日浪漫…… 像素时钟音乐频谱
    的头像 发表于 10-20 14:55 804次阅读
    快来!炫酷好玩的<b class='flag-5'>像素</b><b class='flag-5'>时钟</b>&amp;音乐频谱,合宙ESP32-C3开发板创意<b class='flag-5'>DIY</b>分享

    制作RGB HexMatrix物联网时钟

    HexMatrix是具有许多三角形像素LED矩阵。六个像素组合成一个六边形。FastLED库的矩阵上可以显示许多不同的动画。我还设计了0到9的数字,并为矩阵中的每个数字使用了10个段,并制作了一个IOT
    发表于 09-25 06:58

    什么是LED显示屏点间距、像素密度?

    点间距是全彩LED显示屏的一个重要的技术参数指标之一,什么是点间距呢?如何依据点间距来选全彩LED显示屏?这是很多朋友的疑问,以下是对此的一一解答: 什么是点间距? 点间距是相邻两个像素点之间的距离
    的头像 发表于 06-30 15:52 1588次阅读
    什么是<b class='flag-5'>LED</b>显示屏点间距、<b class='flag-5'>像素</b>密度?

    DIY LED消防灯

    电子发烧友网站提供《DIY LED消防灯.zip》资料免费下载
    发表于 06-30 11:32 0次下载
    <b class='flag-5'>DIY</b> <b class='flag-5'>LED</b>消防灯

    DIY Arduino IN-1数码管时钟

    电子发烧友网站提供《DIY Arduino IN-1数码管时钟.zip》资料免费下载
    发表于 06-26 10:39 0次下载
    <b class='flag-5'>DIY</b> Arduino IN-1数码管<b class='flag-5'>时钟</b>

    华灿Micro LED像素器件批量交付

    近日,华灿光电向国内龙头显示企业完成小批量Micro LED像素器件交付,预计于近期完成加量交付。
    发表于 06-25 14:17 193次阅读

    带有集成LED矩阵的DIY蓝牙扬声器

    电子发烧友网站提供《带有集成LED矩阵的DIY蓝牙扬声器.zip》资料免费下载
    发表于 06-25 11:35 0次下载
    带有集成<b class='flag-5'>LED</b>矩阵的<b class='flag-5'>DIY</b>蓝牙扬声器

    LED像素艺术开源分享

    电子发烧友网站提供《LED像素艺术开源分享.zip》资料免费下载
    发表于 06-19 15:28 0次下载
    <b class='flag-5'>LED</b><b class='flag-5'>像素</b>艺术开源分享