Jumat, 03 Juni 2022

Membuat LED 7 Segment Shift Register 74HC595 ULN2003

 

LED 7 Segment Shift Register 74HC595 ULN2003
LED 7 Segment Shift Register 74HC595 ULN2003 

Pada proyek sebelumnya dikarenakan saya masih memiliki banyak stok LED maka sayang sekali jika tidak dimanfaatkan secara maksimal untuk itu saya kembali membuat proyek yang sama seperti sebelumnya yaitu sebuah proyek led 7 segment dengan susunan led pada setiap segment nya, perbedaan dari proyek sebelumnya adalah penggunaan shift registernya yaitu jikalau proyek sebelumnya menggunakan shift register berjenis CMOS CD4094 maka pada proyek kali ini saya akan menggunakan shift register berjenis TTL 74HC595 ini dimaksudkan juga agar proyek serupa menjadi lebih fleksibel penggunaanya tidak berfokus kepada satu jenis shift register saja.


Karena sama-sama menggunakan shift register meskipun berbeda jenis akan tetapi perintah input sama-sama alhasil pada prakteknya bisa digunakan secara bersamaan namun untuk power supply nya tetap menggunakan tegangan 5 volt mengacu kepada tegangan yang direkomendasikan untuk shift register 74HC595 meskipun untuk jenis shift register CMOS CD4094 bisa sampai maksimal 15 volt akan tetapi susunan led saya buat untuk digunakan pada tegangan 5 volt juga.


Baca juga : Membuat Jam LED 7 Segment CD4094 Arduino


Rangkaian led 7 segment ini bisa digunakan untuk berbagai keperluan dalam setiap projek misalnya projek jam digital, proyek stopwatch, proyek jws ataupun proyek-proyek lainnya yang mengharuskan penggunaan display 7 segment, nah dibawah ini saya tampilkan skema led 7 segment yang menggunakan IC shift register 74HC595 dan juga saya tampilkan juga layoutnya yang telah saya desain namun membuatnya dalam dual layer karena saya tidak akan membuat sendiri pcbnya melainkan akan saya cetak di situs PCBWay.com.


Skema Modul LED seven segment 74HC595
Skema Modul LED seven segment 74HC595 

Layout Modul LED seven segment 74HC595
Layout Modul LED seven segment 74HC595

Untuk download atau cetak langsung pcbnya di situs PCBWay.com file gerber nya silakan download dibawah ini. 



Seperti terlihat diatas desain pcb led 7 segment 74HC595 ini saya rancang menggunakan dual layer karena saya tidak akan membuat pcb sendiri melainkan akan saya cetak di situs PCBWay.com karena kemudahan dan biaya cetak yang relatif terjangkau yakni hanya sebesar 5 dolar saya bisa mendapatkan 5 bahkan 10 keping pcb  makanya saya setiap bikin pcb selalu dicetak disana, eh iya satu lagi jika belum pernah cetak pcb disana dan ingin mencoba maka ketika daftar akun PCBWay untuk pertama kalinya maka akan ada saldo welcome bonus sebesar 5 dolar untuk biaya cetak pertamamu, jadi biaya cetak pertamamu adalah seolah gratis jadi silakan daftar akun PCBWay sekarang juga melalui tautan ini. 

Pcbway.com
PCBWay.com

Dapatkan saldo welcome bonus untuk pendaftar pertama
Dapatkan saldo welcome bonus untuk pendaftar pertama

PCB Modul LED seven segment 74HC595
PCB Modul LED seven segment 74HC595

Setelah pesanan paket pcb dari PCBWay datang maka untuk yang penasaran seperti apa maka saya buatkan video unboxing nya dan biasanya sekali pesan saya langsung 2 sampai 3 desain pcb sekaligus dan juga ditambah dengan beberapa modul sensor-sensor dan lain sebagainya mari kita simak dulu video unboxingnya berikut ini. 



