基于 Arduino UNO 的经典厨房定时器(示意图+代码)
原标题:基于 Arduino UNO 的经典厨房定时器(示意图+代码)
起初,上帝创造了天地。还有人类。人类创造了数字厨房定时器,就像这个。
人类说,酷但有点惨淡。让我们做一个更好的!
上帝说,我听到了你的呼唤,让 Arduinos 出现吧:地球上到处都是 Arduinos,这很好。
人类拿了一个 Arduino 并创造了一个更好的厨房定时器,就像这个。
上帝看到新的厨房计时器说:我看到了你的新厨房计时器,它看起来很糟糕,但似乎太有趣了!而这是好的。
你需要什么
既然您知道这一切的来源,让我们深入探讨一下。
我使用的所有组件都来自Arduino 入门套件,包括您在图片和视频中看到的小面包板。如果您愿意,可以随意将项目纳入更大的项目。
您还需要一个电源:在玩耍时,PC 的 USB 端口和电缆就足够了。
你需要做什么
首先:请从入门套件或您喜欢的组件箱中收集所有需要的组件;如果你没有,不要惊慌。互联网上有很多。您可以在下面找到组件列表。
而且,你也需要代码。它在它的盒子里,又在下面。
这个怎么运作
基本上,就像任何其他类似设备一样,您可以在您附近的任何商店花一美元购买。但是,这是你的。这将向您展示这些小工具实际上是如何工作的。
这里的关键字是:当前模式。计时器本身一次只能以四种模式中的一种运行:
IDLE - 计时器正在等待您的输入,显示当前设置的时间量;这也是上电或复位后的初始模式。
SETUP - 您可以通过长按 S4 进入此模式(在代码中这也称为“重置按钮”);在这里,通过使用 S3(“开始停止按钮”),您可以选择要更改的值,以便设置稍后倒计时的经过时间;最后,分别使用 S2(“向下按钮”)和 S1(“向上按钮”),您可以减少或增加所选值(小时、分钟或秒)。
RUNNING - 您可以通过按 S3 进入此模式,而离开它将需要 S3 或 S4(这将导致您进入空闲模式)。
RINGING - 当所需的时间过去后,此模式将自动激活;你可以通过按任意开关离开它(即,让小男孩停止响铃)。
编码
首先,我们需要包含适当的库:
如果您还没有它们,则需要下载并安装它们:
Paul Stoffregen 的时间图书馆(请从绿色的“克隆或下载”按钮下载ZIP)
Arduino 液晶库
接下来,让我们初始化那个漂亮的 LCD 模块:
请随意随意打乱引脚以获得良好的布线布局:不要跟着我这样做,因为我做了一个糟糕的布线计划!:D 例如,您可以反转上述语句中的后四个引脚,以避免在下面的示意图中看到黄色电线交叉(显然,您必须相应地调整按钮引脚常数,见下文)。玩,玩得开心!在复制/粘贴之后,Arduinos 的生活就开始了!
接下来的 51 行代码包含静态变量声明和初始化。请随意浏览它们,它们清晰的名称和一些零散的评论将引导您了解整个事情。
setup() 函数执行您已经在任何 Arduino 草图中看到无数次的通常的初步步骤。唯一值得注意的是第一个语句,它将设置初始 LCD 显示光标的位置。因为,是的:这个模块要求你沿着它的行和列设置一个位置,然后“打印”一些东西,它会从那个位置开始出现。
现在让我们转到 loop() 函数。
首先,让我们发现开关状态。为了实现这一点,几乎每一个都使用了以下代码块:
针对相关引脚发出 digitalRead 并将结果与先前读取的值进行比较:如果发生变化,则存储新值以供将来参考,如果按下按钮,则 bool "xxxButtonPressed" 静态变量设置为 true。
查看下面的电路图,您会注意到每个输入引脚都被一个 10k 电阻器强制为低电平,除非按下相应的开关并且引脚本身直接连接到 +5V。一个相当经典的场景,嗯?
之前,我说“几乎每个”都是因为有一个按钮的作用与其他按钮不同:S4。它的代码块能够检测到上述长按以进入 SETUP 模式。
接下来是模式管理块切换:每个案例查看按钮状态触发器(“xxxButtonPressed”)并将流重定向到正确的新状态,或执行正确的操作。
前面的代码片段显示了 IDLE 模式的管理方式,并且一目了然。另一个示例显示了在响铃时按下任何按钮将如何停止响铃:
下一个块 - “时间管理” - 执行实际的时间差计算,触发 RINGING 模式并在需要时实际响铃。
最后一个块——“LCD 管理”——通过在适当的位置打印适当的字符串来管理每种模式的 LCD 显示。
就是这样。
责任编辑:
【免责声明】
1、本文内容、数据、图表等来源于网络引用或其他公开资料,版权归属原作者、原发表出处。若版权所有方对本文的引用持有异议,请联系拍明芯城(marketing@iczoom.com),本方将及时处理。
2、本文的引用仅供读者交流学习使用,不涉及商业目的。
3、本文内容仅代表作者观点,拍明芯城不对内容的准确性、可靠性或完整性提供明示或暗示的保证。读者阅读本文后做出的决定或行为,是基于自主意愿和独立判断做出的,请读者明确相关结果。
4、如需转载本方拥有版权的文章,请联系拍明芯城(marketing@iczoom.com)注明“转载原因”。未经允许私自转载拍明芯城将保留追究其法律责任的权利。
拍明芯城拥有对此声明的最终解释权。