Tutorial Project Arduino Akses Seven Segment Display dengan Keypad


Dalam tutorial Arduino Indonesia kali ini akan mengulas tentang bagaimana mengakses keypad matrix sebagai input dan menampilkan output dalam tampilan seven segment display.



Dapat dilihat dalam video tutorial simulasi Arduino dengan Proteus tersebut bahwa memungkinkan untuk akses seven segment display dengan menggunakan keypad. Untuk keypad yang digunakan ialah keypad 3 kolom dan 4 baris, sedangkan untuk seven segment display yang digunakan ialah common anode. Untuk menghemat penggunaan pin pada board Arduino Uno, maka digunakan decoder IC 7447 untuk seven segment display. Berikut ini adalah gambar konfigurasi wiring antara board Arduino Uno dengan decoder seven segment display dan keypad.

<img src="arduino_keypad_seven_segment.png" alt="arduino_keypad_seven_segment">


Dari gambar tersebut wiring diagram.
  • Pin kolom 1 keypad terhubung dengan pin digital 5
  • Pin kolom 2 keypad terhubung dengan pin digital 6
  • Pin kolom 3 keypad terhubung dengan pin digital 7
  • Pin baris A keypad terhubung dengan pin digital 4
  • Pin baris B keypad terhubung dengan pin digital 3
  • Pin baris C keypad terhubung dengan pin digital 2
  • Pin baris D keypad terhubung dengan pin digital 1
  • Pin A decoder 7447 terhubung dengan pin digital 11
  • Pin B decoder 7447 terhubung dengan pin digital 10
  • Pin C decoder 7447 terhubung dengan pin digital 9
  • Pin D decoder 7447 terhubung dengan pin digital 8
Untuk source code yang digunakan ialah sebagai berikut.

/*
Program Akses Keypad dan Seven Segment Display
Arduino Uno

Loki Lang
*/

#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 3;
char hexaKeys[ROWS][COLS] = {
  {'1', '2', '3'},
  {'4', '5', '6'},
  {'7', '8', '9'},
  {'*', '0', '#'}
};

byte rowPins[ROWS] = {4, 3, 2, 1};
byte colPins[COLS] = {5, 6, 7};

Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

int last;

void setup()
{
  last = 0;
}

void loop()
{
  DDRB = 15;
  char customKey = customKeypad.getKey();

  switch (customKey)
  {
    case '1':
      PORTB = 8;
      last = PORTB;
      break;

    case '2':
      PORTB = 4;
      last = PORTB;
      break;

    case '3':
      PORTB = 12;
      last = PORTB;
      break;

    case '4':
      PORTB = 2;
      last = PORTB;
      break;

    case '5':
      PORTB = 10;
      last = PORTB;
      break;

    case '6':
      PORTB = 6;
      last = PORTB;
      break;

    case '7':
      PORTB = 14;
      last = PORTB;
      break;

    case '8':
      PORTB = 1;
      last = PORTB;
      break;

    case '9':
      PORTB = 9;
      last = PORTB;
      break;

    case '0':
      PORTB = 0;
      last = PORTB;
      break;

    case '*':
      PORTB = last;
      break;

    case '#':
      PORTB = 15;
      break;
  }
}