Nah setelah itu lanjut kepada perakitan led 7 segment 74HC595 tadi yang dengan tujuan yaitu untuk memanfaatkan stok led yang saya miliki meskipun bekas namun sangat layak pakai karena memang masih bagus hanya saja saya harus melepaskan lednya satu persatu dulu lalu memasangnya pada pcb baru ini, komponen lainnya hanya resistor dan dua IC, satunya shift register 74HC595 dan ic penguat ULN2003, penggunaan ic shift register ini untuk meminimalisir penggunaan pin Input maupun pin output jadi hanya tiga pin perintah saja yakni pin DATA, CLOCK & LATCH sehingga lebih irit dalam penggunaan pin Arduino nya dan juga rangkaian bisa di kaskada sepanjang yang kita mau jadi penggunaan led 7 segment 74HC595 ini lebih fleksibel digunakan untuk proyek apapun yang membutuhkannya.

Setelah dirakit menjadi tiga modul enam digit maka hasilnya sempurna untuk menampilkan keseluruhan waktu, selain menampilkan keseluruhan waktu saya juga menampilkan tanggal disetiap detik ke 20 dan detik ke 40 dan juga untuk mengatur waktunya bisa menggunakan Aplikasi Android lewat Bluetooth HC-05 agar lebih mudah menyinkronkan waktunya secara otomatis sesuai waktu yang ada pada ponsel android. 


Dibawah ini saya tampilkan kode program arduino. Karena ukurannya cukup kecil program jam digital ini bisa menggunakan mikrokontroller atmega8 (Arduino NG/Older dengan chip atmega8 lihat caranya pada video dibawah), kode program saya pisah untuk program utama dan program parameter bluetooth nya. 

Kode program atau sketch jam digital led seven segment 74HC595 yang sama dengan kode program led seven segment CD4094 


#include 
#include 

#define DATA 4    //DS=====jam
#define CLK 3     //SH_CP
#define LATCH 2   //ST_CP

//#define led 13 //led detik

unsigned char h1, h2, m1, m2, s1, s2, d1, d2, mo1, mo2, y1, y2, y3, y4;

//                    0       1     2     3     4     5     6     7     8     9
//byte digit_1[10] = {0xBD, 0x90, 0xA7, 0xB6, 0x9A, 0x3E, 0x3F, 0xB0, 0xBF, 0xBE}; //CA
//byte digit_2[10] = {0xBD, 0x90, 0xA7, 0xB6, 0x9A, 0x3E, 0x3F, 0xB0, 0xBF, 0xBE};

//====================================
byte digit_1[10] = {0xA0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; //CA
///byte digit_2[10] = {0x40, 0xF9, 0x24, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};

//byte digit_1[10]= {0x3F, 0x06,0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; //CC
//byte digit_2[10]= {0x3F, 0x06,0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

//Blue tooth Pram Receive
char        CH_Prm[155];

void setup() {

  Serial.begin(9600);
  Wire.begin();
  rtc.begin();

  pinMode(DATA, OUTPUT);
  pinMode(CLK, OUTPUT);
  pinMode(LATCH, OUTPUT);

  //pinMode(led, OUTPUT);
}

void loop() {
  //tampil_detik();
  show_jam();
}

void show_jam()
{
  DateTime now = rtc.now();

  int s = now.second();
  int m = now.minute();
  int h = now.hour();

  s1 = s % 10;
  s2 = s / 10;
  m1 = m % 10;
  m2 = m / 10;
  h1 = h % 10;
  h2 = h / 10;

  digitalWrite(LATCH, LOW);
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[s1]); // digitTwo
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[s2]); // digitOne
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[m1]); // digitTwo
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[m2]); // digitOne
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[h1]); // digitTwo
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[h2]); // digitOne
  digitalWrite(LATCH, HIGH);
//Menampilkan tanggal setiap detik ke 20 dan detik ke 40
  if (((s2 == 2)&&(s1 == 0)) || ((s2 == 4)&&(s1 == 0))) {
    displayOff();
    delay(100);
    show_tgl();
    delay(2000);
    displayOff();
    delay(250);
  }
}

