Fatih Çil
Published

Wake Up Timer

I sleep a lot. For this, I wanted to make a timer. I want to sleep just four hours. Life is very short!

BeginnerShowcase (no instructions)2 hours1,837
Wake Up Timer

Things used in this project

Story

Read more

Schematics

untitled_vjLqqMpyyS.png

ALERT !!
a4 and a5 cables maybe false location

Code

You can see my arduino code

Arduino
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSerif9pt7b.h>
#include<Servo.h>
Servo motor; 
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

#define OLED_ADDR       0x3C
#define COUNTDOWN_TIME  14401000ul //4hour

char
    szString[20];
byte
    mins, secs;
        
unsigned long
    timeTemp,
    timeNow,
    timeStart,
    timeElapsed,
    timeLeft;    



void setup() 
{
    // initialize and clear display
    display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
    display.clearDisplay();
    display.setTextSize(1);
    display.setTextColor(WHITE);
motor.attach(2); // Servo motorun data pinini arduino 3 numaralı 
        motor.write(0);
        delay(1000);
    Serial.begin(9600);
    timeStart = millis();
    mins = 1;
    secs = 1;

}//setup

void DoCountdown()
{
    static unsigned long
        lastTimeNow = 0;
    static byte
        lastsecs = 1;
        
    timeNow = millis();
    timeElapsed = timeNow - timeStart;
    
    if( mins == 0 && secs == 0 )
        return;
        
    timeLeft = COUNTDOWN_TIME - timeElapsed;

    mins = (byte)(timeLeft / 60000ul);
    timeTemp = timeLeft - (mins * 60000);
    secs = (byte)(timeTemp / 1000ul);
    timeTemp = timeTemp - (secs * 1000ul);

    if( mins == 0 && secs == 0 )
    {
      motor.attach(2);
        sprintf( szString, "**WakeUp**" );
        Serial.println( szString );
        display.setCursor( 44, 30 );
        display.print( szString );
        display.display();
        motor.write(180);
        delay(1000);
  
         
    }//if
    else if( secs != lastsecs )
    {
        lastsecs = secs;
        sprintf( szString, "%02d:%02d", mins, secs );
        Serial.println( szString );
        //
        display.setCursor( 50, 30 );
        display.print( szString );
        display.display();


    }//if
  display.clearDisplay();
            motor.attach(3);

}//DoCountdown

void loop() 
{
    DoCountdown();

}//loop

Credits

Fatih Çil

Fatih Çil

3 projects • 1 follower

Comments