Cara Memakai Display 7-Segmen: Menampilkan Angka dengan Arduino, Common Anode vs Common Cathode
Bagaimana cara kerja display 7-segmen? Huruf segmen (a–g, dp), common cathode vs common anode, pinout dan resistor, kode menghitung 0–9, display 4 digit dan multiplexing, modul TM1637, ESP32, dan Pico.
Display 7-segmen adalah indikator sederhana yang terdiri dari tujuh LED berbentuk batang yang disusun seperti angka “8”, ditambah satu titik kecil. Jam digital, timer microwave, papan skor, dan pompa bensin semuanya memakainya. Harganya murah, sangat terang, dan mudah dibaca bahkan dari jauh. Di proyek Arduino, display ini adalah salah satu output klasik untuk membuat penghitung, dadu, stopwatch, dan jam.

Bagaimana cara kerja display 7-segmen?
Segmen-segmennya diberi nama dengan huruf: mulai dari a di atas lalu searah jarum jam ada b (kanan atas), c (kanan bawah), d (bawah), e (kiri bawah), dan f (kiri atas); batang tengah adalah g dan titiknya dp. Setiap segmen sebenarnya adalah LED terpisah, dan angka yang berbeda terbentuk tergantung segmen mana yang menyala. Untuk “1”, misalnya, hanya b dan c yang menyala, sedangkan “8” menyalakan ketujuhnya.
| Angka | Segmen yang menyala |
|---|---|
| 0 | a, b, c, d, e, f |
| 1 | b, c |
| 2 | a, b, d, e, g |
| 3 | a, b, c, d, g |
| 4 | b, c, f, g |
| 5 | a, c, d, f, g |
| 6 | a, c, d, e, f, g |
| 7 | a, b, c |
| 8 | a, b, c, d, e, f, g |
| 9 | a, b, c, d, f, g |
Common cathode atau common anode?
Sama seperti LED RGB, salah satu ujung setiap segmen disatukan di pin bersama. Pada display common cathode, pin bersama dihubungkan ke GND dan segmen menyala ketika diberi HIGH. Pada display common anode, pin bersama dihubungkan ke 5V dan segmen menyala ketika diberi LOW. Dari luar keduanya terlihat sama; untuk mengetahui jenis yang kamu punya, hubungkan pin bersama ke GND lalu sentuhkan pin segmen ke 5V melalui resistor 220 Ω. Kalau segmennya menyala, display-nya common cathode; kalau tidak, balik sambungannya dan coba lagi.
| Fitur | Common cathode (CC) | Common anode (CA) |
|---|---|---|
| Pin bersama (3 dan 8) | GND | 5V |
| Untuk menyalakan segmen | HIGH | LOW |
| Di kode | digitalWrite(pin, nyala) | digitalWrite(pin, !nyala) |
Pinout dan pengkabelan Arduino
Pada display satu digit 10 pin yang umum, pin diberi nomor berlawanan arah jarum jam mulai dari kiri bawah, dengan bagian depan display menghadap ke arahmu. Dua pin tengah (3 dan 8) adalah terminal bersama dan sudah terhubung di dalam. Tabel di bawah menunjukkan pin display sekaligus pin Arduino yang dipakai kode di tulisan ini:
| Pin display | Segmen | Pin Arduino |
|---|---|---|
| 7 | a | D2 |
| 6 | b | D3 |
| 4 | c | D4 |
| 2 | d | D5 |
| 1 | e | D6 |
| 9 | f | D7 |
| 10 | g | D8 |
| 5 | dp | D9 |
| 3 dan 8 | Bersama | GND (common cathode) atau 5V (common anode) |
Menghitung dari 0 sampai 9 dengan Arduino
Menyimpan daftar segmen yang dinyalakan setiap angka sebagai bit di dalam array membuat kodenya pendek. Pada contoh di bawah, bit paling kiri dari setiap byte adalah segmen a dan bit paling kanan adalah segmen g. Fungsi showDigit() membaca bit-bit ini satu per satu lalu menuliskannya ke pin; kalau kamu memakai display common anode, cukup ubah COMMON_ANODE menjadi true.
1const int SEG_PINS[7] = {2, 3, 4, 5, 6, 7, 8}; // a, b, c, d, e, f, g
2const bool COMMON_ANODE = false; // ortak anotsa true / true for common anode
3
4// her rakam için a–g segmentleri (1 = yanar) / a–g segments per digit (1 = on)
5const byte DIGITS[10] = {
6 0b1111110, // 0
7 0b0110000, // 1
8 0b1101101, // 2
9 0b1111001, // 3
10 0b0110011, // 4
11 0b1011011, // 5
12 0b1011111, // 6
13 0b1110000, // 7
14 0b1111111, // 8
15 0b1111011 // 9
16};
17
18void showDigit(int n) {
19 for (int i = 0; i < 7; i++) {
20 bool on = DIGITS[n] & (1 << (6 - i)); // a en soldaki bit / a is the leftmost bit
21 digitalWrite(SEG_PINS[i], COMMON_ANODE ? !on : on);
22 }
23}
24
25void setup() {
26 for (int i = 0; i < 7; i++) pinMode(SEG_PINS[i], OUTPUT);
27}
28
29void loop() {
30 for (int n = 0; n <= 9; n++) {
31 showDigit(n);
32 delay(1000);
33 }
34}Display 4 digit dan multiplexing

