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.
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
/*
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;
}
}
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;
}
}