void show_tgl()
{
  DateTime now = rtc.now();

  int y = now.year();
  int mo = now.month();
  int d = now.date();

  y1 = y % 10;
  y2 = (y / 10) % 10;
  y3 = (y / 100) % 10;
  y4 = (y / 1000) % 10;
  mo1 = mo % 10;
  mo2 = mo / 10;
  d1 = d % 10;
  d2 = d / 10;

  digitalWrite(LATCH, LOW);
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[y1]); // digit_6
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[y2]); // digit_5
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[mo1]); // digit_4
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[mo2]); // digit_3
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[d1]); // digit_2
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[d2]); // digit_1
  digitalWrite(LATCH, HIGH);
}

void displayOff()
{

  //digitalWrite(LATCH, LOW);
  shiftOut(DATA, CLK, MSBFIRST, digit_1[8]); // digitTwo
  shiftOut(DATA, CLK, MSBFIRST, digit_1[8]); // digitOne
  shiftOut(DATA, CLK, MSBFIRST, digit_1[8]); // digitTwo
  shiftOut(DATA, CLK, MSBFIRST, digit_1[8]); // digitOne
  shiftOut(DATA, CLK, MSBFIRST, digit_1[8]); // digitTwo
  shiftOut(DATA, CLK, MSBFIRST, digit_1[8]); // digitOne
  digitalWrite(LATCH, HIGH);
}
 
 

Dibawah ini merupakan kode program parameter bluetooth untuk pengaturan jam 



byte tgl, bln, thn, jam, mnt, dtk, hri;

void serialEvent()
{
  int prm_idx = 0;
  char bchar;

  bchar = Serial.peek();
  while ((bchar != '\n') and (prm_idx < 149))
  {
    if (Serial.available())
    {
      bchar = (char)Serial.read();
      CH_Prm[prm_idx] = bchar;
      prm_idx ++;
    }
  }
  CH_Prm[prm_idx - 1] = '\0';
  LoadPrm();
}

void LoadPrm()
{
  String BT_Param;
  if (CH_Prm[0] == 'S' and CH_Prm[1] == 'D' and CH_Prm[2] == 'T')
  {
    BT_Param = String(CH_Prm);
    tgl  = byte(BT_Param.substring(3, 5).toInt())  ;
    bln  = byte(BT_Param.substring(5, 7).toInt()) ;
    thn = byte(BT_Param.substring(7, 9).toInt()) ;
    jam = byte(BT_Param.substring(9, 11).toInt()) ;
    mnt = byte(BT_Param.substring(11, 13).toInt()) ;
    dtk = byte(BT_Param.substring(13, 15).toInt());
    hri = byte(BT_Param.substring(15, 16).toInt()) ;
    DateTime dt(thn, bln, tgl, jam, mnt, dtk, hri);

    rtc.setDateTime(dt);
  }
}


Kedua sketch diatas bisa di download pada tautan ini.

Proses pembuatan Led 7 segment 74HC595 ini saya dokumentasikan dalam sebuah video di channel youtube Fareed Clarity sebagai bahan referensi atau yang lainnya. Marilah kita simak video perakitan hingga tesnya dibawah ini.


Sabtu, 14 Mei 2022

Membuat Jam Digital LED Strip Neopixel WS2812B atau WS2813

membuat Jam Digital Neopixel WS2812B atau WS2813
membuat Jam Digital Neopixel WS2812B atau WS2813

 Sudah beberapa minggu ini saya sedikit kekurangan ide untuk membuat sebuah proyek elektronika sederhana, nah dari itulah saya ingin mencoba sesuatu yang unik dan mencari referensi dari internet yang mungkin agak sedikit beda dari umumnya dan saya menemukan proyek umum namun unik, kenapa saya bilang proyek umum ya karena proyek nya sebuah jam digital kemudian apa hal uniknya? Nah inilah yang membuat saya tertarik membuatnya yaitu sebuah proyek jam digital seven segment dengan tampilan warna warni menarik berkat adanya led neopixel ws2812b kebetulan saya mempunyai banyak LED Matrix WS2812 tepatnya setelah saya teliti ternyata berjenis LED WS2813 yang memiliki pin data input cadangan LED tersebut tersusun matrik berjumlah 64 dengan tinggi dan lebar masing-masing 8 piksel, led matrix neopixel tersebut saya dapatkan dari gift shop nya PCBWay yang dipesan beserta cetakan pcb lainnya.