Display empat digit tidak punya 32 pin segmen terpisah; display ini hanya punya 12 pin: 8 jalur segmen (a–g dan dp) yang dipakai bersama oleh setiap digit, dan 4 pin yang memilih digit mana yang menyala. Karena jalur segmennya dipakai bersama, kamu tidak bisa menampilkan angka yang berbeda di digit yang berbeda pada momen yang sama. Solusinya adalah multiplexing: kamu hanya menyalakan digit ke-1 selama beberapa milidetik, lalu digit ke-2, ke-3, dan ke-4. Ketika siklus ini berulang lebih cepat dari 50 kali per detik, mata melihat keempat digit menyala bersamaan. Daripada menulis pemindaian ini secara manual, jauh lebih mudah memakai library SevSeg:
1#include "SevSeg.h"
2
3SevSeg sevseg;
4
5void setup() {
6 byte digitPins[] = {2, 3, 4, 5}; // hane seçme pinleri / digit select pins
7 byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12, 13}; // a, b, c, d, e, f, g, dp
8 sevseg.begin(COMMON_CATHODE, 4, digitPins, segmentPins, true); // dirençler segmentlerde / resistors on segments
9 sevseg.setBrightness(90);
10}
11
12void loop() {
13 sevseg.setNumber(millis() / 1000); // geçen saniye / elapsed seconds
14 sevseg.refreshDisplay(); // sürekli çağrılmalı / must be called continuously
15}Modul TM1637: 4 digit hanya dengan 2 kabel

