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

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

3天内不再提示

如何创建一个Arduino控制的厨房计时器

454398 来源:工程师吴畏 2019-08-05 10:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

厨房定时器用户界面流程

打开电源后,设备将显示“Arduino Kitchen Timer”消息3秒钟。

然后计时器将提示您设置时间。您可以通过按左右键将光标移动到分钟和小时。

您可以使用向上和向下箭头键调整分钟和小时设置。

设置了所需的时间后,按下选择按钮,计时器将启动。

如果您想再次设置时间,请再次按下选择按钮。

一旦时间结束,蜂鸣器将发出蜂鸣声。

要停止蜂鸣器,请按键盘护罩上的重置按钮。

厨房定时器所需的组件

Arduino

LCD键盘护盾

蜂鸣器

厨房定时器的电路图

首先,对齐并放置L CD Keypad直接屏蔽Arduino。然后将蜂鸣器的正极连接到Arduino上的引脚12,将蜂鸣器的负极连接到地面。

Arduino厨房定时器项目代码

将以下代码复制并上传到Arduino IDE中。代码的每个部分都有一个附带的解释,以帮助您了解它的功能。

#include

// select the pins used for the LCD keypad

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// define some variables

int lcd_key = 0;

int adc_key_in = 0;

int hrs = 0;

int mins = 0;

int set_mins = 0;

int set_hrs = 1;

int secs = 60;

int cursor_pos = 1;

int buzzer_pin = 12;

bool startTimer = false;

bool setTimer = true;

bool get_time = false;

unsigned long interval=1000; // the time we need to wait

unsigned long previousMillis=0; // millis() returns an unsigned long.

// Defining button used by the lcd keypad

#define btnRIGHT 0

#define btnUP 1

#define btnDOWN 2

#define btnLEFT 3

#define btnSELECT 4

#define btnNONE 5

// read the buttons

int read_LCD_buttons()

