Digital Clock Arduino RTC DS3231 dengan Monitoring suhu (LM35) display Seven Segment




Untuk anda yang ingin membuat sebuah jam digital canggih lengkap dengan jam, menit, serta alarm, disini saya akan membagikan salah satu proyek arduino yang sangat berguna dan cocok digunakan untuk tugas akhir sekolah maupun skripsi elektronika bagi yang sudah kuliah.
Jam digital kali ini berbasiskan arduino yang menggunakan IC ATMEGA328. Dalam proyek ini saya menggunakan IC Arduino yang mudah didapatkan. Jam digital    ini sudah dilengkapi dengan sebuah IC RTC DS3231, yaitu sebuah IC yang dapat menyimpan data waktu maupun tanggal walaupun power supply untuk jam itu sendiri mati.
Agar jam digital ini dapat terus meng-counter waktu pada saat listrik padam, maka diperlukan nya sebuah battery backup untuk tenaga cadangan bagi IC RTC hingga berbulan bulan lamanya tanpa ada arus listrik ke rangkaian jam digital.
Jam digital ini bisa menggunakan display seven segmen common anoda maupun common catoda tergantung dari pemasangan driver terhadap seven segmen.
Pada jam digital ini dilengkapi dengan 3 tombol yang dapat digunakan untuk mengatur jam, menit serta menu.

Untuk skema rangkaian dapat diliht pada gambar dibawah ini.





Program Utama

=================================Source Code================================
#include "EEPROM.h"
#include "Wire.h"
#include "RTClib.h"
#include "DHT.h"

#define DHTPIN A3         // Pin DHT 11 to pin A3 arduino
#define DHTTYPE DHT11     // DHT 11 
DHT dht(DHTPIN, DHTTYPE);
RTC_DS1307 RTC;

int digit1 = 10;  //PWM pin for control digit 1 (left side)
int digit2 = 11;  //PWM pin for control digit 2
int digit3 = 12;  //PWM pin for control digit 3
int digit4 = 13;  //PWM pin for control digit 4 (right side)

int segA = 2;  // pin for control "a" segment
int segB = 3;  // pin for control "b" segment
int segC = 4;  // pin for control "c" segment
int segD = 5;  // pin for control "d" segment
int segE = 6;  // pin for control "e" segment
int segF = 7;  // pin for control "f" segment
int segG = 8;  // pin for control "g" segment
int segDP = 9; // pin for control led DOT

#define SW0 A0    // pin for MENU/change 
#define SW1 A1    // pin for increase value
#define Buzzer A2 // pin for control Alarm 
#define LDR 0     // pin for photoresistor 
int DISPLAY_BRIGHTNESS = 15;

//for common anoda
#define DIGIT_ON  HIGH
#define DIGIT_OFF  LOW
#define SEGMENT_ON  LOW
#define SEGMENT_OFF HIGH

/*// for common catoda
#define DIGIT_ON  LOW
#define DIGIT_OFF  HIGH
#define SEGMENT_ON  HIGH
#define SEGMENT_OFF LOW
*/
byte Tunda = 30;
int t, h;
int waktu; 
byte menu = 0;    // 0 = usual state
                  // 1 - adjust jam
                  // 2 - adjust menit
                  // 3 - adjust tahun
                  // 4 - adjust bulan
                  // 5 - adjust tanggal
                  // 6 - activate /deactivate alarm
                  // 7 - adjust jam alarm
                  // 8 - adjust menit alarm
                  // 9 - Simpan data
byte menit = 0;
byte jam = 0;
int tahun = 0;
byte bulan = 0;
byte tanggal = 0;
byte Tanggal_Max = 0;
byte Alarm = 0;
byte Menit = 0;
byte Jam = 0;
byte Alarm_Aktif = 0;
byte Alarm_Mati = 0;
unsigned long Selesai = 0;
int maxbright = 1030;
int Line = 0;