Kalau 12 kabel dan pemindaian terus-menerus terdengar merepotkan, modul TM1637 cocok untukmu. Chip driver-nya melakukan multiplexing sendiri; Arduino cukup memberi tahu angka yang harus ditampilkan lewat pin CLK dan DIO. Sebagian besar versinya juga punya titik dua (:) di tengah untuk membuat jam. Instal library TM1637 buatan Avishay Orpaz dari Library Manager; kode di bawah menampilkan menit dan detik dengan titik dua:
1#include <TM1637Display.h>
2
3TM1637Display display(2, 3); // CLK, DIO
4
5void setup() {
6 display.setBrightness(5); // 0–7
7}
8
9void loop() {
10 int minutes = (millis() / 60000) % 60;
11 int seconds = (millis() / 1000) % 60;
12 // ortadaki iki noktayla dakika:saniye / minutes:seconds with the colon
13 display.showNumberDecEx(minutes * 100 + seconds, 0b01000000, true);
14 delay(200);
15}Display 7-segmen dengan ESP32 dan Raspberry Pi Pico
Kamu bisa menghubungkan display satu digit langsung ke ESP32 atau Pico; karena pinnya mengeluarkan 3,3 V, segmennya sedikit lebih redup, jadi pakai resistor yang lebih kecil seperti 100–150 Ω. Modul TM1637 juga bekerja di 3,3 V dan dipakai di ESP32 dengan library Arduino yang sama. Di Pico dengan MicroPython, cukup salin file tm1637.py (library buatan mcauser) ke Pico:
1import tm1637
2from machine import Pin
3import time
4
5tm = tm1637.TM1637(clk=Pin(16), dio=Pin(17)) # tm1637.py Pico'da olmalı / tm1637.py must be on the Pico
6tm.brightness(4) # 0–7
7
8count = 0
9while True:
10 tm.number(count) # -999 … 9999
11 count += 1
12 time.sleep(1)7-segmen, LCD, atau OLED?
| Fitur | 7-segmen | LCD 16x2 | OLED |
|---|---|---|---|
| Yang bisa ditampilkan | Angka dan beberapa huruf | Huruf, angka, karakter kustom | Teks, grafik, ikon |
| Keterbacaan | Sangat terang, terbaca dari jauh | Baik dengan lampu latar | Kontras tinggi tapi kecil |
| Pin yang dibutuhkan | 8 atau lebih (2 dengan TM1637) | 2 (I2C) | 2 (I2C) |
| Paling cocok untuk | Jam, penghitung, papan skor | Menu, teks hasil pengukuran | Grafik, ikon, gadget kecil |
Kalau kamu hanya perlu menampilkan angka dan keterbacaan dari jauh itu penting, display 7-segmen tidak tertandingi. Kalau kamu butuh teks, satuan, dan menu, lihat Cara Memakai Layar LCD I2C.
Ide proyek dengan display 7-segmen
- Dadu elektronik: tampilkan angka acak dari 1 sampai 6 ketika tombol ditekan.
- Penghitung dengan tombol: buat penghitung yang naik dengan satu tombol dan kembali ke nol dengan tombol lain.
- Jam digital: jam dengan TM1637 dan modul jam (RTC) yang tetap menyimpan waktu walaupun listrik padam.
- Hitung mundur: timer yang bisa diatur untuk permainan papan atau eksperimen.
- Penampil suhu: tampilkan suhu yang diukur dengan DHT11 dalam angka besar.
- Tes reaksi: tampilkan dalam milidetik seberapa cepat kamu menekan tombol setelah LED menyala.
Kesalahan umum dan cara mengatasinya
- Tidak ada segmen yang menyala sama sekali: pin bersama terpasang di tempat yang salah; mungkin kamu menghubungkan display common anode ke GND.
- Angkanya terlihat acak-acakan: pemetaan antara segmen dan pin Arduino salah; periksa dengan menyalakan setiap segmen satu per satu.
- Beberapa angka redup: hanya ada satu resistor di pin bersama; pakai resistor terpisah untuk setiap segmen.
- Hanya satu digit yang menyala atau berkedip di display 4 digit: ada delay() di loop(), atau pemindaian tidak terjadi cukup sering.
- Segmen yang seharusnya menyala malah mati dan sisanya menyala: common anode dan katoda tertukar; ubah COMMON_ANODE.
- Kehabisan pin: kurangi jumlah pin dengan modul TM1637, driver MAX7219, atau shift register 74HC595.
Mengetahui bahwa setiap segmen sebenarnya adalah LED adalah kunci untuk memahami display 7-segmen; untuk dasarnya, lihat Apa Itu LED? Di aplikasi BlueGrays kamu akan menemukan proyek menghitung 0–9, penghitung dengan tombol, dadu, jam digital 4 digit, dan animasi bom langkah demi langkah lengkap dengan skema rangkaian dan kode.
Pertanyaan umum
Resistor berapa yang sebaiknya dipakai untuk display 7-segmen?
Di 5 V, 220–330 Ω per segmen sudah sesuai; 220 Ω memberi cahaya lebih terang dan 330 Ω menarik arus lebih kecil. Di board 3,3 V seperti ESP32 dan Pico, kamu bisa memakai 100–150 Ω. Pasang resistor di setiap jalur segmen secara terpisah, bukan di pin bersama.
Bagaimana cara mengetahui display 7-segmen-ku common anode atau common cathode?
Hubungkan pin bersama (3 atau 8) ke GND lalu sentuhkan pin segmen ke 5V melalui resistor 220 Ω; kalau segmennya menyala, display-nya common cathode. Kalau tidak, hubungkan pin bersama ke 5V dan pin segmen ke GND melalui resistor; kalau sekarang menyala, display-nya common anode. Kode komponennya biasanya juga mencantumkan CC atau CA.
Berapa jumlah pin display 7-segmen?
Display satu digit punya 10 pin: 7 segmen, 1 titik, dan 2 pin bersama. Display empat digit punya 12 pin: 8 jalur segmen bersama dan 4 pin pemilih digit. Modul seperti TM1637 cukup dihubungkan dengan 4 pin (CLK, DIO, VCC, GND).
Kenapa hanya satu digit yang menyala di display 4 digit-ku?
Display empat digit bekerja dengan multiplexing, jadi digitnya harus terus dipindai satu per satu. Kalau kamu memakai delay() di loop(), pemindaian berhenti dan hanya digit terakhir yang tetap menyala. Pakai library seperti SevSeg, panggil refreshDisplay() terus-menerus, dan atur waktu dengan millis().
Bisakah display 7-segmen menampilkan huruf?
Sebagian huruf, bisa: A, b, C, d, E, F, H, L, P, U, dan o bisa ditampilkan dengan cukup jelas. Huruf seperti K, M, W, dan X tidak bisa digambar dengan baik memakai tujuh segmen. Kalau kamu perlu menampilkan teks, layar LCD atau OLED lebih cocok.
Bagaimana cara mengendalikan display 7-segmen dengan pin yang lebih sedikit?
Cara termudah adalah memakai modul dengan chip driver: TM1637 mengendalikan empat digit lewat 2 kabel dan MAX7219 mengendalikan delapan digit lewat 3 kabel. Kalau kamu ingin membuat rangkaian sendiri, shift register 74HC595 memungkinkanmu mengendalikan 8 segmen hanya dari 3 pin Arduino.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
Menampilkan Angka 0-9 di Layar 7 Segmen
Tulis sendiri angka-angka akrab yang kamu lihat di lift dan jam digital. Di layar yang terdiri dari tujuh batang cahaya kecil, Arduino menampilkan satu angka dari 0 sampai 9 setiap detik, lalu mulai l

