- Komponen Diperlukan
- Tampilan Segmen 4-Digit 7
- IC Register Geser 74HC595
- Modul RTC DS3231
- Diagram Sirkuit
- Pemrograman Arduino UNO untuk Multiplexing Seven Segment Display
Jam dinding digital semakin populer sekarang dan lebih baik daripada jam analog karena menyediakan waktu yang akurat dalam jam, menit dan detik dan mudah untuk membaca nilainya. Beberapa jam digital juga memiliki banyak fasilitas seperti menampilkan suhu, kelembaban, pengaturan beberapa alarm, dll. Sebagian besar jam digital menggunakan tampilan tujuh segmen.
Kami sebelumnya membangun banyak rangkaian jam digital baik menggunakan tampilan 7 segmen atau menggunakan LCD 16x2. Di sini Anda bisa mendapatkan desain PCB lengkap dari jam Digital berbasis AVR. Tutorial kali ini adalah tentang membuat jam digital dengan multiplexing tampilan empat-7 segmen menggunakan Arduino UNO dan menampilkan waktu dalam format HH: MM.
Komponen Diperlukan
- Tampilan Segmen 4-Digit 7
- 74HC595 IC
- Modul RTC DS3231
- Arduino UNO
- Papan tempat memotong roti
- Menghubungkan kabel
Tampilan Segmen 4-Digit 7
4-digit 7 Segment display memiliki empat tampilan tujuh segmen yang disatukan atau bisa dikatakan multiplexed together. Mereka digunakan untuk menampilkan nilai numerik dan juga beberapa huruf dengan desimal dan titik dua. Layar dapat digunakan di kedua arah. Empat digit berguna untuk membuat jam digital atau seperti menghitung angka dari 0 hingga 9999. Di bawah ini adalah diagram internal untuk tampilan 4-Digit 7 Segmen.
Setiap segmen memiliki satu LED dengan kontrol LED individual. Ada dua jenis tampilan tujuh segmen seperti Common Anode dan Common Cathode. Gambar di atas menunjukkan tampilan segmen tipe 7 anoda umum.
Anoda Umum
Di Common Anode, semua terminal positif (Anoda) dari semua 8 LED dihubungkan bersama, dinamai COM. Dan semua terminal negatif dibiarkan sendiri atau dihubungkan ke pin mikrokontroler. Dengan menggunakan mikrokontroler, jika logika LOW diatur untuk menerangi segmen LED tertentu dan mengatur logika High untuk mematikan LED.
Katoda Umum
Di Common Cathode, semua terminal Negatif (katoda) dari semua 8 LED dihubungkan bersama, dinamai COM. Dan semua terminal positif dibiarkan sendiri atau dihubungkan ke pin mikrokontroler. Dengan mikrokontroler, jika diatur logika HIGH untuk menerangi LED dan mengatur LOW untuk mematikan LED.
Pelajari lebih lanjut tentang 7 segmen yang ditampilkan di sini dan periksa bagaimana itu dapat dihubungkan dengan mikrokontroler lain:
- 7 Segmen Tampilan Antarmuka dengan Arduino
- 7 Antarmuka Tampilan Segmen dengan Raspberry Pi
- Antarmuka Layar Tujuh Segmen dengan ARM7-LPC2148
- 7 Segmen Tampilan Antarmuka dengan Mikrokontroler PIC
- 7 Segmen Tampilan Antarmuka dengan Mikrokontroler 8051
IC Register Geser 74HC595
The IC 74HC595 juga dikenal sebagai 8-Bit Serial IN - Paralel OUT Shift Register. IC ini dapat menerima input data secara serial dan dapat mengontrol 8 pin output secara paralel. Ini berguna untuk mengurangi pin yang digunakan dari mikrokontroler. Anda dapat menemukan semua proyek terkait register geser 74HC595 di sini.
Bekerja dari 74HC595 IC:
IC ini menggunakan tiga pin seperti Clock, Data & Latch dengan mikrokontroler untuk mengontrol 8 pin output dari IC. Jam digunakan untuk menyediakan pulsa terus menerus dari mikrokontroler dan pin data digunakan untuk mengirim data seperti output mana yang perlu dinyalakan atau dimatikan pada waktu jam masing-masing.
Pinout:
Nomor PIN |
Nama Pin |
Deskripsi |
1,2,3,4,5,6,7 |
Pin Output (Q1 hingga Q7) |
74HC595 memiliki 8 pin keluaran dimana 7 diantaranya adalah pin ini. Mereka dapat dikontrol secara serial |
8 |
Tanah |
Terhubung ke Ground mikrokontroler |
9 |
(Q7) Keluaran Serial |
Pin ini digunakan untuk menghubungkan lebih dari satu 74HC595 sebagai cascading |
10 |
(MR) Master Reset |
Menyetel ulang semua keluaran menjadi rendah. Harus diangkat tinggi untuk pengoperasian normal |
11 |
(SH_CP) Jam |
Ini adalah pin jam di mana sinyal jam harus disediakan dari MCU / MPU |
12 |
(ST_CP) Latch |
Pin Latch digunakan untuk memperbarui data ke pin keluaran. Ini aktif tinggi |
13 |
(OE) Output Aktif |
Output Enable digunakan untuk mematikan output. Harus ditekan rendah untuk pengoperasian normal |
14 |
(DS) Data Serial |
Ini adalah pin yang menjadi tujuan pengiriman data, berdasarkan 8 keluaran yang dikontrol |
15 |
(Q0) Keluaran |
Pin keluaran pertama. |
16 |
Vcc |
Pin ini memberi daya pada IC, biasanya + 5V digunakan. |
Modul RTC DS3231
DS3231 adalah modul RTC. RTC adalah singkatan dari Real Time Clock. Modul ini digunakan untuk mengingat waktu dan tanggal bahkan ketika rangkaian tidak diberi daya. Ini memiliki CR2032 cadangan baterai untuk menjalankan modul tanpa adanya daya eksternal. Modul ini juga dilengkapi sensor suhu. Modul ini dapat digunakan dalam proyek tertanam seperti membuat jam digital dengan indikator suhu, dll. Berikut beberapa proyek berguna yang menggunakannya:
- Pet Feeder Otomatis menggunakan Arduino
- Antarmuka Modul RTC (DS3231) dengan Mikrokontroler PIC: Jam Digital
- Antarmuka modul RTC (DS3231) dengan MSP430: Jam Digital
- ESP32 Real Time Clock menggunakan Modul DS3231
- Jam Dinding Digital pada PCB menggunakan Mikrokontroler AVR Atmega16 dan DS3231 RTC
Pinout dari DS3231:
Nama Pin |
Menggunakan |
VCC |
Terhubung ke sumber daya positif |
GND |
Terhubung ke ground |
SDA |
Pin data serial (I2C) |
SCL |
Pin jam serial (I2C) |
SQW |
Pin keluaran Gelombang Persegi |
32K |
Output osilator 32K |
Fitur & Spesifikasi:
- RTC menghitung detik, menit, jam dan tahun
- Sensor suhu digital dengan akurasi ± 3ºC
- Daftarkan untuk trim Penuaan
- Antarmuka 400Khz I2C
- Konsumsi daya rendah
- CR2032 baterai cadangan dengan masa pakai dua hingga tiga tahun
- Tegangan Operasi: 2.3 hingga 5.5V
Diagram Sirkuit
Koneksi Sirkuit antara DS3231 RTC & Arduino UNO:
DS3231 |
Arduino UNO |
VCC |
5V |
GND |
GND |
SDA |
A4 |
SCL |
A4 |
Koneksi Sirkuit antara IC 74HC595 & Arduino Uno:
74HC595 IC |
Arduino UNO |
11-SH_CP (SRCLK) |
6 |
12-ST_CP (RCLK) |
5 |
14-DS (Data) |
4 |
13-OE (Latch) |
GND |
8-GND |
GND |
10-MR (SRCLR) |
+ 5V |
16-VCC |
+ 5V |
Koneksi Sirkuit antara IC 74HC595 & Seven Segment 4-Digit & Arduino UNO:
4-DigitSevenSegment |
IC 74HC595 |
Arduino UNO |
SEBUAH |
Q0 |
- |
B |
P1 |
- |
C |
P2 |
- |
D |
P3 |
- |
E |
P4 |
- |
F |
P5 |
- |
G |
P6 |
- |
D1 |
- |
10 |
D2 |
- |
11 |
D3 |
- |
12 |
D4 |
- |
9 |
Pemrograman Arduino UNO untuk Multiplexing Seven Segment Display
Kode lengkap dan video kerja terlampir di akhir tutorial ini. Pada bagian pemrograman, akan dijelaskan bagaimana waktu (jam dan menit) diambil dari modul RTC dalam format 24 jam dan kemudian diubah ke dalam format masing-masing untuk ditampilkan dalam tampilan 4-digit 7 Segmen akan dijelaskan.
Untuk menghubungkan modul DS3231 RTC dengan Arduino UNO digunakan bus I2C dari Arduino UNO. Sebuah perpustakaan menelepon
Dalam konsep ini, jam dan menit diambil pertama dari RTC dan digabungkan menjadi satu seperti 0930 (09:30) dan kemudian digit individu dipisahkan seperti seribu, ratus, puluhan, unit dan digit individu diubah menjadi format biner seperti 0 menjadi 63 (0111111). Kode biner ini dikirim ke register geser dan kemudian dari register geser ke tujuh segmen, berhasil menampilkan Digit 0 dalam tampilan tujuh segmen. Dengan cara ini, empat digit digandakan dan jam dan menit ditampilkan.
Awalnya, perpustakaan yang diperlukan disertakan seperti perpustakaan DS3231 dan perpustakaan Wire (perpustakaan I2C).
#include
Pin ditentukan untuk kontrol tujuh segmen. Kontrol ini akan memainkan peran penting dalam multiplexing tampilan.
# tentukan latchPin 5 # tentukan clockPin 6 # tentukan dataPin 4 # tentukan titik 2
Variabel dideklarasikan untuk menyimpan hasil konversi atau mentah yang diambil dari RTC.
int h; // Variabel dideklarasikan untuk hour int m; // Variabel dideklarasikan untuk menit ke ribuan; int ratusan; int puluhan; unit int; bool h24; bool PM;
Selanjutnya objek untuk kelas DS3231 dideklarasikan sebagai RTC untuk menyederhanakan penggunaan di baris selanjutnya.
DS3231 RTC;
Karena modul RTC dihubungkan dengan Arduino dengan menggunakan komunikasi I2C. Jadi, wire.begin () digunakan untuk memulai komunikasi I2C di alamat default RTC karena tidak ada modul I2C lainnya.
Wire.begin ();
The modus pin didefinisikan, apakah GPIO akan berperilaku sebagai output atau input.
pinMode (9, OUTPUT); pinMode (10, OUTPUT); pinMode (11, OUTPUT); pinMode (12, OUTPUT); pinMode (latchPin, OUTPUT); pinMode (clockPin, OUTPUT); pinMode (dataPin, OUTPUT); pinMode (titik, OUTPUT);
Loop berjalan tanpa batas dan membutuhkan waktu dalam jam dan menit dari modul RTC DS3231. 'h24' menunjukkan variabel format 24 jam.
int h = RTC.getHour (h24, PM); int m = RTC.getMinute ();
Kemudian jam dan menit digabungkan menjadi satu angka (contoh jika jam 10 dan menit 60 maka angka 10 * 100 = 1000 + 60 = 1060).
nomor int = h * 100 + m;
The individu digit dari nomor yang diperoleh (misalnya 1060- 1 adalah ribu, 0 adalah hundered, 1 adalah kesepuluh dan 0 adalah digit terakhir). Untuk memisahkan digit, digunakan operator modulus. Misal, pada 1060 didapat 1 maka 1060/1000 = 1,06% 10 = 1). Jadi digit terpisah disimpan dalam variabel terpisah.
ribuan int = angka / 1000% 10; int ratusan = angka / 100% 10; int puluhan = angka / 10% 10; int unit = angka% 10;
Setelah itu pernyataan switch case untuk setiap digit individu ditentukan untuk mengubahnya menjadi format masing-masing (format biner) dan dikirim melalui register geser untuk ditampilkan dalam 7-segmen. Misal (Untuk 1 digit diubah menjadi 06 (0000 0110)). Sehingga dikirim melalui shift dan 1 digit ditampilkan dalam 7-segmen (0 untuk RENDAH, 1 untuk TINGGI).
saklar (t) { case 0: unit = 63; istirahat; kasus 1: unit = 06; istirahat; kasus 2: unit = 91; istirahat; kasus 3: unit = 79; istirahat; kasus 4: unit = 102; istirahat; kasus 5: unit = 109; istirahat; kasus 6: unit = 125; kasus 7: unit = 07; istirahat; kasus 8: unit = 127; istirahat; kasus 9: unit = 103; istirahat; }
Kemudian digit individu dalam format biner dikirim melalui fungsi 'shiftout' dengan MSB terlebih dahulu dan pin digit masing-masing dibuat TINGGI dan pin kait dibuat TINGGI.
digitalWrite (9, LOW); digitalWrite (latchPin, LOW); shiftOut (dataPin, clockPin, MSBFIRST, ribuan); digitalWrite (latchPin, HIGH); digitalWrite (9, TINGGI); penundaan (5);
Ini menyelesaikan kode lengkap. Sebagian besar penjelasan fungsi diberikan di bagian komentar kode tepat di samping baris kode. Frekuensi jam akan menentukan tampilan Waktu dan kualitas multiplexing Yaitu jika menggunakan jam rendah maka kedipan dapat dilihat dimana jika kecepatan jam tinggi maka tidak akan ada kedipan seperti itu dan waktu yang stabil dapat dilihat.
Perhatikan bahwa untuk mengakses modul RTC, tegangan bus I2C harus dijaga. Untuk memberikan saran atau jika Anda ragu, silakan beri komentar di bawah ini.