
Display 7 segment merupakan komponen elektronika yang berfungsi untuk menampilkan karakter angka atau huruf tertentu. Display 7 segment terdiri dari 7 susunan LED yang dibentuk menyerupai angka “8” dan 1 LED yang membentuk karakter DotPoint (.) 7 susunan LED tersebut diberi nama segmen A hingga G.
Prinsip Kerja Display 7 segment yaitu memanfaatkan kondisi ON/OFF setiap segmen LED untuk membentuk karakter tertentu. Sehingga untuk membentuk karakter tertentu, kontroler hanya perlu memberikan kondisi untuk menyalakan segmen LED yang diinginkan pada display 7 segmen, dan mematikan bagian segmen LED yang lain.


Display 7 segmen common anode memiliki tegangan referensi positif, oleh karena itu pin common dihubungkan dengan sumber tegangan positif (VCC ±5 Volt). Sehingga, untuk menghidupkan LED diperlukan tegangan negatif (GND) dan kondisi yang digunakan adalah LOW.


Display 7 segmen common cathode memiliki tegangan referensi negatif, oleh karena itu pin common dihubungkan dengan sumber tegangan negatif (GND). Sehingga, untuk menghidupkan LED diperlukan tegangan positif (VCC) dan kondisi yang digunakan adalah HIGH.


Percobaan 17: Akses Display 7 segment 1 Digit


- Hubungkan A-G dengan pin D47-D53 ATMEGA 2560 secara berurutan
- Hubungkan board ATMEGA 2560 dengan Komputer menggunakan kabel USB.
- Bukalah IDE Arduino, kemudian ketikkan kode program/sketch atau buka file SEVEN_SEGMEN_1_DIGIT
- Compile menggunakan verify button (tanda ceklist pada IDE arduino) untuk mengecek ada atau tidaknya error/kesalahan dalam pengetikan.
- Upload program ke arduino dengan cara, pilih File > Upload to I/O board, atau tekan tombol tanda panah pada jendela IDE arduino.
Coding:
int disp_pin[7]; /* array for a-g pins of 7-Segment display */
void define_segment_pins(int a, int b, int c, int d, int e, int f, int g) /* Assigns 7-segment display pins to board */
{
disp_pin[0] = a;
disp_pin[1] = b;
disp_pin[2] = c;
disp_pin[3] = d;
disp_pin[4] = e;
disp_pin[5] = f;
disp_pin[6] = g;
}
void display_number(int num) /* Function for displaying number (0-9) */
{
switch(num)
{
case 0:
digitalWrite(disp_pin[0], LOW); /* Drive disp_pin[0] to LOW */
digitalWrite(disp_pin[1], LOW); /* Driving LOW turns on LED segment for common anode display */
digitalWrite(disp_pin[2], LOW);
digitalWrite(disp_pin[3], LOW);
digitalWrite(disp_pin[4], LOW);
digitalWrite(disp_pin[5], LOW);
digitalWrite(disp_pin[6], HIGH);
break;
case 1:
digitalWrite(disp_pin[0], HIGH); /* Drive disp_pin[7] to HIGH */
digitalWrite(disp_pin[1], LOW);
digitalWrite(disp_pin[2], LOW);
digitalWrite(disp_pin[3], HIGH); /* Driving HIGH turns off LED segment for common anode display */
digitalWrite(disp_pin[4], HIGH);
digitalWrite(disp_pin[5], HIGH);
digitalWrite(disp_pin[6], HIGH);
break;
case 2:
digitalWrite(disp_pin[0], LOW);
digitalWrite(disp_pin[1], LOW);
digitalWrite(disp_pin[2], HIGH);
digitalWrite(disp_pin[3], LOW);
digitalWrite(disp_pin[4], LOW);
digitalWrite(disp_pin[5], HIGH);
digitalWrite(disp_pin[6], LOW);
break;
case 3:
digitalWrite(disp_pin[0], LOW);
digitalWrite(disp_pin[1], LOW);
digitalWrite(disp_pin[2], LOW);
digitalWrite(disp_pin[3], LOW);
digitalWrite(disp_pin[4], HIGH);
digitalWrite(disp_pin[5], HIGH);
digitalWrite(disp_pin[6], LOW);
break;
case 4:
digitalWrite(disp_pin[0], HIGH);
digitalWrite(disp_pin[1], LOW);
digitalWrite(disp_pin[2], LOW);
digitalWrite(disp_pin[3], HIGH);
digitalWrite(disp_pin[4], HIGH);
digitalWrite(disp_pin[5], LOW);
digitalWrite(disp_pin[6], LOW);
break;
case 5:
digitalWrite(disp_pin[0], LOW);
digitalWrite(disp_pin[1], HIGH);
digitalWrite(disp_pin[2], LOW);
digitalWrite(disp_pin[3], LOW);
digitalWrite(disp_pin[4], HIGH);
digitalWrite(disp_pin[5], LOW);
digitalWrite(disp_pin[6], LOW);
break;
case 6:
digitalWrite(disp_pin[0], LOW);
digitalWrite(disp_pin[1], HIGH);
digitalWrite(disp_pin[2], LOW);
digitalWrite(disp_pin[3], LOW);
digitalWrite(disp_pin[4], LOW);
digitalWrite(disp_pin[5], LOW);
digitalWrite(disp_pin[6], LOW);
break;
case 7:
digitalWrite(disp_pin[0], LOW);
digitalWrite(disp_pin[1], LOW);
digitalWrite(disp_pin[2], LOW);
digitalWrite(disp_pin[3], HIGH);
digitalWrite(disp_pin[4], HIGH);
digitalWrite(disp_pin[5], HIGH);
digitalWrite(disp_pin[6], HIGH);
break;
case 8:
digitalWrite(disp_pin[0], LOW);
digitalWrite(disp_pin[1], LOW);
digitalWrite(disp_pin[2], LOW);
digitalWrite(disp_pin[3], LOW);
digitalWrite(disp_pin[4], LOW);
digitalWrite(disp_pin[5], LOW);
digitalWrite(disp_pin[6], LOW);
break;
case 9:
digitalWrite(disp_pin[0], LOW);
digitalWrite(disp_pin[1], LOW);
digitalWrite(disp_pin[2], LOW);
digitalWrite(disp_pin[3], LOW);
digitalWrite(disp_pin[4], HIGH);
digitalWrite(disp_pin[5], LOW);
digitalWrite(disp_pin[6], LOW);
break;
default:
digitalWrite(disp_pin[0], HIGH);
digitalWrite(disp_pin[1], LOW);
digitalWrite(disp_pin[2], LOW);
digitalWrite(disp_pin[3], LOW);
digitalWrite(disp_pin[4], LOW);
digitalWrite(disp_pin[5], HIGH);
digitalWrite(disp_pin[6], LOW);
break;
}
}
void setup() {
pinMode(47, OUTPUT);
pinMode(48, OUTPUT);
pinMode(49, OUTPUT);
pinMode(50, OUTPUT);
pinMode(51, OUTPUT);
pinMode(52, OUTPUT);
pinMode(53, OUTPUT);
define_segment_pins(47,48,49,50,51,52,53); /* a-g segment pins to Arduino */
}
void loop() {
int i;
for(i = 9; i>=0; i--)
{
display_number(i);
delay(1000);
}
for(i = 0; i<=9; i++)
{
display_number(i);
delay(1000);
}
}
Demo Video:
Percobaan 18: Akses Display 7 segment 8 Digit