Gift shop PCBWay
Gift shop PCBWay 

Untuk membuat jam digital neopixel maka saya perlu melepaskan led yang dibutuhkan dari jajaran matrix 8x8 tersebut, untuk melepas led berjenis smd tidak bisa memakai solder uap karena akan merusak led itu sendiri karena terbuat dari plastik yang akan meleleh apabila terkena panasnya udara dari solder uap, maka dari itu saya memerlukan sebuah hot plate agar pad led yang menempel pada pcb timahnya leleh untuk bisa melepaskannya, nah hot plate tersebut saya menggunakan setrika biasa hingga semua led bisa terlepas dengan sempurna dan kondisi led masih sangat baik dan bekerja sempurna.

cara melepas led smd dengan hot plate strika
cara melepas led smd dengan hot plate strika

Untuk menyusun led ws2813 ini agak sedikit rumit tidak seperti memaki led strip ws2812b karena memiliki sambungan khusus tiga pin yaitu dua pin power supply dan pin input/output, led ws2813 yang saya lepaskan dari pcb led matrix ws2813 itu harus saya langsungkan menghubungkannya ke pad led smd ws2813 tersebut. Namun hal tersebut bukan halangan bagi saya untuk berkreasi, untuk susunan lednya dibawah ini saya gambar kan.


Susunan arah jalur LED WS2812B/WS2813
Susunan arah jalur LED WS2812B/WS2813


Setelah itu perlu adanya pemisah dan pembentuk masing-masing segment, untuk itu saya menggunakan semacam perforated vinyl atau semacam busa gabus mungkin yak, nah diatasnya saya petakan bentuk angka seven segment yang nantinya berguna sebagai guide untuk melubanginya hingga terbentuk empat digit angka berikut tanda titik dua sebagai pemisahnya, lihatlah gambar proses pembuatannya berikut ini. 


Proses membuat bentuk digits Seven Segments
Proses membuat bentuk digits Seven Segments

Proses membuat bentuk digits Seven Segments
Proses membuat bentuk digits Seven Segments

Proses membuat bentuk digits Seven Segments
Proses membuat bentuk digits Seven Segments

Nah setelah kedua proses diatas selesai maka tinggal disusun menumpuk diatas led kemudian ditutup lagi dengan penutup semacam mika putih susu seharusnya namun karena saya tidak memilikinya maka saya berinisiatif mencari penggantinya dalam hal ini saya memakai plastik bekas yang juga hampir sama untuk fungsinya sebagai penyebaran cahaya led untuk tiap segmen nya. Setelah pembuatan display selesai maka selanjutnya tinggal menyambungkan ke mikrokontroller, sambungak kabel dari mikrokontroller ke display seven segment yang telah dibuat tadi hanya menggunakan tiga kabel saja yaitu diantaranya adalah dua kabel jalur power supply dan satu jalur kabel data saja. 


Baca juga : Membuat Jam LED 7 Segment CD4094 Arduino


Mikrokontroller atmega328 saya pasangkan pada modul mini trainer yang telah saya gunakan pada proyek-proyek sebelumnya yang pcbnya telah saya upgrade dari versi sebelumnya karena kemudahan dalam mencetak pcb di PCBWay, hanya dengan modal $5 saja saya sudah bisa mendapatkan 5 bahkan 10 keping pcb dengan berbagi pilihan warna menarik dan layanan yang responsif membuat saya merasa puas dengan hasil dan pelayanannya disamping itu juga jika kita pertama kali order pcb maka kita akan mendapat kesempatan gratis mencetak pcb dengan adanya saldo welcome bonus saat mendaftar pertama kalinya silakan daftar melalui link PCBWay ini. 


Welcome bonus untuk pendaftar akun baru PCBWay
Welcome bonus untuk pendaftar akun baru PCBWay 

