Komponen · 5 mnt baca

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.

Display 7-segmen satu digit
Display 7-segmen satu digit: tujuh segmen batang dan satu titik (dp); punya 10 pin, lima di bagian bawah dan lima di bagian atas.

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.

AngkaSegmen yang menyala
0a, b, c, d, e, f
1b, c
2a, b, d, e, g
3a, b, c, d, g
4b, c, f, g
5a, c, d, f, g
6a, c, d, e, f, g
7a, b, c
8a, b, c, d, e, f, g
9a, 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.

FiturCommon cathode (CC)Common anode (CA)
Pin bersama (3 dan 8)GND5V
Untuk menyalakan segmenHIGHLOW
Di kodedigitalWrite(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 displaySegmenPin Arduino
7aD2
6bD3
4cD4
2dD5
1eD6
9fD7
10gD8
5dpD9
3 dan 8BersamaGND (common cathode) atau 5V (common anode)
Beri setiap segmen resistornya sendiri (220–330 Ω di 5 V). Kalau kamu memasang satu resistor saja di pin bersama, arusnya terbagi ke sebanyak segmen yang menyala: “1” terlihat sangat terang dan “8” terlihat redup. Untuk menghitung nilai resistornya, pakai alat resistor LED.

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.

C++ (Arduino IDE)
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}
Tambahkan tombol ke kode ini dan kamu bisa membuat penghitung yang naik satu setiap kali ditekan, atau dadu elektronik yang menampilkan angka acak. Pengkabelan tombol dan bouncing dibahas di Cara Menghubungkan Push Button ke Arduino.

Display 4 digit dan multiplexing

Display 7-segmen 4 digit
Display 7-segmen 4 digit: 8 jalur segmen dipakai bersama oleh keempat digit, dan setiap digit juga punya pin pemilihnya sendiri; total 12 pin.

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:

C++ (Arduino IDE)
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}
Jangan pakai delay() di dalam loop() dengan display multiplexing. Pemindaian akan berhenti dan hanya digit terakhir yang tetap menyala. Atur waktu dengan millis() dan pastikan refreshDisplay() terus dipanggil.

Modul TM1637: 4 digit hanya dengan 2 kabel

Modul display 7-segmen 4 digit TM1637
Modul TM1637: chip driver di dalamnya melakukan pemindaian; cukup dihubungkan dengan 4 pin: CLK, DIO, VCC, dan GND.

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:

C++ (Arduino IDE)
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:

MicroPython
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?

Fitur7-segmenLCD 16x2OLED
Yang bisa ditampilkanAngka dan beberapa hurufHuruf, angka, karakter kustomTeks, grafik, ikon
KeterbacaanSangat terang, terbaca dari jauhBaik dengan lampu latarKontras tinggi tapi kecil
Pin yang dibutuhkan8 atau lebih (2 dengan TM1637)2 (I2C)2 (I2C)
Paling cocok untukJam, penghitung, papan skorMenu, teks hasil pengukuranGrafik, 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.

Lihat semua proyek
Menampilkan Angka 0-9 di Layar 7 Segmen
#41Menengah
Premium

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

4.5(30)
43
Menampilkan Angka 0-99 di Layar 7 Segmen
#42Mahir
Premium

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

4.5(27)
35
Penghitung dengan Layar 7 Segmen dan Tombol
#43Mahir
Premium

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

4.6(35)
47
Proyek Dadu
#79Menengah
Premium

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

5.0(48)
67
Menampilkan 0-9999 di Layar 7 Segmen 4 Digit
#47Menengah
Premium

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

4.4(19)
25
Jam Digital dengan Layar 7 Segmen 4 Digit
#48Menengah
Premium

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

4.8(56)
73
Animasi Bom dengan Layar 7 Segmen 4 Digit
#49Pemula
Premium

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

4.8(63)
79
Layar 7 Segmen 4 Digit TM1637 ESP32
#125Menengah
Premium

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.

4.7(20)
32