void setup() {
  
  Wire.begin();
  RTC.begin();
  dht.begin();

Wire.beginTransmission(0x68);
Wire.write(0x07); // move pointer to SQW address
Wire.write(0x10); // sends 0x10 (hex) 00010000 (binary) to control register - turns on square wave at 1Hz
Wire.endTransmission();

  if (! RTC.isrunning()) {
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
  
  pinMode(segA, OUTPUT);
  pinMode(segB, OUTPUT);
  pinMode(segC, OUTPUT);
  pinMode(segD, OUTPUT);
  pinMode(segE, OUTPUT);
  pinMode(segF, OUTPUT);
  pinMode(segG, OUTPUT);
  pinMode(segDP, OUTPUT);

  pinMode(digit1, OUTPUT);
  pinMode(digit2, OUTPUT);
  pinMode(digit3, OUTPUT);
  pinMode(digit4, OUTPUT);

 pinMode(SW0, INPUT);      // for this use a slide switch
 pinMode(SW1, INPUT);      // N.O. push button switch
  digitalWrite(SW0, HIGH); // pull-ups on
  digitalWrite(SW1, HIGH);

pinMode(LDR, INPUT);       // for photoresistor

pinMode(Buzzer, OUTPUT);   // control buzzer 
digitalWrite(Buzzer, HIGH);
delay(200);
digitalWrite(Buzzer, LOW);

Alarm = EEPROM.read(100);
Jam = EEPROM.read(101);
Menit = EEPROM.read(102);

}

void loop() {

if (menu == 0)
{  
digitalWrite(segDP, SEGMENT_OFF);
  DateTime now = RTC.now();
  //  waktu = now.hour()*100+now.minute();
  jam = now.hour();
  menit = now.minute();
  waktu = jam*100+menit;
  tahun = now.year();
  bulan = now.month();
  tanggal = now.day();

if ((menit == Menit) && (jam == Jam))
{
  Alarm_Aktif = 1;
}
else Alarm_Aktif = 0;

if ((millis() - Selesai) > 100000) Alarm_Mati = 0;

//JAM
for (byte Tampil = 0; Tampil < 20; Tampil++)
{
DISPLAY_BRIGHTNESS = analogRead(LDR);
//  if ((Alarm_Aktif == 1) && (Alarm%2 == 1))
if ((Alarm_Aktif == 1) && (Alarm%2 == 1) && (Alarm_Mati == 0))
  {
  digitalWrite(Buzzer, HIGH);  
  }
  else
  digitalWrite(Buzzer, LOW);

DISPLAY_BRIGHTNESS = analogRead(LDR);
// display parts   
   for(int i = 125 ; i >0  ; i--) {
     if (waktu >= 1000) displayNumber01(waktu); 
     else displayNumber02(waktu); 
   } 
 if (!(digitalRead(SW0)))
  {
    menu = 1; //go to menu for change hour
  }
  if (!(digitalRead(SW1)))
  {
    Alarm_Mati = 1; // mute the alarm
    Selesai = millis();  // store push time for mute alarm
  }   
  digitalWrite(Buzzer, LOW);
   for(int i = 125 ; i >0  ; i--) {
     if (waktu >= 1000) displayNumber03(waktu); 
     else displayNumber04(waktu); 
   } 
  if (!(digitalRead(SW0)))
  {
    menu = 1; //go to menu for change hour
  }
  if (!(digitalRead(SW1)))
  {
    Alarm_Mati = 1; // mute the alarm
    Selesai = millis();  // store push time for mute alarm
  }
}

// date (day and month)
for (byte Tampil = 0; Tampil < 2; Tampil++)
{ 
   DISPLAY_BRIGHTNESS = analogRead(LDR); 
//  if ((Alarm_Aktif == 1) && (Alarm%2 == 1))
if ((Alarm_Aktif == 1) && (Alarm%2 == 1) && (Alarm_Mati == 0))
  {
  digitalWrite(Buzzer, HIGH);  
  }
  else
  digitalWrite(Buzzer, LOW);
  
   for(int i = 125 ; i >0  ; i--) {
     displayNumber01(tanggal*100+bulan); // this is number to diplay
   }
  digitalWrite(Buzzer, LOW);
   for(int i = 125 ; i >0  ; i--) {
     displayNumber01(tanggal*100+bulan); // this is number to diplay
   }

 if (!(digitalRead(SW0)))
  {
    menu = 1; //go to menu for change hour
    delay(1000);
  }
  if (!(digitalRead(SW1)))
  {
    Alarm_Mati = 1; // mute the alarm
    Selesai = millis();  // store push time for mute alarm
  }
}  

// year
for (byte Tampil = 0; Tampil < 2; Tampil++)
{  
  DISPLAY_BRIGHTNESS = analogRead(LDR);
//  if ((Alarm_Aktif == 1) && (Alarm%2 == 1))
if ((Alarm_Aktif == 1) && (Alarm%2 == 1) && (Alarm_Mati == 0))
  {
  digitalWrite(Buzzer, HIGH);  
  }
  else
  digitalWrite(Buzzer, LOW);
  
   for(int i = 125 ; i >0  ; i--) {
     displayNumber03(tahun); // this is number to diplay
   }
  digitalWrite(Buzzer, LOW);
   for(int i = 125 ; i >0  ; i--) {
     displayNumber03(tahun); // this is number to diplay
   }

 if (!(digitalRead(SW0)))
  {
    menu = 1; //go to menu for change hour
    delay(1000);
  }
  if (!(digitalRead(SW1)))
  {
    Alarm_Mati = 1; // mute the alarm
    Selesai = millis();  // store push time for mute alarm
  }
}  


if (Tunda > 20)
{
  h = dht.readHumidity();
  t = dht.readTemperature();
  Tunda = 0;
}
for (byte Tampil = 0; Tampil < 2; Tampil++)
{
  DISPLAY_BRIGHTNESS = analogRead(LDR);
// if ((Alarm_Aktif == 1) && (Alarm%2 == 1))
if ((Alarm_Aktif == 1) && (Alarm%2 == 1) && (Alarm_Mati == 0))
  {
  digitalWrite(Buzzer, HIGH);  
  }
  else
  digitalWrite(Buzzer, LOW);
  
   for(int i = 125 ; i >0  ; i--) {
     displayNumber(t); // this is number to diplay
   }
   digitalWrite(Buzzer, LOW);
  
   for(int i = 125 ; i >0  ; i--) {
     displayNumber(t); // this is number to diplay
   } 
  if (!(digitalRead(SW0)))
  {
    menu = 1; //go to menu for change hour
  }
  if (!(digitalRead(SW1)))
  {
    Alarm_Mati = 1; // mute the alarm
    Selesai = millis();  // store push time for mute alarm
  }
}
for (byte Tampil = 0; Tampil < 2; Tampil++)
{  
  DISPLAY_BRIGHTNESS = analogRead(LDR);
//  if ((Alarm_Aktif == 1) && (Alarm%2 == 1))
if ((Alarm_Aktif == 1) && (Alarm%2 == 1) && (Alarm_Mati == 0))
  {
  digitalWrite(Buzzer, HIGH);  
  }
  else
  digitalWrite(Buzzer, LOW);
  
   for(int i = 125 ; i >0  ; i--) {
     displayNumber1(h); // this is number to diplay
   }
  digitalWrite(Buzzer, LOW);
   for(int i = 125 ; i >0  ; i--) {
     displayNumber1(h); // this is number to diplay
   }

 if (!(digitalRead(SW0)))
  {
    menu = 1; //go to menu for change hour
    delay(1000);
  }
  if (!(digitalRead(SW1)))
  {
    Alarm_Mati = 1; // mute the alarm
    Selesai = millis();  // store push time for mute alarm
  }
}  

Tunda = Tunda+1;
}  // end usual menu (display hour, temperature and humidity)

if (menu == 1)
{
 if (!digitalRead(SW1)) // set jam ++
 { 
 jam++;   
  if (jam > 23) jam = 0;      
 delay(100);
 }  
 
     for(int i = 20 ; i >0  ; i--) 
     {
  displayNumber20(jam); 
     }      
    delay(1);

 if (!(digitalRead(SW0)))
  {
    menu = 2; //go to menu for change minute
    delay(1000);
  }
} // end menu for change hour

if (menu == 2)
{
 if (!digitalRead(SW1)) // set menit ++
 { 
 menit++;      
 if (menit > 59) menit = 0;
 delay(100);
 }  
     for(int i = 20 ; i >0  ; i--)
     {
    displayNumber21(menit); 
     }      
    delay(1);

 if (!(digitalRead(SW0)))
  {
    menu = 3; //go to menu for usual style
    delay(500);
  }
}  // end menu for change menit




if (menu == 9)  // store data in RTC
{
 // date and jam
RTC.adjust(DateTime(tahun, bulan, tanggal, jam, menit, 0));  
EEPROM.write(100,Alarm%2);  
EEPROM.write(101,Jam);  
EEPROM.write(102,Menit);  

 delay(500);
 menu = 0; 
}


} // end main program


//Given a number, turns on those segments
//If number == 10, then turn off number
void lightNumber(int numberToDisplay) {
  switch (numberToDisplay){

  case 0:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_OFF);
    break;

  case 1:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_OFF);
    break;

  case 2:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_OFF);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 3:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 4:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 5:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 6:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 7:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_OFF);
    break;

  case 8:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  case 9:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  // all segment are ON
  case 10:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_OFF);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_OFF);
    break;

    // degree symbol made by B_Mz
  case 11:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_OFF);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  // C letter made by B_Mz
  case 12:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_OFF);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_OFF);
    break;
  
  // H letter made by B_Mz
  case 13:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;
 
  // L letter made by B_Mz
  case 14:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_OFF);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_OFF);
    break;

  // A letter made by B_Mz
  case 15:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;
  
    // F letter made by B_Mz
  case 16:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_OFF);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;
    
  // n letter made by B_Mz
  case 17:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_OFF);
    break;

    // O letter made by B_Mz
  case 18:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_OFF);
    break;
 
 // "Y" letter made by B_Mz
  case 19:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_ON);
    break;

  // "r" letter made by B_Mz
  case 20:
    digitalWrite(segA, SEGMENT_ON);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_OFF);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_ON);
    digitalWrite(segG, SEGMENT_OFF);
    break;

  // "d" letter made by B_Mz
  case 21:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_ON);
    digitalWrite(segC, SEGMENT_ON);
    digitalWrite(segD, SEGMENT_ON);
    digitalWrite(segE, SEGMENT_ON);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_ON);
    break;
      // "=" letter made by B_Mz
  case 22:
    digitalWrite(segA, SEGMENT_OFF);
    digitalWrite(segB, SEGMENT_OFF);
    digitalWrite(segC, SEGMENT_OFF);
    digitalWrite(segD, SEGMENT_OFF);
    digitalWrite(segE, SEGMENT_OFF);
    digitalWrite(segF, SEGMENT_OFF);
    digitalWrite(segG, SEGMENT_ON);
    break;
 }
}