Dan inilah modul mini trainer yang akan saya gunakan sebagai modul yang akan dihubungkan dengan display yang telah dibuat tadi karena sudah memiliki slot RTC DS3231 dan slot Bluetooth nya juga jadi sangat cocok diterapkan pada proyek kali ini yang memang jam digital neopixel ws2813 ini nantinya bisa diatur melalui aplikasi Android lewat koneksi Bluetooth HC-05, untuk sambungan data ke display tadi saya menggunakan pin 4 agar dekat dengan pin vcc dan gnd. 


Modul mini trainer
Modul mini trainer kit

Modul mini trainer kit RTC DS3231 & BT HC-05
Modul mini trainer kit RTC DS3231 & BT HC-05

sambungan mikrokontroller dan display
sambungan mikrokontroller dan display 

Setelah penyambungan antara mikrokontroller dan display selesai kini saatnya memrogram mikrokontroller tersebut dengan kode program jam digital neopixel ws2813, untuk kode program dan aplikasi Android nya bisa di download pada halaman ini. 

Jam digital neopixel ws2813 ini selain menampilkan jam juga dapat menampilkan tanggal, bulan dan tahun serta dapat menampilkan juga suhu dengan menambahkan sensor humidity namun sayangnya saat proses pembuatannya saat ini saya belum memiliki sensor tersebut jadi untuk tampilan suhunya hanya 00°C saja tapi nanti saat sudah punya tinggal memasukkan nya saja. Nah tertarik dengan proses perakitan hingga tampilan akhirnya kan? Simak semua proses nya pada video dibawah ini. 








Minggu, 03 April 2022

Membuat Jam LED 7 Segment CD4094 Arduino

 

Jam digital LED seven segment CD4094
Jam digital LED seven segment CD4094

Pada proyek-proyek sebelumnya saya telah membuat rangkaian modul seven segment yang dibuat dari display bekas tepatnya display bekas wartel yang menggunakan IC shift register CMOS CD4094 dan tentunya led seven segment yang jumlahnya sebanyak 16 digit dengan masing-masing shift register CMOS CD4094 kemudian saya jadikan modul seven segment empat digit dibagi dua yang dipisahkan dengan titik dua yang pcbnya dicetak di PCBWay dan seperti inilah hasilnya. 


Modul display seven segment
Modul display seven segment

Tujuannya adalah untuk membuat jam jadwal waktu sholat digital menggunakan seven segment karena ukuran led seven segmentnya juga kecil sekitar 0.8" sehingga sangat cocok untuk digunakan pada proyek tersebut namun untuk ukuran jamnya biasanya harus memakai ukuran yang lebih besar minimal 2" agar lebih jelas kelihatan.


Baca juga : Universal Minimum Sistem Trainer Kit Atmega328


Dirumah saya memiliki banyak sekali led 5mm bekas sehingga menjadikan saya berkeinginan untuk memanfaatkannya menjadi led seven segment yang ukurannya cukup besar, dulu pun saya sebelum seperti saat ini yang selalu mencetak pcb di PCBWay saya pernah membuat led seven segment dari led bekas tersebut dan menjadikannya jam digital seperti video berikut ini. 



Kini setelah saya tau situs PCBWay.com yaitu sebuah tempat cetak pcb profesional dengan kualitas premium namun dengan harga terjangkau yakni hanya sebesar $5 saja saya sudah bisa mendapatkan pcb 5 keping bahkan sampai 10 keping pcb dengan berbagi pilihan warna menarik didukung dengan pelayanan yang baik juga banyak menyediakan program menarik . Disamping keunggulan tadi ada lagi untuk pengguna baru akan mendapatkan saldo welcome bonus sebesar $5 untuk digunakan sebagai biaya cetak pcb di PCBWay, jadi tunggu apalagi segera daftar akun PCBWay pada tautan ini.

Pcbway.com
PCBWay.com

Daftar akun PCBWay dapatkan welcome bonus
Daftar akun PCBWay dapatkan welcome bonus

