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

    关注

    237

    文章

    22445

    浏览量

    645848
  • 二进制
    +关注

    关注

    2

    文章

    705

    浏览量

    41248
  • 时钟
    +关注

    关注

    10

    文章

    1479

    浏览量

    130304
收藏 人收藏

    评论

    相关推荐

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

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

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

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

    鸿蒙二进制数组创建

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

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

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

    你知道十进制二进制如何进行转换吗?

    你知道十进制二进制如何进行转换吗? 当我们提到数字系统时,最常见的是十进制系统和二进制系统。十进制是基于10的系统,而
    的头像 发表于 12-20 17:05 667次阅读

    二进制最佳接收原理 二进制最佳接收机的实现形式有哪两种?

    二进制最佳接收原理 二进制最佳接收机的实现形式有哪两种? 二进制最佳接收原理是计算机通信中的重要概念,它是指在二进制通信中通过一定的方法,使接收机在信号传输过程中能够准确、可靠地接收到
    的头像 发表于 11-27 16:19 566次阅读

    请问bcd码和二进制有什么关系?

    这个bcd码和二进制有什么关系? bcd 表示0011001是19(十进制) 二进制表示0011001是25(十进制) 这个怎么确定是哪个???
    发表于 10-07 06:02

    M451如何丢弃函数的二进制代码填入SRAM的二进制代码

    应用程序 : 示例代码演示了如何丢弃函数的二进制代码, 然后填入 SRAM 的二进制代码, 然后调用它 。 BSP版本:M451系列BSP V3.01.001 硬件: 任何 M451 系列板块
    发表于 08-30 07:35

    如何读取二进制文件,IAR怎么输出二进制BIN文件

    IAR怎么输出二进制BIN文件?
    发表于 08-28 17:19

    如何丢弃函数的二进制代码填入SRAM的二进制代码?

    应用程序 : 示例代码演示了如何丢弃函数的二进制代码, 然后填入 SRAM 的二进制代码, 然后调用它 。 BSP版本:M451系列BSP V3.01.001 硬件: 任何 M451 系列板块
    发表于 08-23 06:34

    Arduino二进制骰子

    电子发烧友网站提供《Arduino二进制骰子.zip》资料免费下载
    发表于 07-04 10:13 0次下载
    Arduino<b class='flag-5'>二进制</b>骰子

    二进制数开源分享

    电子发烧友网站提供《二进制数开源分享.zip》资料免费下载
    发表于 06-26 11:40 0次下载
    <b class='flag-5'>二进制</b>数开源分享

    M5StickC二进制时钟/手表开源

    电子发烧友网站提供《M5StickC二进制时钟/手表开源.zip》资料免费下载
    发表于 06-20 15:16 0次下载
    M5StickC<b class='flag-5'>二进制</b><b class='flag-5'>时钟</b>/手表开源

    构建LED二进制计数器

    电子发烧友网站提供《构建LED二进制计数器.zip》资料免费下载
    发表于 06-12 09:54 0次下载
    构建<b class='flag-5'>LED</b><b class='flag-5'>二进制</b>计数器

    如何进行DDR校准并寻找LPDDR4校准二进制文件?

    使用 预编译的二进制文件进行 DDR 校准 ,看起来它们是通过将晶体视为时钟源而生成的——这不允许定制板的处理器获得时钟(因为时钟应该来自外部振荡器和预编译的
    发表于 04-27 08:11