// display DATE/DAY
void displayNumber01(int toDisplay) {
  for(int digit = 4 ; digit > 0 ; digit--) {

    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
     digitalWrite(digit1, DIGIT_ON);
     digitalWrite(segDP, SEGMENT_OFF);
      break;
   case 2:
      digitalWrite(digit2, DIGIT_ON);
      digitalWrite(segDP, SEGMENT_OFF);
      break;
    case 3:
      digitalWrite(digit3, DIGIT_ON);
      digitalWrite(segDP, SEGMENT_OFF);    
      break;
    case 4:
      digitalWrite(digit4, DIGIT_ON);
       if (Alarm%2 == 1) digitalWrite(segDP, SEGMENT_OFF);
    else digitalWrite(segDP, SEGMENT_OFF);
      break;
    }
    lightNumber(toDisplay % 10);
    toDisplay /= 10;
    delayMicroseconds(DISPLAY_BRIGHTNESS); 

     //Turn off all segments
    lightNumber(10); 
    digitalWrite(segDP, SEGMENT_ON);
     Line = maxbright - DISPLAY_BRIGHTNESS;
    delayMicroseconds(Line); 

    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
    digitalWrite(segDP, SEGMENT_OFF);
}
} 

// display clock wih small hour (8:31) with second on
void displayNumber02(int toDisplay) {
  for(int digit = 4 ; digit > 0 ; digit--) {

    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
     lightNumber(10); 
     digitalWrite(digit1, DIGIT_ON);
     digitalWrite(segDP,SEGMENT_ON);
     break;
   case 2:
      digitalWrite(digit2, DIGIT_ON);
      digitalWrite(segDP, SEGMENT_ON);
      break;
    case 3:
      digitalWrite(digit3, DIGIT_ON);
      digitalWrite(segDP, SEGMENT_ON);
      break;
    case 4:
      digitalWrite(digit4, DIGIT_ON);
      if (Alarm%2 == 1) digitalWrite(segDP, SEGMENT_OFF);
    else digitalWrite(segDP, SEGMENT_OFF);
      break;
    }
    lightNumber(toDisplay % 10);
    toDisplay /= 10;
    delayMicroseconds(DISPLAY_BRIGHTNESS); 

     //Turn off all segments
    lightNumber(10); 
    digitalWrite(segDP, SEGMENT_ON);
     Line = maxbright - DISPLAY_BRIGHTNESS;
    delayMicroseconds(Line); 

    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
    digitalWrite(segDP, SEGMENT_OFF);
}
} 

