Membuat Display Antrian dengan 7 Segment dan Arduino Uno

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. 


Dengan memahami konsep rangkaian LED maka bisa dipahami rangkaian pada Seven Segment. 
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