Saat bilgisini tutan herhangi bir entegre kullanmadan sadece delay fonksiyonu kullanarak dijital saat gerçekleştirdik.

Her komutun açıklaması açıklama satırlarında yer almaktadır.

Kod:
#include <LiquidCrystal.h> //lcd kütüphanesi çağırıldı.
const int rs = 8, en = 9, d4 = 4, d5 = 5, d6 = 6, d7 = 7; //lcd bacakları sabit int. olarak tanımlandı.
LiquidCrystal ekran(rs, en, d4, d5, d6, d7); //ekran isimli lcd nesnesi oluşturuldu.
int saat = 0, dakika = 0, saniye = 0; //saat dakika saniye değişkenleri tanımlandı.
void setup()
{
  ekran.begin(16, 2); //16 sütunlu 2 satırlı lcd tanımlandı.
  ekran.setCursor(0, 0); ekran.print("00:00:00"); //ilk değer yazıldı.
}


void loop() {
  for (saniye = 0; saniye <= 60; saniye++) //0' dan 60 a kadar saniye döngüsü oluşturuldu.
  {
    delay(1);  //saniye aralığı girildi 1000ms=1s
    if (saniye >= 10) ekran.setCursor(6, 0); //saniye 10' dan küçüke 6. sütundan
    else { //değilse
      ekran.setCursor(6, 0); // önce 6.sütuna git.
      ekran.print("0"); //önceki değer kalmasın diye sıfır yaz.
      ekran.setCursor(7, 0); //7.sütuna al.
    }
    ekran.print(saniye); //en son konuma saniye bilgisini yaz.
    if (saniye==60) //saniye 60 ise
    {
      if (dakika < 59) //dakika 59' un altında ise
      {
        saniye=0;ekran.setCursor(6,0);ekran.print("0");ekran.setCursor(7,0);ekran.print(saniye);
        //üst satırda saniye 60 iken sıfırlandı ve ekrana gönderildi.
        dakika++; //dakikayı arttır.
        if (dakika < 10) { //dakika 10' dan küçükken.
          ekran.setCursor(3, 0); //imleç 3.sütuna al
          ekran.print("0"); //önceki bilgiden değer kalmasın diye 0 yaz.
          ekran.setCursor(4, 0); //imleç 4.sütuna al.
          ekran.print(dakika); //dakika bilgisini yaz.
        }
        else {
          ekran.setCursor(3, 0); //imleci 3.sütuna al
          ekran.print(dakika); //dakika bilgisini yaz.
        }
      }
      else
      {
        dakika = 0; //dakika 59 dan küçük değilse ki bu durumda 60' dır değeri.
        saat++; //dakika 60 oldu saati arttırıyoruz.
        if (dakika < 10) { //dakika değeri 10 dan küçükse
          ekran.setCursor(3, 0); //İmleci 3.sütuna al.
          ekran.print("0"); //önceki değerin üstüne 0 yaz.
          ekran.setCursor(4, 0); //İmleci 4.sütuna al.
          ekran.print(dakika); //dakika bilgisini yaz.
        }
        else {//dakika 10 veya daha büyükse yani iki basamaklı ise.
          ekran.setCursor(3, 0); //imleç 3.sütuna alındı.
          ekran.print(dakika); //dakika bilgisi yazıldı.
        }
      }
      if (saat < 10) { //saat 10' dan küçükse.
        ekran.setCursor(0, 0); //İmleci sol üste al.
        ekran.print("0"); //önceki veriden değer kalmasın diye sıfırla.
        ekran.setCursor(1, 0);//imleç 1.sütuna
        ekran.print(saat); //saat bilgisi yaz.


      }
      else if (saat < 24) {
        //10 ve daha büyük 24' e kadar bir değerse
        ekran.setCursor(0, 0);//imleç sol üste.
        ekran.print(saat); //saat bilgisi yaz.
      }
      else if (saat == 24)
        //saat değeri 24 olursa
      {
        saat = 0; //sıfırla
        ekran.setCursor(0, 0);//imleci sol üste al.
        ekran.print("0"); //önceki bilginin üstüne 0 yaz.
        ekran.setCursor(1, 0); //imleci 1.sütuna al.
        ekran.print(saat); //saat bilgisini yaz.
      }
   }
  }
}