LED sebanyak yang saya miliki itu akan saya manfaatkan sebagai modul LED seven segment berukuran cukup besar dengan menggunakan shift register CMOS CD4094 seperti modul seven segment jws sebelumnya namun untuk LED seven segment ini perlu menambahkan IC penguat seperti ULN2003 atau ULN2803 karena jika langsung dari IC shift register CMOS CD4094 tentunya tidak akan mencukupi untuk kebutuhan arusnya karena untuk setiap segmentnya saya paralel sebanyak 5 LED dengan tegangan 5V namun tentunya masih memerlukan sebuah resistor sebagai pembatas arusnya. Setelah dirasa cukup saya mulai membuat layout LED seven segment dengan tinggi sekitar 10 cm dengan digit yang dapat digabungkan dengan mudah untuk masing-masing digitnya. Inilah skema yang saya rancang beserta layoutnya. 

Skema modul LED seven segment
Skema modul LED seven segment

Layout dual layer modul LED seven segment
Layout dual layer modul LED seven segment


Untuk download atau cetak langsung pcbnya di situs PCBWay.com file gerber nya silakan download disini. 

Layout yang telah saya desain tersebut kemudian saya cetak di PCBWay.com dengan pilihan warna hitam glossy karena saya lagi suka dengan pcb warna hitam, kelihatan keren dan kontras dengan silkscreen baik bentuk komponen maupun tulisannya, nah setelah pcb dari PCBWay saya terima seperti inilah hasilnya. 

PCB modul LED seven segment cetakan PCBWay

Untuk lebih jelasnya bisa disimak pada video Unboxing berikut ini. 


Nah setelah itu saya mempersiapkan komponen untuk saya pasangkan pada PCB modul LED seven segment diantaranya yaitu komponen utama LED 5mm, resistor 100 ohm, IC shift register CD4094 dan IC driver ULN2003 kemudian mulailah saya rakit satu persatu. Dua digit modul led seven segment digabungkan menjadi satu modul yang nantinya bisa digunakan sebagai modul untuk jam, menit dan detik. Satu modul yang sudah digabungkan untuk input dan outputnya dipasang pinheader siku yang nantinya memudahkan dalam penggabungan untuk ketiga modulnya, jadinya nanti lengkap untuk jam, menit dan detiknya. Berikut ini tampilan modul led seven segment dua digit yang sudah digabung. 

Dua digit LED seven segment
Dua digit LED seven segment

Nah pada gambar diatas itu merupakan hasil percobaan sementara untuk bagian detiknya saja, karena baru dibuat satu modul dua digit led seven segment. Setelah dirakit menjadi tiga modul enam digit maka hasilnya sempurna untuk menampilkan keseluruhan waktu, selain menampilkan keseluruhan waktu saya juga menampilkan tanggal disetiap detik ke 20 dan detik ke 40 dan juga untuk mengatur waktunya bisa menggunakan Aplikasi Android lewat Bluetooth HC-05 agar lebih mudah menyinkronkan waktunya secara otomatis sesuai waktu yang ada pada ponsel android. 


Dibawah ini saya tampilkan kode program arduino. Karena ukurannya cukup kecil program jam digital ini bisa menggunakan mikrokontroller atmega8 (Arduino NG/Older dengan chip atmega8 lihat caranya pada video dibawah), kode program saya pisah untuk program utama dan program parameter bluetooth nya. 


Kode program atau sketch jam digital led seven segment CD4094 



#include < Wire.h>
#include < Sodaq_DS3231.h>

#define DATA 4    //DS=====jam
#define CLK 3     //SH_CP
#define LATCH 2   //ST_CP

//#define led 13 //led detik

unsigned char h1, h2, m1, m2, s1, s2, d1, d2, mo1, mo2, y1, y2, y3, y4;

//====================================
byte digit_1[10] = {0xA0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; //CA
///byte digit_2[10] = {0x40, 0xF9, 0x24, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};

//byte digit_1[10]= {0x3F, 0x06,0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; //CC
//byte digit_2[10]= {0x3F, 0x06,0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};

//Blue tooth Pram Receive
char        CH_Prm[155];

void setup() {

  Serial.begin(9600);
  Wire.begin();
  rtc.begin();

  pinMode(DATA, OUTPUT);
  pinMode(CLK, OUTPUT);
  pinMode(LATCH, OUTPUT);

}

void loop() {
  
  show_jam();
}

void show_jam()
{
  DateTime now = rtc.now();

  int s = now.second();
  int m = now.minute();
  int h = now.hour();

  s1 = s % 10;
  s2 = s / 10;
  m1 = m % 10;
  m2 = m / 10;
  h1 = h % 10;
  h2 = h / 10;

  digitalWrite(LATCH, LOW);
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[s1]); // digit 6
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[s2]); // digit 5
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[m1]); // digit 4
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[m2]); // digit 3
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[h1]); // digit 2
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[h2]); // digit 1
  digitalWrite(LATCH, HIGH);
//Menampilkan tanggal setiap detik ke 20 dan detik ke 40
  if (((s2 == 2)&&(s1 == 0)) || ((s2 == 4)&&(s1 == 0))) {
    displayOff();
    delay(100);
    show_tgl();
    delay(2000);
    displayOff();
    delay(250);
  }
}

void show_tgl()
{
  DateTime now = rtc.now();

  int y = now.year();
  int mo = now.month();
  int d = now.date();

  y1 = y % 10;
  y2 = (y / 10) % 10;
  y3 = (y / 100) % 10;
  y4 = (y / 1000) % 10;
  mo1 = mo % 10;
  mo2 = mo / 10;
  d1 = d % 10;
  d2 = d / 10;

  digitalWrite(LATCH, LOW);
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[y1]); // digit_6
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[y2]); // digit_5
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[mo1]); // digit_4
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[mo2]); // digit_3
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[d1]); // digit_2
  shiftOut(DATA, CLK, MSBFIRST, ~digit_1[d2]); // digit_1
  digitalWrite(LATCH, HIGH);
}

void displayOff()
{

  digitalWrite(LATCH, LOW);
  shiftOut(DATA, CLK, MSBFIRST, digit_1[8]); 
  shiftOut(DATA, CLK, MSBFIRST, digit_1[8]); 
  shiftOut(DATA, CLK, MSBFIRST, digit_1[8]); 
  shiftOut(DATA, CLK, MSBFIRST, digit_1[8]); 
  shiftOut(DATA, CLK, MSBFIRST, digit_1[8]); 
  shiftOut(DATA, CLK, MSBFIRST, digit_1[8]); 
  digitalWrite(LATCH, HIGH);
}


Kode program parameter bluetooth untuk pengaturan jam 

byte tgl, bln, thn, jam, mnt, dtk, hri;

void serialEvent()
{
  int prm_idx = 0;
  char bchar;

  bchar = Serial.peek();
  while ((bchar != '\n') and (prm_idx < 149))
  {
    if (Serial.available())
    {
      bchar = (char)Serial.read();
      CH_Prm[prm_idx] = bchar;
      prm_idx ++;
    }
  }
  CH_Prm[prm_idx - 1] = '\0';
  LoadPrm();
}

void LoadPrm()
{
  String BT_Param;
  if (CH_Prm[0] == 'S' and CH_Prm[1] == 'D' and CH_Prm[2] == 'T')
  {
    BT_Param = String(CH_Prm);
    tgl  = byte(BT_Param.substring(3, 5).toInt())  ;
    bln  = byte(BT_Param.substring(5, 7).toInt()) ;
    thn = byte(BT_Param.substring(7, 9).toInt()) ;
    jam = byte(BT_Param.substring(9, 11).toInt()) ;
    mnt = byte(BT_Param.substring(11, 13).toInt()) ;
    dtk = byte(BT_Param.substring(13, 15).toInt());
    hri = byte(BT_Param.substring(15, 16).toInt()) ;
    DateTime dt(thn, bln, tgl, jam, mnt, dtk, hri);

    rtc.setDateTime(dt);
  }
}


Kedua sketch diatas bisa di download pada tautan ini.

Kini saatnya untuk melihat secara menyeluruh tahapan dari awal hingga akhir proses pembuatan modul LED seven segment CD4094 hingga menjadi sebuah jam digital yang sangat keren sekali dalam video berikut ini.