// display clock with second off
void displayNumber03(int toDisplay) {
  for(int digit = 4 ; digit > 0 ; digit--) {

    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
     digitalWrite(digit1, DIGIT_ON);
        digitalWrite(segDP, SEGMENT_OFF);
      break;
   case 2:
      digitalWrite(digit2, DIGIT_ON);
    digitalWrite(segDP, SEGMENT_OFF);
      break;
    case 3:
      digitalWrite(digit3, DIGIT_ON);
   digitalWrite(segDP, SEGMENT_OFF);
      break;
    case 4:
      digitalWrite(digit4, DIGIT_ON);
      if (Alarm%2 == 1) digitalWrite(segDP, SEGMENT_OFF);
    else digitalWrite(segDP, SEGMENT_ON);
      break;
    }
    lightNumber(toDisplay % 10);
    toDisplay /= 10;
    delayMicroseconds(DISPLAY_BRIGHTNESS); 

     //Turn off all segments
    lightNumber(10); 
    digitalWrite(segDP, SEGMENT_OFF);
     Line = maxbright - DISPLAY_BRIGHTNESS;
    delayMicroseconds(Line); 

    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
    digitalWrite(segDP, SEGMENT_OFF);
}
} 

// display clock for small hour (8:31) with second off
void displayNumber04(int toDisplay) {
  for(int digit = 4 ; digit > 0 ; digit--) {

    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
     lightNumber(10); 
      digitalWrite(digit1, DIGIT_ON);
     digitalWrite(segDP,SEGMENT_OFF);
     break;
   case 2:
      digitalWrite(digit2, DIGIT_ON);
    digitalWrite(segDP, SEGMENT_OFF);  
      break;
    case 3:
      digitalWrite(digit3, DIGIT_ON);
 digitalWrite(segDP, SEGMENT_OFF);
      break;
    case 4:
      digitalWrite(digit4, DIGIT_ON);
      if (Alarm%2 == 1) digitalWrite(segDP, SEGMENT_OFF);
    else digitalWrite(segDP, SEGMENT_ON);
      break;
    }
    lightNumber(toDisplay % 10);
    toDisplay /= 10;
    delayMicroseconds(DISPLAY_BRIGHTNESS); 
    digitalWrite(segDP, SEGMENT_OFF);

     //Turn off all segments
    lightNumber(10); 
    digitalWrite(segDP, SEGMENT_OFF);
     Line = maxbright - DISPLAY_BRIGHTNESS;
    delayMicroseconds(Line); 

    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
    digitalWrite(segDP, SEGMENT_OFF);
}
} 