{

adc_key_in = analogRead(0); // reading the button value from the lcd keypad

// checking which button is pressed

if (adc_key_in 》 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result

if (adc_key_in 《 50) return btnRIGHT;

if (adc_key_in 《 250) return btnUP;

if (adc_key_in 《 450) return btnDOWN;

if (adc_key_in 《 650) return btnLEFT;

if (adc_key_in 《 850) return btnSELECT;

return btnNONE; // when all others fail, return this.。.

}

void setup()

{

Serial.begin(115200);

pinMode(buzzer_pin, OUTPUT);

lcd.begin(16, 2); // start communication with LCD keypad shield

lcd.setCursor(0,0);

lcd.print(“Arduino Kitchen”);

lcd.setCursor(0, 1);

lcd.print(“ Timer”);

delay(3000);

}

void loop(){

// Checking which condition is true based on the button pressed

if(startTimer == true){

start_timer();

}

else if (setTimer == true){

set_timer();

}

}

// This function will count the time and will beep the buzzer when the time will be up.

void start_timer(){

// Checking whether time is up or not

if(hrs == 0 && mins == 0 && secs == 0){

lcd.setCursor(0, 0);

lcd.print(“ Time is UP”);

lcd.setCursor(0, 1);

lcd.print(“ Beep Beep”);

digitalWrite(buzzer_pin, HIGH);

delay(500);

digitalWrite(buzzer_pin, LOW);

delay(500);

}

else if(secs 《 0){

secs = 59;

mins = mins - 1;

}

else if(mins 《 0){

mins = 59;

hrs = hrs - 1;

}

else

{

get_time = true;

counter();

lcd.setCursor(0, 0);

lcd.print(“Timer is ON”);

lcd.setCursor(0, 1);

lcd.print(hrs);

lcd.print(“:”);

lcd.setCursor(4, 1);

lcd.print(mins);

lcd.print(“:”);

lcd.setCursor(8, 1);

lcd.print(secs);

}

lcd_key = read_LCD_buttons(); // read the buttons

switch (lcd_key) // depending on which button was pushed, we perform an action

{

// if select button is pressed, move back to set time

case btnSELECT:

{

startTimer = false;

setTimer = true;

delay(300);

lcd.clear();

break;

}

case btnNONE:

{

break;

}

}

}

// This function will set the time

void set_timer(){

counter();

lcd.setCursor(0, 0);

lcd.print(“Set Time”);

lcd.setCursor(0, 1);

lcd.print(“Hrs:”);

lcd.print(hrs);

lcd.setCursor(8, 1);

lcd.print(“Mins:”);

lcd.print(mins);

lcd.setCursor(0,1);

lcd_key = read_LCD_buttons(); // read the buttons

switch (lcd_key) // depending on which button was pushed, we perform an action

{

// if right button is pressed, then move the cursor to minutes

case btnRIGHT:

{

cursor_pos = set_mins;

break;

}

// if left button is pressed, then move the cursor to hours

case btnLEFT:

{

cursor_pos = set_hrs;

break;

}

// if up button is pressed, add 1 to the minutes or hours

case btnUP:

{

delay(300);

if(cursor_pos == set_mins){

mins++;

if(mins 》 59){

mins = 0;

}

}

else if(cursor_pos == set_hrs){

hrs++;

if(hrs 》 24){

hrs = 0;

}

}

break;

}

// if down button is pressed, minus 1 from the minutes or hours

case btnDOWN:

{

delay(300);

if(cursor_pos == set_mins){

mins--;

if(mins 《 0){

mins = 60;

}

}

else if(cursor_pos == set_hrs){

hrs--;

if(hrs 《 0){

hrs = 24;

}

}

break;

}

// if select button is pressed, start the timer

case btnSELECT:

{

startTimer = true;

setTimer = false;

mins = mins - 1;

delay(300);

break;

}

case btnNONE:

{

break;

}

}

}

void counter() {

unsigned long currentMillis = millis(); // grab current time

// check if “interval” time has passed (1000 milliseconds)

if ((unsigned long)(currentMillis - previousMillis) 》= interval) {

lcd.clear();

if(get_time == true){

secs--;

get_time = false;

}

previousMillis = millis();

}

}

创建厨房计时器只是一个开始!

您已经创建了自己的厨房计时器!该项目的最佳部分是能够调整该模块以构建其他项目,这些项目需要LCD和按钮或蜂鸣器之间的简单接口。您还可以为模块设计自定义3D打印的外壳,并使其成为您自己的。

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

    关注

    1

    文章

    434

    浏览量

    34865
  • Arduino
    +关注

    关注

    190

    文章

    6515

    浏览量

    195924
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    耐电痕化指数测定仪:滴液计时器设置与终点判据的深度解读

    、滴液计时器:模拟环境的“节奏控制器”​ 耐电痕化测试的核心是复刻绝缘材料在潮湿污染环境中的劣化过程,滴液计时器则是把控这过程节奏的关键
    的头像 发表于 10-16 09:46 166次阅读
    耐电痕化指数测定仪:滴液<b class='flag-5'>计时器</b>设置与终点判据的深度解读

    零知开源——基于STM32F407VET6零知增强板的四路独立计时器

    独立控制,支持开始、暂停和重置功能,并具备定时报警功能(4小时或每小时触发)。项目结合了TFT显示屏、蜂鸣器和按钮控制,提供了直观的用户界面。核心功能 >四路独立
    发表于 07-01 10:31

    零知开源——基于STM32F407VET6零知增强板的四路独立计时器

    本教程介绍基于STM32F407VET6零知增强板的四路独立计时器实现方案。项目采用TFT显示屏、蜂鸣器和按钮构建交互系统,支持各计时器独立控制(开始/暂停/重置)和智能报警(4小时及以上每小时触发
    的头像 发表于 07-01 10:13 866次阅读
    零知开源——基于STM32F407VET6零知增强板的四路独立<b class='flag-5'>计时器</b>

    基于STM32F407VET6零知增强板的四路独立计时器

    计时器
    PCB56242069
    发布于 :2025年07月01日 09:41:44

    纳祥科技客户案例 | 集计时、照明、装饰于体的电子沙漏计时器方案

    传统沙漏作为计时工具,虽具备仪式感,但存在功能单、无法实时调整具体定时等局限性。应客户需求,纳祥科技推出了结合LED显示、重力感应、低功耗等技术的电子沙漏计时器方案,实现传统沙漏的美学与现代
    的头像 发表于 06-13 16:32 606次阅读
    纳祥科技客户案例 | 集<b class='flag-5'>计时</b>、照明、装饰于<b class='flag-5'>一</b>体的电子沙漏<b class='flag-5'>计时器</b>方案

    《ESP32S3 Arduino开发指南》第二章 Arduino基础知识

    ()和loop()两函数组成。1、setup()Arduino控制器通电后或复位后,会开始执行setup()函数中的程序,该程序只会执行次。通常是在setup()函数中完成
    发表于 05-13 09:28

    如何构建次充电可以运行数月的嵌入式设备?

    想象下设计宠物GPS追踪,它需要跟踪时间、安排任务和节约电力,但保持MCU和GPS全天候活跃将消耗数小时的电池。 你如何解决这个问题? • 仅在必要时使用RTC唤醒MCU。 •
    的头像 发表于 03-04 11:25 643次阅读
    如何构建<b class='flag-5'>一</b><b class='flag-5'>个</b><b class='flag-5'>一</b>次充电可以运行数月的嵌入式设备?

    XMC1402-F064X0128AA——基于 ARM® Cortex®-M 的32位工业微控制器

    明佳达/XMC1402-F064X0128AA是款基于 ARM® Cortex®-M 的32位工业微控制器,主要用于低成本嵌入式控制应用。由于 48MHz 的核心频率和 2 Ca
    发表于 02-22 17:42

    延时继电器的工作原理和接线方法

    能源消耗、保护电气设备、安全稳定运行。 工作原理 延时继电器的工作原理基于或多个可调的计时器电路,以及与继电器相连的控制电路。其核心部件包括计时
    的头像 发表于 02-07 16:09 2832次阅读

    断电延时继电器的应用

    延时继电器作为种重要的电气控制元件,在现代电气系统中发挥着不可或缺的作用。其基于或多个可调的计时器电路,通过与继电器相连的
    的头像 发表于 02-07 16:07 1870次阅读

    延时继电器功能汇总与应用

    的电压。延时继电器主要包含两重要的电路部分:计时器电路和继电器电路。计时器电路可以通过外部电位(或旋钮)进行调整,以实现不同的延时时间。继电器电路则负责在单位延时结束后的动作,用户
    的头像 发表于 01-17 16:03 1171次阅读

    EE-109:ADSP2106x:使用2106x SPORT作为计时器

    电子发烧友网站提供《EE-109:ADSP2106x:使用2106x SPORT作为计时器.pdf》资料免费下载
    发表于 01-07 14:11 0次下载
    EE-109:ADSP2106x:使用2106x SPORT作为<b class='flag-5'>计时器</b>

    TMetric:键式Axosoft时间跟踪

    Axosoft 工作项中 只需单击下即可启动计时器 在切换到另一个工作项之前无需停止 从 TMetric 反向链接到 Axosoft
    的头像 发表于 01-07 11:32 565次阅读
    TMetric:<b class='flag-5'>一</b>键式Axosoft时间跟踪

    TMETRIC:键式Freshdesk时间跟踪

    输入 计时器按钮已集成到每个 Freshdesk 票证中 只需单击下即可启动计时器 无需在切换到另张票之前停下来 从 TMetric 反向链接到 Freshdesk 每个条目都包含
    的头像 发表于 01-06 13:46 690次阅读
    TMETRIC:<b class='flag-5'>一</b>键式Freshdesk时间跟踪

    智能厨房应用什么传感

    的工作原理、应用场景以及为用户带来的便利。 智能厨房中的传感技术 智能厨房通过集成多种传感,能够实时监测烹饪过程中的温度、湿度、气味等关键参数,从而实现对烹饪过程的精准
    的头像 发表于 12-11 09:10 1128次阅读