Display antrian yang dibuat memiliki 2 buah Seven Segment sebagai display satuan dan display puluhan. Seven Segment ada 2 jenis yakin seven segment common anoda dan katoda, berikut perbedaannya.
Sinyal data dan clock dari Arduino Uno dihubungkan terlebih dahulu ke IC 74HC595 sebagai Shift Register yang mengubah sinyal data dan clock dari Arduino menjadi sinyal 8 keluaran yang terhubung dengan seven segment.
Karena ada 2 seven segment untuk display satuan dan puluhan maka dibutuhkan juga 2 IC 74HC595.
Sistem Antrian dengan Seven Segment Anode
Urutan programnya :
#define DATA 13 // connect to pin 14 on the 74HC595
#define LATCH 12 // connect to pin 12 on the 74HC595
#define CLOCK 11 // connect to pin 11 on the 74HC595
#define UP A0
#define DOWN A1
// set up the array with the segments for 0 to 9, A to F (from Table 6-2)
int data [] = {3, 159, 37, 13, 153, 73, 65, 31, 1, 9};
void setup() {
pinMode(UP, INPUT_PULLUP);
pinMode(DOWN, INPUT_PULLUP);
pinMode(LATCH, OUTPUT);
pinMode(CLOCK, OUTPUT);
pinMode(DATA, OUTPUT);
}
void loop() {
static int j = 0;
displayNumber(j);
delay(300);
if (digitalRead(UP) == 0) {
j = j+1;
}
if (digitalRead(DOWN) == 0) {
j = j-1;
}
}
void displayNumber(int n) {
int left, right = 0;
if (n < 10) {
left = n / 10;
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, data [n]);
shiftOut(DATA, CLOCK, LSBFIRST, data[left]);
digitalWrite(LATCH, HIGH);
}
else if (n >= 10) {
right = n % 10; // remainder of dividing the number to display by 10
left = n / 10; // quotient of dividing the number to display by 10
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, data [right]);
shiftOut(DATA, CLOCK, LSBFIRST, data [left]);
digitalWrite(LATCH, HIGH);
}
}
Sistem Antrian dengan Seven Segment Katode
Urutan programnya :
#define DATA 13 // connect to pin 14 on the 74HC595
#define LATCH 12 // connect to pin 12 on the 74HC595
#define CLOCK 11 // connect to pin 11 on the 74HC595
#define UP A0
#define DOWN A1
// set up the array with the segments for 0 to 9, A to F (from Table 6-2)
int data [] = {252, 96, 218, 242, 102, 182, 190, 224, 254, 246 };
void setup() {
pinMode(UP, INPUT_PULLUP);
pinMode(DOWN, INPUT_PULLUP);
pinMode(LATCH, OUTPUT);
pinMode(CLOCK, OUTPUT);
pinMode(DATA, OUTPUT);
}
void loop() {
static int j = 0;
displayNumber(j);
delay(300);
if (digitalRead(UP) == 0) {
j = j+1;
}
if (digitalRead(DOWN) == 0) {
j = j-1;
}
}
void displayNumber(int n) {
int left, right = 0;
if (n < 10) {
left = n / 10;
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, data [n]);
shiftOut(DATA, CLOCK, LSBFIRST, data[left]);
digitalWrite(LATCH, HIGH);
}
else if (n >= 10) {
right = n % 10; // remainder of dividing the number to display by 10
left = n / 10; // quotient of dividing the number to display by 10
digitalWrite(LATCH, LOW);
shiftOut(DATA, CLOCK, LSBFIRST, data [right]);
shiftOut(DATA, CLOCK, LSBFIRST, data [left]);
digitalWrite(LATCH, HIGH);
}
}


Comments