Menampilkan Angka 0-99 di Layar 7 Segmen
Layar dua digit dari batang-batang kecil, seperti di kalkulator, menghitung dari 0 sampai 99. Arduino memecah setiap angka menjadi satuan dan puluhan lalu menyalakan batang yang tepat dari tujuh batan

Penghitung dengan Layar 7 Segmen dan Tombol
Penghitung sederhana dengan tiga tombol: tekan satu dan angka di layar naik satu, tekan yang lain dan turun satu, dan yang ketiga mengembalikannya ke nol. Layar 7 segmen satu digit menghitung dari 0 s

Proyek Dadu
Tidak ada lagi dadu yang hilang ketika main board game: setiap kali kamu menekan tombol, angka acak dari 1 sampai 6 muncul di layar 7 segmen. Setiap tekanan memberi tepat satu hasil, dan hasilnya juga

Menampilkan 0-9999 di Layar 7 Segmen 4 Digit
Di layar angka empat digit, angka-angka berlari dari 0 sampai 9999 lalu mulai lagi dari nol. Arduino mengecoh matamu agar keempat digit terlihat menyala bersamaan: sebenarnya ia menyalakannya satu per

Jam Digital dengan Layar 7 Segmen 4 Digit
Jam digital empat digit yang menyala, mirip jam di oven dapur. Modul jam DS1302 menjaga waktu, dan setiap detik Arduino membaca jam dan menit lalu menampilkannya di layar empat digit, dengan titik kec

Animasi Bom dengan Layar 7 Segmen 4 Digit
Adegan bom berdetak dari film, langsung di mejamu dan sepenuhnya aman: layar 4 digit menghitung mundur dari 1:05, buzzer berbunyi bip setiap detik, dan LED merah berkedip. Kamu yang memutuskan kabel m

Layar 7 Segmen 4 Digit TM1637 ESP32
Kita mengendalikan modul layar 7 segmen 4 digit dengan driver TM1637 memakai ESP32. Hanya dengan 2 pin GPIO (CLK dan DIO), kita menjalankan penghitung dari 0 sampai 9999, mengatur tingkat kecerahan, dan menampilkan karakter titik dua (:) dalam format jam. Berkat library TM1637Display, mengendalikan angka, nilai hex, segmen, dan string sangat mudah.
Artikel lainnya
Aplikasi BlueGrays
Rakit rangkaian ini langkah demi langkah di ponselmu
Skema pengkabelan, kode, dan daftar komponen dalam satu layar. 200+ proyek Arduino, ESP32, dan Pico siap dibuat.
Pindai dengan ponselmu
Arahkan kamera ke kode ini dan toko aplikasi di ponselmu akan terbuka.
atau buka toko aplikasi

