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

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

3天内不再提示

二进制LED大理石时钟的制作图解

454398 来源:工程师吴畏 2019-08-19 17:15 次阅读

第1步:时钟程序功能

二进制LED大理石时钟的制作图解

关于时钟的某些软件功能的一些评论。

时间设置:许多使用rtc的Arduino示例在设置时间方面都很随意。他们经常使用草图的编译时间来设置rtc(如果尚未设置)。由于您不知道编译和下载需要多长时间,这很笨拙,如果先前已设置时钟,则时间不会更新。

我在代码中放了一个标志(KBSetTime = true | false),如果在下载时设置,将导致打开一个串行窗口并提示输入时间。按下输入时,时间精确设置为rtc。

准确度:DST3231模块的指定精度为+/- 2 ppm,在常温下每年约1分钟。为了校正这种漂移,提供了“碰撞”按钮。我们的想法是,当您听到通过收音机广播的时间源信号点数时,按下按钮按钮并将时间调整为“时间最高”。为了防止手指徘徊,我将此功能限制为仅在一小时内的五到五个范围内有效。

夏令时:有问题!时钟没有同步到任何可识别DST的外部源,因此没有办法自动调整,就像电话会因为它连接到网络塔而做。在旧版本的Windows中,他们只使用一个文件,其中包含日期,指定何时发生更改,为此您需要事先知道并确定更改日期 - 我们走了多远,预期寿命是多少时钟,如果我们移动司法管辖区怎么办?其他方法依赖于固定的规范,例如3月的第2个星期日,但这也有问题 - 不是每个地方同时调整,特殊事件可能会移动这个“固定”的变化点。出于这些原因,我决定采用不同的方法让用户轻松进行调整 - 设置滑动开关以指定进入或退出夏令时,然后按下按钮。这将在当前时间恰好增加或减少一小时。保留日期的准确性,以防你在23:45小时进行。

扩展:时钟显示为12h格式,有四个LED小时,最大值为8 + 4 + 2 + 1 = 15,因此如果需要24小时格式,您可以添加额外的LED。或者,您可以添加指示上午或下午的方式。软件库和时钟模块的接口都可以在需要时轻松实现这些。

第2步:位和块 - 片断

Arduino世界有一系列有趣的位,都非常显着便宜从ebay,ali barber等。还有很多指导和建议。这是我用过的东西;

Nano arduino,便宜,功能强大,具有教育意义 - 该项目最终使用了约80%的代码空间

DS3231 - 实时时钟模块,可维持时间,2 ppm精度约为1分钟/年

SSD1306 oled显示屏,128 x 32像素

WS8212 LED - 串行控制LED,3线,单个LED颜色由3字节RGB字符串设置

DHT22 - 温湿度模块。电容湿度传感器和热敏电阻

其他开关,按钮 - 带连接器电源适合Arduino

使用电容式触摸开关可能更好按钮。一个例子是TTP223

关于DS3231 rtc模块的注意事项:如果你使用像锂电池那样的锂电池(大多数人会),你需要切断模块上的电池充电痕迹。互联网搜索将揭示信息和原因。上图说明了要切割的痕迹。

步骤3:接线

该图显示了接线连接。

第4步:代码

此处显示代码,您只需下载并使用它即可。你需要安装Arduino环境。

希望它被充分评论,允许任何具有一些Arduino技能的人来跟踪和修改。

Arduino世界有许多智能民间的图书馆让我们其他人可以轻松使用设备。没有必要重新发明轮子,所以我使用了以下库;

TimeLib.h - 用于时间函数的使用和管理

DS3223RTC.h - 用于访问rtc模块

Adafruit_NeoPixel.h - 用于使用串行LED

DHT.h - 用于湿度和温度传感器

Streaming.h - 便于与串行窗口交互

U8glib.h - 用于Oled显示

使用了IC2总线,它内置于Arduino,rtc和oled模块以及相关的库中 - 由于上面提到的库,它们对使用都是透明的

中断。这些用于碰撞到小时和夏令时调整例程。前者因为它需要以时间关键的方式发生而后者因为它不经常使用。

每个显示特征的显示时间的暂停延迟可以通过show_xxxx_delay常量来调整。例如,显示的红色温度LED被设置为4000毫秒或4秒

const unsigned long show_temp_delay = 4000;

颜色的变化可以通过编辑线条来实现 - 它只是每个00的三个十六进制值。 RGB的ff

#define Yellow leds.Color(0xff, 0xff, 0x00) // colour for day display

步骤5:木工

我开始在车库里放一块松木,切成一定长度如所须。大理石位于凹陷的口袋中,因此从正面钻出一个更大的孔,大理石的直径达到您想要的深度,然后钻一个小孔,让光线看到大理石的背面。钻孔后,我使用了一个插入式路由器从后部划出一个口袋来容纳电子设备。

我在顶部表面上切了一个小凹槽,这样Oed显示器就会齐平。

后面的部分被切割成适合按钮和DHT传感器的尺寸。

我用自制的污渍混合物对松树进行染色并涂上一层蜡以产生缎面效果

步骤6:电子装配

《我将LED安装在一条木条上 - 这主要是为了让它们更容易处理,因为我正在玩耍和原型制作。他们需要连接5V,0V和数据。来自arduino的数据引脚连接必须首先到达一分钟,因为LED是通过字符串中的位置来寻址的。 8小时led是字符串中的最后一个,并且不需要终结器。

钻几个孔,将开关和传感器安装在后面板上。热胶可用于将物品固定到位。为这些设备使用触摸开关可能更好。

Arduino和rtc模块安装在配线板上。这样可以更容易地将所有东西焊接在一起。链接由单股铜线制成。

