资料介绍
描述
这个项目是我之前构建的更新版本。以前版本的主要问题是,除非背光打开,否则您无法读取显示。要打开背光,您要么必须编译代码以使其永久打开,要么实际按下其中一个按钮。前者不适合,因为我不希望我的房间在我晚上睡觉时被点亮,而后者意味着我必须停止我正在做的事情才能按下其中一个按钮来查看时间。
检测环境光
为了解决上述问题,我添加了一个带有比较器电路的光敏电阻 (LDR)。LDR 会根据其是暗还是亮来改变其电阻。当光线充足时,它将具有低电阻,并且背光打开,从而可以读取屏幕。在黑暗的房间中,电阻很高,它将允许背光关闭。您仍然可以通过按任何按钮将其打开 10 秒钟。
我使用了一个带有微调电位器的简单比较器电路来将光照水平设置为背光应该永久打开的位置。当光照水平接近阈值时,比较器电路会在有少量光照变化时开启和关闭。即 ON 阈值和 OFF 阈值相同。为了解决这个问题,少量的输出被反馈到输入以增强变化(正反馈)。这称为滞后,根据反馈量,这会使 ON 阈值升高,OFF 阈值降低,
![pYYBAGNh9w-AIcAKAAFKO8y2vbY520.jpg](https://file.elecfans.com/web2/M00/77/69/pYYBAGNh9w-AIcAKAAFKO8y2vbY520.jpg)
时钟功能
- 十种不同的展示风格
- 设置时间、当前日期、出生日期和闹钟
- 水银开关关闭警报
- 自动和手动背光控制
- DHT21温湿度传感器
使用时钟
时钟有三个按钮——设置、增量、减量和一个倾斜开关。
当背光关闭时,按任意按钮将打开背光。如果在背光打开时未按任何按钮,则在黑暗的房间中,它会在 10 秒后自行关闭。当房间光线充足时,背光将自动打开。背光打开时,按钮将执行以下任务:
SETUP - 这将打开 SETUP 屏幕。右尖括号字符是光标。按 INCREMENT 或 DECREMENT 按钮将分别增加或减少光标所在的值。再次按下 SETUP 按钮将使光标在小时、分钟、日、月、年、出生日、出生月、出生年、闹钟小时、闹钟分钟之间循环并返回时钟模式。
![poYBAGNh9xWAKKvxAABiCzpQdkc804.jpg](https://file.elecfans.com/web2/M00/76/D7/poYBAGNh9xWAKKvxAABiCzpQdkc804.jpg)
INCREMENT - 当不在设置屏幕中时,此按钮在各种时钟样式之间切换。
![pYYBAGNh9xqAZYioAAFNki4wS1E330.jpg](https://file.elecfans.com/web2/M00/77/69/pYYBAGNh9xqAZYioAAFNki4wS1E330.jpg)
减量- 当不在设置屏幕中时,此按钮可打开或关闭警报。
TILT SWITCH - 当闹钟响起时,倾斜时钟或按下任何按钮将关闭闹钟。
构建一个完整的时钟
首先,您需要一块印刷电路板 (PCB)。如果您希望将 PCB 商业化制造或像我一样自己制造,请附上 Eagle 文件。我使用了碳粉方法。
注意:由于 LCD 1602 显示器使用直角排针连接到主 PCB,因此当电路板和显示器已经焊接在一起时,很难将它们插入外壳中。拥有一个带通孔电镀的双面板可以让您将显示器就地焊接到板上。
![pYYBAGNh9xyAIWH9AABMMWSneWo836.png](https://file.elecfans.com/web2/M00/77/6A/pYYBAGNh9xyAIWH9AABMMWSneWo836.png)
该处理器是使用 Arduino UNO 引导加载程序编程的 ATmega328 DIL。ATmega328 的振荡器使用一个 16MHz 晶体和两个 22pf 陶瓷电容器。5V稳压器为7805 TO-220型,100uF 16V电容用于平滑。RTC 是一个带有 32.768 kHz 手表晶体的 DS1302。扬声器为无源蜂鸣器,采用 10uF 16V 电容进行直流隔离。0.1uF和1uF电容为独石陶瓷电容(5mm孔距)。电阻为 1/8 瓦。水银开关可以是任何尺寸。安装在电路板背面的三个触觉按钮为 6mmx6mm,轴为 13mm。
![poYBAGNh91OAI6t3AARViUyAhqw924.png](https://file.elecfans.com/web2/M00/76/D8/poYBAGNh91OAI6t3AARViUyAhqw924.png)
![poYBAGNh912Ad503AAWyvovjWlM829.jpg](https://file.elecfans.com/web2/M00/76/D8/poYBAGNh912Ad503AAWyvovjWlM829.jpg)
外壳是 3D 打印的,层高为 0.2 毫米,没有支撑。使用 2.5 毫米钻头钻出 PCB 安装孔,并使用 3 毫米丝锥创建螺纹。使用 M3 6mm 螺钉将板固定到位。我还将 PCB 上的两个安装孔钻出 4 毫米,以便在固定电路板时进行任何必要的调整,以防止按钮粘在外壳上。
![pYYBAGNh92SAE0dzAAN8AqOg96o636.jpg](https://file.elecfans.com/web2/M00/77/6A/pYYBAGNh92SAE0dzAAN8AqOg96o636.jpg)
我使用的 LDR 标记为 P1241-05。它的尺寸约为 5 毫米 x 3 毫米,在强光下的电阻约为 200 欧姆,在黑暗时的电阻约为 4000 欧姆。DHT21 传感器安装在机箱背面。您需要从 DHT21 的底座上去除少量塑料,以便电线可以穿过提供的孔并仍然隐藏在护罩下。
![poYBAGNh92qAF9rgAAA7mcbgMCY758.jpg](https://file.elecfans.com/web2/M00/76/D8/poYBAGNh92qAF9rgAAA7mcbgMCY758.jpg)
编程
将 FTDI 编程器连接到 PCB 上的 FTDI Basic 接头,并上传通过 Arduino IDE 提供的软件。
![poYBAGNh922AJS1cAACHboYPVVM608.png](https://file.elecfans.com/web2/M00/76/D8/poYBAGNh922AJS1cAACHboYPVVM608.png)
请参阅以下有关更改代码以定制消息时钟和世界时钟的部分。
生物节律钟面
![poYBAGNh93CAZa9TAAAiazjSc14740.jpg](https://file.elecfans.com/web2/M00/76/D8/poYBAGNh93CAZa9TAAAiazjSc14740.jpg)
据推测,根据我们的出生日期,生物节律可能决定我们生活的高潮和低谷。生物节律包括三个周期:23天的身体周期、28天的情绪周期和33天的智力周期。生物节律时钟将每个状态显示为条形。
![pYYBAGNh93KAOw3aAAA1mBZIcuY939.png](https://file.elecfans.com/web2/M00/77/6A/pYYBAGNh93KAOw3aAAA1mBZIcuY939.png)
该条显示生物节律处于正循环(顶部条)或负循环(底部条)。条形的长度显示了它在周期中的积极或消极程度。
消息钟面
![poYBAGNh93aAeN9NAAAln0fDVYY407.jpg](https://file.elecfans.com/web2/M00/76/D8/poYBAGNh93aAeN9NAAAln0fDVYY407.jpg)
此钟面在第二行显示一个旋转的消息栏。在代码中有一个表格,其中包含日期和消息,以便在这些日期过去时显示。
const char D00[] PROGMEM = "Today is ";
const char D01[] PROGMEM = "Your Brithday";
const char D02[] PROGMEM = "New Years Day";
const char D03[] PROGMEM = "Australia Day";
const char D04[] PROGMEM = "Good Friday";
const char D05[] PROGMEM = "Easter Monday";
const char D06[] PROGMEM = "Anzac Day";
const char D07[] PROGMEM = "Mother's Day";
const char D08[] PROGMEM = "the Queen's Birthday";
const char D09[] PROGMEM = "Father's Day";
const char D10[] PROGMEM = "Labour Day";
const char D11[] PROGMEM = "Xmas Day";
const char D12[] PROGMEM = "Good";
const char D13[] PROGMEM = "morning";
const char D14[] PROGMEM = "afternoon";
const char D15[] PROGMEM = "evening";
const char D16[] PROGMEM = ", it is ";
const MSG msgs[] = {
{ 0, 1, 1, D02 },
{ 0, 1, 26, D03 },
{ 2021, 4, 2, D04 },
{ 2021, 4, 5, D05 },
{ 0, 4, 25, D06 },
{ 0, 5, 9, D07 },
{ 2021, 6, 14, D08 },
{ 0, 9, 5, D09 },
{ 2021, 10, 4, D10 },
{ 0, 12, 25, D11 },
{ 0, 0, 0, NULL }
};
在msgs数组中,每个元素由 4 个组件组成。第一个是年份。值为零的年份表示所有年份。接下来是月份(1 到 12),然后是日期(1 到 31)。最后是对应该显示的消息的引用。该表目前是为澳大利亚新南威尔士州 2021 设置的。您可以通过添加和删除项目来修改它。确保您保留表中的最后一个条目不变。软件使用它来确定表格的结尾。
一般形式的消息是:
好[morning|afternoon|evening] ,现在是[ day of week ] [ day ][st|nd|rd|th] [ month name ] [ year ] {今天是[ message ]}
世界时间的脸
![pYYBAGNh93iAc7WcAAAlY2FDbLE367.jpg](https://file.elecfans.com/web2/M00/77/6A/pYYBAGNh93iAc7WcAAAlY2FDbLE367.jpg)
世界时钟显示当前时间和另一个城市的时间。此时钟完全支持使用时区库的夏令时。您需要设置本地时区和要显示的其他时区。
//Australia Eastern Time Zone (Sydney, Melbourne)
#define LOCAL_CITY_ABV "SYD" //3 Character city name
#define LOCAL_TIMEZONE(loc) ausET.toUTC(loc) //Function to access Timezone function
TimeChangeRule aEDT = {"AEDT", First, Sun, Oct, 2, 660}; //UTC + 11 hours
TimeChangeRule aEST = {"AEST", First, Sun, Apr, 3, 600}; //UTC + 10 hours
Timezone ausET(aEDT, aEST);
//US Eastern Time Zone (New York, Detroit)
#define WORLD_CITY_ABV "NYC" //3 Character city name
#define WORLD_TIMEZONE(utc) usET.toLocal(utc) //Function to access Timezone function
TimeChangeRule usEDT = {"EDT", Second, Sun, Mar, 2, -240}; //UTC - 4 hours
TimeChangeRule usEST = {"EST", First, Sun, Nov, 2, -300}; //UTC - 5 hours
Timezone usET(usEDT, usEST);
首先,您需要设置 TimeChangeRules。有关如何执行此操作的完整说明以及一些示例,请参阅GitHub 上的Ardino 时区库。
接下来修改两个#define 语句。第一个包含时区所在的 3 个字符的城市名称,第二个需要知道赋予 Timezone 对象的名称。仅更改句点左侧的名称。
学分
这个时钟是各种制造商多年来制造的许多时钟的混搭。
该时钟的基础是带闹钟功能的 Arduino 数字时钟(定制 PCB)。我修改了箱子,所以它打印成两件而不是四件。
- Michalis Vasilakis的标准屏幕设计
- Arduino World的 Dual Thin 字体
- Arduino 论坛的 Dual Beveled 字体
- Carrie Sundra的 Dual Trek 字体
- Arduino World的 Dual Thin 字体
- LAGSILVA的词概念
- 约翰布拉德南的生物节律时钟
- ARDUinoautoMOTIVE的天气时钟
- 约翰·布拉德南 ( John Bradnam)的消息时钟
- 约翰布拉德南的世界时钟
- LED闹钟开源项目 0次下载
- 辛迪的闹钟/录音气象站开源分享 0次下载
- 带秒表的闹钟开源硬件 0次下载
- 诺基亚模拟数字闹钟开源分享 0次下载
- 平视显示器闹钟开源分享 0次下载
- 咖啡闹钟开源分享 0次下载
- 康佳35016963液晶彩电电源图纸参考 17次下载
- 多面体模型中循环分块算法的设计方案 10次下载
- 电子闹钟源码文件下载 10次下载
- 如何使用单片机设置多个闹钟C语言程序免费下载 7次下载
- 12864液晶电子钟_具有按键可调、闹钟、温度显示 122次下载
- 多面棱体的时栅转台自动标定系统设计_王淑娴 1次下载
- RTC闹钟唤醒实验 19次下载
- 基于AT89C51的防贪睡闹钟 1550次下载
- 多功能闹钟原理图 1030次下载
- 液晶电视原理与维修 液晶电视和led电视哪个好 238次阅读
- 基于51单片机的闹钟系统设计 922次阅读
- 闹钟的ESD整改案例 379次阅读
- 前沿开源技术领域的开源大数据一一解读 787次阅读
- CubeMX配置RTC实现日历和闹钟实验 1313次阅读
- 基于树莓派3B实现智能闹钟的设计方案 2650次阅读
- 组装液晶、杂牌液晶常用总线的进入方法 2w次阅读
- 液晶电视屏和液晶显示器的区别 1.8w次阅读
- EDA实现闹钟铃声设计 1763次阅读
- STM32实现对RTC闹钟唤醒的设计 1.3w次阅读
- 如何定制段码液晶屏_段码液晶屏的开模流程及注意事项 3.2w次阅读
- 段码液晶屏实现原理及应用 6.5w次阅读
- 液晶显示器的优缺点_液晶显示器原理介绍 1.4w次阅读
- 液晶电视电源pfc电路_液晶pfc电路维修技巧 7.5w次阅读
- 浅述液晶显示器与液晶面板的关系和区别 2983次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论