查看: 697|回复: 2

[教程] 【Arduino 】简易番茄钟DIY

[复制链接]

该用户从未签到

发表于 2021-4-14 21:19 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 DeanYan 于 2021-4-14 21:28 编辑

最近在家养病,用机械番茄钟来推进写论文,结果番茄钟挂掉了,一气之下论文也没如期完成。
心里想着如果有个代替的番茄钟就好了。

碰巧最近老爸生日,正在用arduino DIY一个小惊喜给他做生日礼物,手边还有一块多的板子和几根杜邦线。
开始尝试在网上寻找现有资源,发现在网上没有找到自己要的代码和接线图,有的番茄钟也没有响铃功能,响铃的方式很粗糙,于是用极其初级的方式DIY了一个番茄钟。

功能:
按键起动计时,第25min和30min时,分别响铃+白色闪光提醒。(用蜂鸣器模拟)
再次按键停止计时,下次按键重新开始计时。

可视化:
开始计时后LED会灭掉,LED亮着意味着闹钟闲置。同时,可以在串口看计时进度(要换算)。

工具:Arduino uno;
低电平触发蜂鸣器(GND、I/O、VCC)
一个电位调节器(控制音量)
绿色按钮(四脚)
一个电阻
若干杜邦线
面包板
led灯两个

教程见代码,记得下载库文件arduino-timer.h,

#include <arduino-timer.h>
int buzzer = 2;//buzzer pin
int led1 = 10;//led pin 
unsigned long t = 0;//time
int GbuttonPin =12;//绿色按钮
auto timer = timer_create_default(); // create a timer with default settings

bool toggle_buzzer(void *) {
  digitalWrite(buzzer, !digitalRead(buzzer)); // toggle the buzzer
  return true; // keep timer active? true
}


void setup() {
  pinMode(led1, OUTPUT); // set LED pin to OUTPUT
  pinMode(buzzer, OUTPUT);//set buzzer output
  digitalWrite(buzzer, HIGH);
  timer.every(20, toggle_buzzer);//same feel of alarm
  Serial.begin(9600); //Arduino串口通讯初始化
  pinMode(GbuttonPin, INPUT_PULLUP); //设置按键管脚上拉输入模式
  digitalWrite(led1, LOW);
}

void loop() {
  
  if (digitalRead(GbuttonPin) == LOW)
        { delay(100); //等待跳过按键抖动的不稳定过程
          if (digitalRead(GbuttonPin) == LOW) // 若按键被按下
          {
  for (t=0;t<180000;t++)//100=1sec, 6000=1min,150000=25min,180000=30mins
  { 
    {digitalWrite(led1, LOW);}
    Serial.println(t); //打印数据
    if (((t>150000)&(t<150900))|((t>179100)&(t<179999)))//25mins and 30 min
    {
    timer.tick(); // tick the timer
    }
    else
    {digitalWrite(buzzer, HIGH);
    }
     if (digitalRead(GbuttonPin) == LOW)
        { delay(100); //等待跳过按键抖动的不稳定过程
          if (digitalRead(GbuttonPin) == LOW) // 若按键被按下
          {
         break;
          }
        }
      if(t==0)
      {digitalWrite(led1, HIGH);}
  }
   }
  }
  digitalWrite(led1, HIGH);
}




PS:模拟的响铃声音还蛮悦耳的。

1618406354221..jpg
1618406339608..jpg
1618406315307..jpg

该用户从未签到

发表于 2021-4-14 21:57 | 显示全部楼层
太棒了这个

该用户从未签到

 楼主| 发表于 2021-4-26 22:56 | 显示全部楼层

谢谢支持,纯属意外自用哈哈,最近又做了一个温湿度显示器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

arduino程序设计基础 blinker物联网解决方案

热门推荐

BLE胸带+GPS墨水屏运动心率表
BLE胸带+GPS墨水屏运动心
项目简介: 我喜欢跑步(已经坚持了四年),也很喜欢折腾穿戴,两者都喜欢。 2016
温湿度传感器DHT11总是校验错误,如何解决?
温湿度传感器DHT11总是校
本人是正在做毕设的萌新,做的是温湿度监测,连线都是对的,可总是出现“checksum err
ESP32-CAM 推流直播【分享】
ESP32-CAM 推流直播【分享
# ESP32-CAM 推流直播 > 使用esp32-cam进行实时录像,然后通过obs推流到虎牙直播。
[Arduino物联网开发实战5]云端历史数据存储与查看
[Arduino物联网开发实战5]
blinker提供了历史数据存储与图表查看数据的功能。 设备端开发 在blinker的设计下,设
arduino pid麦克纳姆轮小车程序详解
arduino pid麦克纳姆轮小
之前发过几个帖子,大家可以参考,但经过多次尝试,整套系统升级了,优化了很多地方目录:
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
快速回复 返回顶部 返回列表