// display temperature
void displayNumber(int toDisplay) {
  for(int digit = 4 ; digit > 0 ; digit--) {
    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
      digitalWrite(digit1, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
   case 2:
      digitalWrite(digit2, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 3:
      digitalWrite(digit3, DIGIT_ON);
      lightNumber(11); // display degree symbol
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 4:
      digitalWrite(digit4, DIGIT_ON);
      lightNumber(12); // display C letter
      if (Alarm%2 == 1) digitalWrite(segDP, SEGMENT_OFF);
    else digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    }
     //Turn off all segments
    lightNumber(10); 
    digitalWrite(segDP, SEGMENT_OFF);
     Line = maxbright - DISPLAY_BRIGHTNESS;
    delayMicroseconds(Line); 

    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
    digitalWrite(segDP, SEGMENT_OFF);
}
} 

// display humidity
void displayNumber1(int toDisplay) {
  for(int digit = 4 ; digit > 0 ; digit--) {

    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
      digitalWrite(digit3, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
   case 2:
      digitalWrite(digit4, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 3:
      digitalWrite(digit2, DIGIT_ON);
      lightNumber(22); // display off
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 4:
      digitalWrite(digit1, DIGIT_ON);
      lightNumber(13); // display H letter
      if (Alarm%2 == 1) digitalWrite(segDP, SEGMENT_OFF);
      else digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    }
     //Turn off all segments
    lightNumber(10); 
    digitalWrite(segDP, SEGMENT_OFF);
     Line = maxbright - DISPLAY_BRIGHTNESS;
    delayMicroseconds(Line); 

    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
    digitalWrite(segDP, SEGMENT_OFF);
}
} 

// hour clock adjust
void displayNumber20(int toDisplay) {
  for(int digit = 4 ; digit > 0 ; digit--) {

    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
      digitalWrite(digit1, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 2:
      digitalWrite(digit2, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      digitalWrite(segDP, SEGMENT_ON);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 3:
      digitalWrite(digit3, DIGIT_ON);
      lightNumber(12);   // C letter 
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
   case 4:
      digitalWrite(digit4, DIGIT_ON);
      lightNumber(14);   // L letter 
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    }
     //Turn off all segments
    lightNumber(10); 
     Line = maxbright - DISPLAY_BRIGHTNESS;
    delayMicroseconds(Line); 

    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
    digitalWrite(segDP, SEGMENT_OFF);
}
} 


// minute clock adjust
void displayNumber21(int toDisplay) {
  for(int digit = 4 ; digit > 0 ; digit--) {

    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
      digitalWrite(digit1, DIGIT_ON);
      lightNumber(12);   // C letter 
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
   case 2:
      digitalWrite(digit2, DIGIT_ON);
      lightNumber(14);   // L letter 
      digitalWrite(segDP, SEGMENT_ON);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 3:
      digitalWrite(digit3, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 4:
      digitalWrite(digit4, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    }
     //Turn off all segments
    lightNumber(10); 
     Line = maxbright - DISPLAY_BRIGHTNESS;
    delayMicroseconds(Line); 

    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
    digitalWrite(segDP, SEGMENT_OFF);
}
} 

// hour alarm adjust
void displayNumber30(int toDisplay) {
  for(int digit = 4 ; digit > 0 ; digit--) {

    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
      digitalWrite(digit1, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 2:
      digitalWrite(digit2, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      digitalWrite(segDP, SEGMENT_ON);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 3:
      digitalWrite(digit3, DIGIT_ON);
      lightNumber(15);   // A letter 
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
   case 4:
      digitalWrite(digit4, DIGIT_ON);
      lightNumber(14);   // L letter 
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    }
     //Turn off all segments
    lightNumber(10); 
     Line = maxbright - DISPLAY_BRIGHTNESS;
    delayMicroseconds(Line); 

    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
    digitalWrite(segDP, SEGMENT_OFF);
}
} 


// minute alarm adjust
void displayNumber31(int toDisplay) {
  for(int digit = 4 ; digit > 0 ; digit--) {

    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
      digitalWrite(digit1, DIGIT_ON);
      lightNumber(15);   // A letter 
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
   case 2:
      digitalWrite(digit2, DIGIT_ON);
      lightNumber(14);   // L letter 
      digitalWrite(segDP, SEGMENT_ON);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 3:
      digitalWrite(digit3, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 4:
      digitalWrite(digit4, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    }
     //Turn off all segments
    lightNumber(10); 
     Line = maxbright - DISPLAY_BRIGHTNESS;
    delayMicroseconds(Line); 

    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
    digitalWrite(segDP, SEGMENT_OFF);
}
} 

// alarm on
void displayNumber32() {
  for(int digit = 4 ; digit > 0 ; digit--) {
    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
      digitalWrite(digit1, DIGIT_ON);
      lightNumber(15);   // A letter 
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
   case 2:
      digitalWrite(digit2, DIGIT_ON);
      lightNumber(14);   // L letter 
      digitalWrite(segDP, SEGMENT_ON);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 3:
      digitalWrite(digit3, DIGIT_ON);
      lightNumber(18);   // o letter
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 4:
      digitalWrite(digit4, DIGIT_ON);
      lightNumber(17);   // n letter
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    }
     //Turn off all segments
    lightNumber(10); 
    Line = maxbright - DISPLAY_BRIGHTNESS;
    delayMicroseconds(Line); 

    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
    digitalWrite(segDP, SEGMENT_OFF);
}
} 

// alarm off
void displayNumber33() {
  for(int digit = 4 ; digit > 0 ; digit--) {

    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
      digitalWrite(digit1, DIGIT_ON);
      lightNumber(15);   // A letter 
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
   case 2:
      digitalWrite(digit2, DIGIT_ON);
      lightNumber(14);   // L letter 
      digitalWrite(segDP, SEGMENT_ON);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 3:
      digitalWrite(digit3, DIGIT_ON);
      lightNumber(18);   // o letter
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 4:
      digitalWrite(digit4, DIGIT_ON);
      lightNumber(16);   // F letter
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    }
     //Turn off all segments
    lightNumber(10); 
     Line = maxbright - DISPLAY_BRIGHTNESS;
    delayMicroseconds(Line); 

    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
    digitalWrite(segDP, SEGMENT_OFF);
}
} 

// year adjust
void displayNumber41(int toDisplay) {
  for(int digit = 4 ; digit > 0 ; digit--) {

    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
      digitalWrite(digit1, DIGIT_ON);
      lightNumber(19);   // Y letter 
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
   case 2:
      digitalWrite(digit2, DIGIT_ON);
      lightNumber(20);   // r letter 
      digitalWrite(segDP, SEGMENT_ON);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 3:
      digitalWrite(digit3, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 4:
      digitalWrite(digit4, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    }
     //Turn off all segments
    lightNumber(10); 
     Line = maxbright - DISPLAY_BRIGHTNESS;
    delayMicroseconds(Line); 

    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
    digitalWrite(segDP, SEGMENT_OFF);
}
} 

// month adjust
void displayNumber42(int toDisplay) {
  for(int digit = 4 ; digit > 0 ; digit--) {

    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
      digitalWrite(digit1, DIGIT_ON);
      lightNumber(13);   // H letter (instead M)
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
   case 2:
      digitalWrite(digit2, DIGIT_ON);
      lightNumber(18);   // o letter 
      digitalWrite(segDP, SEGMENT_ON);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 3:
      digitalWrite(digit3, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 4:
      digitalWrite(digit4, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    }
     //Turn off all segments
    lightNumber(10); 
    Line = maxbright - DISPLAY_BRIGHTNESS;
    delayMicroseconds(Line); 
    
    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
    digitalWrite(segDP, SEGMENT_OFF);
}
} 

// day adjust
void displayNumber43(int toDisplay) {
  for(int digit = 4 ; digit > 0 ; digit--) {

    //Turn on a digit for a short amount of time
    switch(digit) {
    case 1:
      digitalWrite(digit1, DIGIT_ON);
      lightNumber(21);   // d letter 
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
   case 2:
      digitalWrite(digit2, DIGIT_ON);
      lightNumber(19);   // Y letter 
      digitalWrite(segDP, SEGMENT_ON);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 3:
      digitalWrite(digit3, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    case 4:
      digitalWrite(digit4, DIGIT_ON);
      lightNumber(toDisplay % 10);
      toDisplay /= 10;
      digitalWrite(segDP, SEGMENT_OFF);
      delayMicroseconds(DISPLAY_BRIGHTNESS); 
      break;
    }
   
     //Turn off all segments
    lightNumber(10); 
    Line = maxbright - DISPLAY_BRIGHTNESS;
    delayMicroseconds(Line); 
    
    //Turn off all digits
    digitalWrite(digit1, DIGIT_OFF);
    digitalWrite(digit2, DIGIT_OFF);
    digitalWrite(digit3, DIGIT_OFF);
    digitalWrite(digit4, DIGIT_OFF);
    digitalWrite(segDP, SEGMENT_OFF);
}
} 

Jangan Lupa Memasukkan Library Yang dibutuhkan Disini

No comments

Dicky B_Mz. Powered by Blogger.