带状电缆提供与后面板安装的开关和传感器的完美连接,并允许打开外壳。

LED灯条之间使用一块牛奶瓶塑料和补丁板,以防止任何短路。

拧紧背部,你就完成了。时钟可以通过USB端口从计算机或插头包装到墙上。没有USB电源,没有显示器,但rtc模块上的电池可以保持时间。

在光线昏暗的房间里享受它,并对访客进行测验,因为它以的形式吸引了一些注意力。 “那是什么!?”

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

    关注

    242

    文章

    23278

    浏览量

    660925
  • 二进制
    +关注

    关注

    2

    文章

    795

    浏览量

    41653
  • 时钟
    +关注

    关注

    11

    文章

    1734

    浏览量

    131488
收藏 人收藏

    评论

    相关推荐

    hex格式和二进制的区别

    HEX格式和二进制在多个方面存在显著的区别。以下是对这两者的对比: 一、定义与表示方式 HEX格式 : HEX,全称为Intel HEX,是一种用于存储和传输数据到嵌入式系统(如单片机)的文件格式
    的头像 发表于 11-18 15:24 525次阅读

    二进制编码器在自动化领域的作用

    二进制编码器是一种将二进制信号转换为数字信号的电子设备,广泛应用于自动化领域。 一、二进制编码器的工作原理 二进制编码器是一种将二进制信号转
    的头像 发表于 11-06 09:53 355次阅读

    二进制编码器的种类及特点

    二进制编码器是一种电子电路,用于将二进制信号转换为其他格式,如十进制、格雷码等。以下是一些常见的二进制编码器种类及其特点: 优先编码器(Priority Encoder) : 特点 :
    的头像 发表于 11-06 09:47 493次阅读

    二进制编码器应用场景 二进制编码器与模拟编码器比较

    编码器是将信息从一种形式或格式转换为另一种形式的设备。在数字和模拟系统中,编码器扮演着至关重要的角色。二进制编码器和模拟编码器是两种常见的编码器类型,它们在不同的应用场景中有着各自的优势和局
    的头像 发表于 11-06 09:45 447次阅读

    二进制编码器工作原理 如何选择二进制编码器

    二进制编码器是一种数字电路,它将输入的二进制代码转换为对应的输出信号。在数字系统中,编码器用于将数据从一种形式转换为另一种形式,以便于处理和传输。 二进制编码器工作原理 输入与输出关系 :
    的头像 发表于 11-06 09:44 776次阅读

    二进制补码及与原码的互相转换方法

    大沙把一些基础的知识说清楚,本文介绍二进制补码及与原码的转换方法。 先说原码,原码‌是一种计算机中对数字的二进制定点表示方法。在原码表示法中,数值前面增加了一位符号位,最高位为符号位,0表示正数,1
    的头像 发表于 09-19 22:25 507次阅读

    二进制处理中的一些技巧

    二进制和十进制的处理中,有时候一些小技巧是很有用的。 1、把十进制数转换成二进制数 (1)在MATLAB中有一个函数dec2bin,可以把正整数转换为2
    的头像 发表于 07-05 11:51 577次阅读

    二进制串行计数器工作原理是什么?

    在数字电路设计中,计数器是一种非常关键的组件,用于测量时间、计数事件或跟踪状态变化等。其中,二进制串行计数器作为一种常用的计数器类型,在多种应用场景中都发挥着重要作用。本文将对二进制串行计数器
    的头像 发表于 05-28 15:52 872次阅读

    如何实现二进制和BCD码数据的相互转变?

    如何实现二进制和BCD码数据的相互转变? 二进制码是将十进制数字表示为二进制数和十进制数的一种表示方法。在计算机系统中,
    的头像 发表于 02-18 14:51 3604次阅读

    二进制与逻辑电平的变化范围

    二进制中的两个数字0和1称为位(bit, 是二进制数字binary digit的缩写)。在数字电路中,使用两个不同的电平表示这两个位。一般情况下,1 用高电平表示,0用低电平表示,这种逻辑体制称为正逻辑。
    的头像 发表于 02-04 16:54 1397次阅读
    <b class='flag-5'>二进制</b>与逻辑电平的变化范围

    鸿蒙二进制数组创建

    背景 c++层数据都是二进制,需要转换成arrayBuffer透传到ets层给业务使用,但是鸿蒙的使用下面两个api创建出来的二进制数组数据都是错误的。 接口
    的头像 发表于 01-31 15:24 1277次阅读

    二进制、八进制、十六进制在现实当中有什么意义?

    二进制、八进制、十六进制在现实当中有什么意义? 二进制、八进制和十六进制在现实生活中有着广泛的应
    的头像 发表于 01-16 11:14 5443次阅读

    10进制转换为二进制的算法

    进制转换为二进制是计算机科学中非常基础且重要的概念之一。在理解和应用计算机科学的基础知识时,掌握这个算法是至关重要的。 在开始讲解十进制转换为二进制的算法之前,让我们回顾一下十
    的头像 发表于 01-15 10:32 3314次阅读

    10进制转换为二进制的算法

    10进制转换为二进制是计算机领域中非常重要的一个问题。在计算机中,所有的数据都是以二进制形式进行存储和处理的。因此,我们常常需要将10进制数转换为
    的头像 发表于 01-11 09:14 2388次阅读

    labview二进制字符串转数值

    LabVIEW是一种图形化编程环境,用于实时数据采集、信号处理以及自动化控制等领域。它采取了数据流编程的思想,用户可以通过将各种功能模块进行连接,轻松搭建起复杂的系统。 在LabVIEW中,二进制
    的头像 发表于 01-05 16:20 2702次阅读