- Hubungkan DIN, CS, CLK dengan pin D51, D49, D52 ATMEGA 2560 secara berurutan
- Hubungkan board ATMEGA 2560 dengan Komputer menggunakan kabel USB.
- Bukalah IDE Arduino, kemudian ketikkan kode program/sketch atau buka file SEVEN_SEGMENT_8DIGIT_DIGITLEDDISPLAY_PALING_BAGUS
- Compile menggunakan verify button (tanda ceklist pada IDE arduino) untuk mengecek ada atau tidaknya error/kesalahan dalam pengetikan.
- Upload program ke arduino dengan cara, pilih File > Upload to I/O board, atau tekan tombol tanda panah pada jendela IDE arduino.
Coding SEVEN_SEGMENT_8DIGIT_DIGITLEDDISPLAY_PALING_BAGUS:
#include "DigitLedDisplay.h"
//PAKAI UNO
/* Arduino Pin to Display Pin
7 to DIN,
6 to CS,
5 to CLK
#define DIN 7
#define CS 6
#define CLK 5 */
/* utk mega
Now we need a LedControl to work with.
***** These pin numbers will probably not work with your hardware *****
pin 51 is connected to the DataIn
pin 52 is connected to the CLK
pin 49 is connected to LOAD CS
We have only a single MAX72XX.
*/
//mega2560
#define DIN 51
#define CS 49
#define CLK 52
DigitLedDisplay ld = DigitLedDisplay(DIN, CS, CLK);
void setup() {
//Robojax Arduino Step By Step Course http://robojax.com/L/?id=338
/* Set the brightness min:1, max:15 */
ld.setBright(6);
/* Set the digit count */
ld.setDigitLimit(8);
}
void loop() {
//Robojax Arduino Step By Step Course http://robojax.com/L/?id=338
/* Prints data to the display */
ld.printDigit(12345678);
delay(3000);
ld.clear();
ld.printDigit(22222222);
delay(500);
ld.clear();
ld.printDigit(44444444);
delay(500);
ld.clear();
ld.write(5, B01111111);
delay(5000);
ld.clear();
for (int i = 0; i < 100; i++) {
ld.printDigit(i);
/* Start From Digit 4 */
ld.printDigit(i, 4);
delay(50);
}
for (int i = 0; i <= 10; i++) {
/* Display off */
ld.off();
delay(150);
/* Display on */
ld.on();
delay(150);
}
/* Clear all display value */
ld.clear();
delay(500);
for (long i = 0; i < 100; i++) {
ld.printDigit(i);
delay(25);
}
for (int i = 0; i <= 20; i++) {
/* Select Digit 5 and write B01100011 */
ld.write(5, B01100011);
delay(200);
/* Select Digit 5 and write B00011101 */
ld.write(5, B00011101);
delay(200);
}
/* Clear all display value */
ld.clear();
delay(500);
ld.printDigit(2019, 3);
delay(4000);
}// loop ends
Demo Video:
.
TAMBAHAN:
Coding Modifikasi (Menggunakan 2 potensiometer dan datanya ditampilkan pada 7 segment 8 digit --> tiap potensiometer menggunakan 4 digit display 7 segment):
#include "DigitLedDisplay.h"
//mega2560
#define DIN 51
#define CS 49
#define CLK 52
DigitLedDisplay ld = DigitLedDisplay(DIN, CS, CLK);
int pot1;
int pot2;
void setup() {
//Robojax Arduino Step By Step Course http://robojax.com/L/?id=338
/* Set the brightness min:1, max:15 */
ld.setBright(6);
/* Set the digit count */
ld.setDigitLimit(8);
}
void loop() {
pot1 = analogRead(A6);
pot2 = analogRead(A7);
ld.printDigit(pot1);
ld.printDigit(pot2, 4);
delay(50);
ld.clear();
}// loop ends