Dosen Pengampu :
Amperawan, S.T., M.T
Disusun Oleh :
Nama : Septi Adila Marlianda
NIM : 061940341940
Kelas : 5 ELA
No. Absen : 21
II. Tujuan
a. Dapat mengkoneksikan mikrokontroler dengan IC DS1307.
b. Dapat mengomunikasi I2C dalam mikrokontroler dengan IC DS1307.
c. Dapat mengkoneksikan ATMEGA8535 dengan IC DS1307
d. Dapat mengetahui dan memahami fungsi ATMEGA8535.
IV. Percobaan
V.1 Simulasi Rangkaian
RTC_DS1307 rtc;
char namaHari[7][12] = {"Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"};
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Dila dan Fiza");
lcd.setCursor(0, 1);
lcd.print("PrakTAM");
lcd.clear();
if (!rtc.begin()) {
Serial.println("RTC TIDAK TERBACA");
while (1);
}
if (!rtc.isrunning()) {
Serial.println("RTC is NOT running!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
}
void loop() {
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(namaHari[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
lcd.setCursor(0, 0);
lcd.print(now.hour(), DEC);
lcd.print(" : ");
lcd.print(now.minute(), DEC);
lcd.print(" : ");
lcd.print(now.second(), DEC);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(namaHari[now.dayOfTheWeek()]);
lcd.print(",");
lcd.print(now.day(), DEC);
lcd.print("/");
lcd.print(now.month(), DEC);
lcd.print("/");
lcd.print(now.year(), DEC);
delay(1000);
}
Config Lcdpin = Pin , Rs = Portb.5 , E = Portb.4 , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 =
Portb.0
Config Lcd = 16 * 2
Cursor Off
$lib "ds1307clock.lib"
Print "DS1307"
Waitms 100
Time$ = "13:48:00"
Date$ = "12-13-21"
Cls
Cursor Off
Locate 1 , 1
Lcd "Tanggal: " ; _day ; ":" ; _month ; ":" ; _year
Locate 2 , 1
Lcd "Waktu : " ; _hour ; "-" ; _min ; "-" ; _sec
Wait 1
Mulai:
Do
Tanda = Inkey()
If Tanda = "A" Then
'untuk ganti settingan waktu RTC tekan huruf A pada keyboard
Input "Masukkan waktu (hh:mm:ss):" , Waktu
Jam = Mid(waktu , 1 , 2)
Menit = Mid(waktu , 4 , 2)
Detik = Mid(waktu , 7 , 2)
Time$ = Jam + ":" + Menit + ":" + Detik
A = Val(jam)
B = Val(menit)
C = Val(detik)
_hour = A
_min = B
_sec = C
Gosub Settime
End If
_day = Y
_month = X
_year = Z
Gosub Setdate
End If
Getdatetime:
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cstart
I2cwbyte Ds1307r
I2crbyte _sec , Ack
I2crbyte _min , Ack
I2crbyte _hour , Ack
I2crbyte Weekday , Ack
I2crbyte _day , Ack
I2crbyte _month , Ack
I2crbyte _year , Nack
I2cstop
_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
Return
Setdate:
_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 4
I2cwbyte _day
I2cwbyte _month
I2cwbyte _year
I2cstop
Return
Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
I2cstart
I2cwbyte Ds1307w
I2cwbyte 0
I2cwbyte _sec
I2cwbyte _min
I2cwbyte _hour
I2cstop
Return
V. Hasil Percobaan
VI. Analisa
RTC berbasis Arduino Uno
Untuk melakukan percobaan kali ini terebih dahulu harus ada Arduino Uno, RTC
DS1307 dan LCD 16 x 2 untuk menampilkan waktu dan tanggalnya, semua dijadikan
rangkaian seperti yang ada pada V.1. Arduino Uno adalah board mikrokontroler berbasis
ATmega328. Arduino Uno memiliki sejumlah fasilitas untuk berkomunikasi dengan
komputer, Arduino lain, atau mikrokontroler lainnya. ATmega328 menyediakan UART TTL
(5V) untuk komunikasi serial, yang tersedia di pin digital 0 (RX) dan 1 (TX). ATmega328
juga mendukung I2C (TWI) dan komunikasi SPI. Dalam antarmuka Arduino Uno dengan
RTC DS1307, Arduino Uno bertindak sebagai Master dan DS1307 bertindak sebagai Slave.
Master dalam Komunikasi I2C yaitu Arduino dalam hal ini, bertanggung jawab atas sinyal
clock, akses bus, sinyal start dan stop.
Kemudian juga harus mempunyai aplikasi Arduino IDE untuk dapat memprogram
Aruino IDE, Lalu mengetikan program seperti yang ada pada V.2. Untuk mengupload
programnya ke board Arduino IDE terlebih dahulu memilih board yang ada pada tab “Tools”
yaitu Arduino/Genuino Uno, Kemudian memilih Port yang terhubung yaitu COM3. Setelah
semuanya selesai, Selanjutnya klik upload atau Ctrl +U kemudian tampilannya dapat dilihat
seperti gambar yang ada dibawah ini.
1. Board pilih sesuai dengan atmega pada sismin yang akan digunakan.
2. Clock setting sesuai dengan kristal yang akan digunakan pada sismin.
3. BOD atur pada BOD 4.0V hal ini sismin beroprasi pada tegangan 5V (kurang lebih).
4. Pinout patikan atur pada "Standard pinout".
5. Bootlader "Yes (UART0)".
6. Programmer "USBasp".
Selanjutnya klik Tools pilih Burn Bootloader tunggu proses hingga selesai.
Selanjutnya proses peng-uploadan, pertama – tama atur board pada menu Tools seperti diatas.
Lalu klik Upload Using Programmer atau Ctrl +Shift+U, tunggu sampai done uploading.
Kemudian tampilannya dapat dilihat seperti gambar yang ada dibawah ini.
VII. Kesimpulan
RTC berbasis Arduino Uno
1. Arduino Uno adalah board mikrokontroler berbasis ATmega328, ATmega328
mendukung komunikasi I2C.
2. Bus I2C bekerja berdasar prinsip master dan slave pada pin SDA (serial data) dan
SCL (serial clock).
3. Arduino Uno bertindak sebagai Master dan DS1307 bertindak sebagai Slave.