cstram
Published © GPL3+

Arduino Tea Bag Timer

Do you want to make a perfect tea? Checkout this project!

BeginnerFull instructions provided1,055
Arduino Tea Bag Timer

Things used in this project

Hardware components

Arduino Nano R3
Arduino Nano R3
×1
SG90 Micro-servo motor
SG90 Micro-servo motor
×1
TM1637 Display
×1

Hand tools and fabrication machines

Wood
Multitool, Screwdriver
Multitool, Screwdriver

Story

Read more

Schematics

Arduino Tea Bag Timer

What to make a perfect tea? This is the way!

Code

Arduino Tea Bag Timer

Arduino
Want to make a perfect tea?
/*
 * Carlo Stramaglia
 * https://www.youtube.com/c/CarloStramaglia
 * This is the Arduino Tea Bag Timer. 
 * Once you setup the time you want your tea to stay in the water, the arm will automatically dip and release the tea bag.
 * October 31st 2021
 */
 
#include <Servo.h>
#include <TM1637.h>
#include "OneButton.h"

Servo myservo;

int minutes=00;
int seconds=0;
int i=0;

// Display Pins configurations
// Pin 3 - > DIO
// Pin 2 - > CLK
TM1637 tm1637(2, 3);

// Push Button PIN definition
#define PIN_INPUT A2

OneButton button(PIN_INPUT, true);


void setup() {
  Serial.begin(115200);
  Serial.println("Arduino Tea Bag Timer sketch. Carlo Stramaglia https://www.youtube.com/c/CarloStramaglia");
  myservo.attach(9);
  myservo.write(90);
  tm1637.init();
  tm1637.setBrightness(5);
  button.attachClick(singleClick);
  button.attachDoubleClick(doubleClick);
  button.attachLongPressStart(longPressStart);
  tm1637.clearScreen();
  tm1637.colonOn();
  tm1637.display("0000");
  tm1637.colonOn();
  delay(100);  
}

void loop() {
  button.tick();
  delay (10);
}

void singleClick()
{
  Serial.println("x1");
  minutes++;
  Serial.println(minutes);
  if (minutes < 10)
      tm1637.display(minutes,1,0,1);
  else
      tm1637.display(minutes);
  delay(100);
} // singleClick Add minutes


void doubleClick()
{
  Serial.println("x2");
  if (minutes == 0) return;
  for (i=90;i>30;i--)
  {
    myservo.write(i);
    delay (100);
  }
  minutes--;
  for (minutes ; minutes >= 0; minutes--) {
        for (int seconds = 59; seconds >= 0; seconds--) {
            if (minutes < 10 && minutes >0)
              tm1637.display(seconds + minutes*100,1,0,1);
            else if (minutes == 0 && seconds >=10)
              tm1637.display(seconds + minutes*100,1,0,2);
            else if (minutes == 0 && seconds < 10)
              tm1637.display(seconds + minutes*100,1,0,3);
            else               
              tm1637.display(seconds + minutes*100); 
            tm1637.switchColon(); 
            delay(1000);
        }
    }
    for (i=30;i<90;i++)
    {
      myservo.write(i);
      delay (100);
    }
  tm1637.colonOn();
  tm1637.display("0000");
  minutes = 0;
  tm1637.colonOn();
  delay(100);  

} // doubleClick Timer Start

void longPressStart()
{
  Serial.println("long Press");
  minutes = 0;
  tm1637.colonOn();
  tm1637.display("0000");
  tm1637.colonOn();
  delay(100);  
} // longPressStart Timer Reset

Credits

cstram
16 projects • 23 followers
Passionate about IT, Electronics and DIY. Strong believer in Raspberry and Arduino devices. Experience in digital television and security.

Comments