这款小型电池供电时钟可配置为显示为模拟时钟、数字时钟、世界时钟或数字闹钟。这个时钟类似于我几年前制造的诺基亚模拟数字闹钟。它使用 ATtiny1614 微处理器(16k Flash,2k Ram)。不幸的是,它没有足够的闪存来容纳所有功能集。这次我使用了 ATtiny3216 微处理器。它有两倍的闪存,它不仅让我可以合并以前的功能集,还可以在世界各地的可选城市中添加当前时间。它会自动调整可能在任何选定城市中启用的夏令时。
使用提供的 STL 文件,打印正面和背面。我使用了 0.2 毫米的层高并且没有支撑。打印正面时,用您选择的颜色制作前 2 层,在第 3 层开始时更改为对比色,并在第 5 层开始时切换回所选颜色。
前面有两个支架用于支撑印刷电路板。用 2.5 毫米的钻头将它们钻出来,然后用 3 毫米的丝锥创建一个螺纹。
我遇到的问题之一是诺基亚 5110 显示器的不同变体。
PCB 专为中间变体而设计。中间变体上的标题更宽(设计为适合 0.1 英寸网格),右侧变体只有一个标题行。
如果您希望将电路板商业化或您可以自己制作,则已包含 Eagle 文件。我用碳粉的方法来制作我的。
首先添加 SMD 组件。我发现在焊接 SMD 元件时使用焊膏比使用卷盘中的焊料更容易。
将机器接头添加到电路板的铜面上。
接下来添加顶部组件。我建议您先将按钮顶部粘到触觉开关上,然后再将其安装到板上。不要让胶水顺着轴流进开关。将按钮顶部朝下放在工作台上,在轴孔中添加一些强力胶,然后将开关轴放入孔中。让它倒置,直到胶水变干。
18650 电池座位于 PCB 安装孔上方。用双面胶粘住支架。从 PCB 的铜侧钻穿两个 3 毫米的安装孔,并穿过电池座的塑料。使用 10 毫米钻头在电池座上钻孔。
将 18650 电池座引线切割并焊接到电路板上。
将公机头添加到 LCD 并插入 PCB。将 PCB 拧入外壳。
ATtiny3216 处理器是 Microchip 新型微处理器的一部分。请阅读我关于如何对这些处理器进行编程的教程。
您需要下载LCD5110_Graph 库并将其安装到 Arduino IDE 中。此外,您还需要DS1302RTC库。
在文件 World.h 中,从第 63 行开始有一个表格,定义了可以选择的城市/时区。它由两个 NULL 指针终止。这允许您添加您认为必要的城市/时区。
表中的每个条目都包含三个元素。第一个是代表城市或时区的 3 个字符的名称。第二个是指向确定夏令时开始时间的规则的指针。& 字符仅表示“地址”。第三个是指向确定夏令时何时结束的规则的指针。
RULE worldChoices[] = {
:
{"SYD", &AEDT, &AEST},
:
{"", NULL, NULL}
}
这是澳大利亚悉尼的入口。该选项显示的名称是“SYD”,第二个元素是规则 AEDT(澳大利亚东部夏令时间)的地址,第三个元素是规则 AEST(澳大利亚东部标准时间)的地址。
规则本身在此表之前定义。在悉尼,规则在第 16 行和第 17 行。
const TimeChangeRule AEDT PROGMEM = {"AEDT", First, Sun, Oct, 2, 660};
const TimeChangeRule AEST PROGMEM = {"AEST", First, Sun, Apr, 3, 600};
规则的变量名称是您喜欢使用的任何名称,只要它在代码中是唯一的即可。规则的格式是:
TimeChangeRule myRule = {abbrev, week, dow, month, hour, offset};
在哪里:
abbrev是时区的字符串缩写;不得超过五个字符。
week是规则开始的月份中的第几周。
dow是规则开始的星期几。
小时是规则开始的本地时间小时 (0-23)。
offset是所定义时区的 UTC 偏移量(以分钟为单位)。
为方便起见,可以使用以下符号名称:
周:第一,第二,第三,第四,最后一个道:周日,周一,周二,周三,周四,周五,周六月:一月,二月,三月,四月,五月,六月,七月,八月,九月,十月,十一月,十二月
对于美国东部时区,TimeChangeRule可以定义如下:
const TimeChangeRule usEDT PROGMEM = {"EDT", Second, Sun, Mar, 2, -240}; //UTC-4 hrs
const TimeChangeRule usEST PROGMEM = {"EST", First, Sun, Nov, 2, -300}; //UTC-5 hrs
设置好表格后,您可以上传代码并进行测试。
最后添加电池并关闭外壳。
时钟有三个按钮。最左边的是SELECT,中间的按钮是BACK,最右边的按钮是NEXT。
按下 SELECT 按钮时,背光将亮起 5 秒钟,让您在黑暗时读取显示屏。
再次按 SELECT 将在模拟、数字、世界和闹钟面之间循环。
要设置时间和日期:
在 TIME 屏幕上,按 BACK 或 NEXT 按钮。小时将开始闪烁。使用 BACK 和 NEXT 按钮以 24 小时格式设置小时值。再次按 SELECT,分钟将开始闪烁。再次使用 BACK 和 NEXT 按钮设置 Minutes 值。再次按下选择按钮将允许您设置年、月,最后是日。之后,SELECT 按钮将存储新时间。
选择世界时间:
在 WORLD 屏幕上,按 BACK 或 NEXT 按钮。第一个城市名称将开始闪烁。使用 BACK 和 NEXT 按钮设置城市。
显示的第一个城市被视为当地时间。选择的第二、三、四城市的时间将从第一城市时间开始计算。
再次按下 SELECT,列表中的下一个城市开始闪烁。再次使用 BACK 和 NEXT 按钮选择城市。再次按下 SELECT 按钮将允许您选择第三和第四行的城市。之后,SELECT 按钮会将所选城市存储在 EEPROM 中。
设置闹钟:
在 ALARM 屏幕上,按 BACK 或 NEXT 按钮。小时将开始闪烁。使用 BACK 和 NEXT 按钮以 24 小时格式设置小时值。再次按 SELECT,分钟将开始闪烁。再次使用 BACK 和 NEXT 按钮设置 Minutes 值。再次按下选择按钮将允许您打开或关闭警报。之后,SELECT 按钮会将新的报警参数存储在 EEPROM 中。(注意:闹钟时间始终以 24 小时格式显示)。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !