--> Project I - 8. Jam Digital 6 Digit menggunakan 7-Segment berbasis Arduino | Tutorial arduino lengkap

Wednesday, August 23, 2017

Project I - 8. Jam Digital 6 Digit menggunakan 7-Segment berbasis Arduino

| Wednesday, August 23, 2017
Jam Digital 6 Digit menggunakan 7-Segment



Arduino membaca data RTC (Real Time Clock) data yang diperoleh berupa jam, menit, detik, hari ke-, tanggal, bulan dan tahun.

Pada project kali ini kita membuat jam digital dengan tampilan seven segment 6 digit dengan sistem scanning data 7 segment. Angka yang ditampilkan pada masing masing digit ditampilkan secara bergantian dari digit 1 sampai digit 6 dengan jeda penampilan 3mS/digit sehingga seolah olah angkanya tampil secara bersamaan. RTC yang digunakan DS1307 sebagai sumber clock-nya.

Kebutuhan Hardware
  1. Modul Jam Digital display 7 segment 6 digit
  2. Modul RTC DS1307
  3. Modul Arduino UNO
  4. Power supply +5 Volt

7-Segment | Source        RTC DS1307 | Source


Diagram Blok


Schematic


7-Segment CA Wiring | Source


Koneksi Arduino UNO dengan 7 Segment


Koneksi Arduino dengan RTC


Source Code/Sketch

#include <LiquidCrystal.h>
#include <Wire.h>
#define DS1307_ADDRESS 0x68
byte zero = 0x00;
byte nilai,i;
byte second ,minute,hour, weekDay;
byte monthDay,month,year;
byte seven_seg_digits[10][7] = { { ,0,0,0,0,0,1 }, // = 0
{ 1,0,0,1,1,1,1 }, // = 1
{ 0,0,1,0,0,1,0 }, // = 2
{ 0,0,0,0,1,1,0 }, // = 3
{ 1,0,0,1,1,0,0 }, // = 4
{ 0,1,0,0,1,0,0 }, // = 5
{ 0,1,0,0,0,0,0 }, // = 6
{ 0,0,0,1,1,1,1 }, // = 7
{ 0,0,0,0,0,0,0 }, // = 8
{ 0,0,0,0,1,0,0 } // = 9
};
void setup()
{
pinMode(2, OUTPUT); //a
pinMode(3, OUTPUT);//b
pinMode(4, OUTPUT);//c
pinMode(5, OUTPUT);//d
pinMode(6, OUTPUT);//e
pinMode(7, OUTPUT);//f
pinMode(8, OUTPUT);//g
pinMode(9, OUTPUT);//dig 1
pinMode(10, OUTPUT);//dig 2
pinMode(11, OUTPUT);//dig 3
pinMode(12, OUTPUT);//dig 4
pinMode(13, OUTPUT);//dig 5
pinMode(A0, OUTPUT);//dig 6
Wire.begin();
/*---------seting jam
second = 5; //0-59
minute = 36; //0-59
hour = 11; //0-23
setingRTC();
---------------------*/
}
void loop(){
bacaRTC();
digitalWrite(9,LOW);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
digitalWrite(A0,HIGH);
sevenSegWrite(hour/10);
delay(3);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
digitalWrite(A0,HIGH);
sevenSegWrite(hour%10);
delay(3);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
digitalWrite(A0,HIGH);
sevenSegWrite(minute/10);
delay(3);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,HIGH);
digitalWrite(A0,HIGH);
sevenSegWrite(minute%10);
delay(3);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,LOW);
digitalWrite(A0,HIGH);
sevenSegWrite(second/10);
delay(3);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,HIGH);
digitalWrite(A0,LOW);
sevenSegWrite(second%10);
delay(3);
}
void sevenSegWrite(byte segment) {
byte pin = 2;
for (byte segCount = 0; segCount < 7; ++segCount) {
digitalWrite(pin, seven_seg_digits[segment][segCount]);
++pin;
}
}
byte decToBcd(byte val){
return ( (val/10*16) + (val%10) );
}
byte bcdToDec(byte val) {
return ( (val/16*10) + (val%16) );
}
void bacaRTC(){
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero);
Wire.endTransmission();
Wire.requestFrom(DS1307_ADDRESS, 7);
second = bcdToDec(Wire.read());
minute = bcdToDec(Wire.read());
hour = bcdToDec(Wire.read() & 0b111111);
weekDay = bcdToDec(Wire.read());
monthDay = bcdToDec(Wire.read());
month = bcdToDec(Wire.read());
year = bcdToDec(Wire.read());
}
void setingRTC(){
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero); //stop RTC
Wire.write(decToBcd(second));
Wire.write(decToBcd(minute));
Wire.write(decToBcd(hour));
Wire.write(zero); //start
Wire.endTransmission();
}

Jalannya Alat

Seven segment langsung menampilkan jam sesuai setingan RTC.




Video untuk Project I - 8. Jam Digital 6 Digit menggunakan 7-Segment berbasis Arduino

 


KAMI MELAYANI JASA PEMBUATAN HARDWARE ATAU SOFTWARE BERBASIS ARDUINO

KONTAK KAMI 085743320570 (adi sanjaya)

Related Posts

9 comments:

  1. Bang cara setting jam. Menit gimana?

    ReplyDelete
    Replies
    1. kalau pada posting ini tidak di bahas bang

      Delete
  2. #include
    kenpaa ini ada bg..?
    bukannya ini utk cristal?

    ReplyDelete
  3. #include
    knpa ini ada bg..?
    bukannya ini utk LCD?

    ReplyDelete
  4. hehehe iya mas petrus sinaga , salah itu, tercopy tanpa sengaja

    ReplyDelete
    Replies
    1. Jadi yang bener kayak gimana mas? Saya udah coba kok masih eror yaah?

      Delete
    2. di hapus saja bagian #include

      Delete
  5. Ini menggunakan seven segment comon anoda atau comon catoda

    ReplyDelete