Keypad untuk arduino terdiri atas numerik 0-9 serta ‘*’ dan ‘#’ berfungsi sebagai input bagi arduino. Arduino membaca keypad (type membrane) dengan metode scanning 7 kabel (untuk keypad 3×4), atau adc satu kabel. Dengan menggunakan library keypad, nilai input yang diterima arduino sudah berupa karakter ‘0’ – ‘9’, ‘*’ dan ‘#’, nilai ini bisa baca langsung sebagai perintah seperti contoh berikut ”
void loop(){
char key = keypad.getKey();
if (key){
Serial.println(key);
switch(key)
{
case '0':
digitalWrite(2, HIGH);
break;
case '1':
digitalWrite(3, HIGH);
break;
case '*'://reset
digitalWrite(2, LOW);
digitalWrite(3, LOW);
break;
}
}
}
Input deret angka
Supaya keypad berfungsi sebagai input nilai angka (misal 0-1000) seperti untuk keperluan input variabel ‘setting batas sensor analog’, maka keypad dibaca beberapa kali dengan ketentuan:
- karakter ‘0’ – ‘9’ sebagai input numerik
- karakter ‘*’ berfungsi sebagai reset (kembali ke 0)
- karakter ‘#’ berfungsi sebagai enter layaknya keybboard laptop dan menyimpan pembacaan keypad sebagai nilai variabel
berikut skema yang digunakan untuk pembacaan keypad dengan arduino:

koding input nilai variabel dari keypad :
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rowPins[ROWS] = {8, 7, 6, 5};
byte colPins[COLS] = {4, 3, 2};
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
LiquidCrystal_I2C lcd(0x3F, 16, 2);//coba juga 0x27
char stringAngka[17];
int indexKeypad = 0;
void setup() {
Serial.begin(9600);
Serial.println("Input angka menggunakan keypad");
Serial.println("https://www.project.semesin.com/");
Serial.println();
Wire.begin();
Wire.beginTransmission(0x3F);
if (Wire.endTransmission())
{
lcd = LiquidCrystal_I2C(0x27, 16, 2);
}
lcd.begin();
lcd.backlight();
lcd.print("Input angka");
}
void loop() {
char key = keypad.getKey();
if (key) {
Serial.println(key);
switch (key)
{
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
if (!indexKeypad)
{
lcd.clear();
}
stringAngka[indexKeypad++] = key;
lcd.print(key);
break;
case '*'://reset
lcd.clear();
indexKeypad = 0;
break;
case '#':
stringAngka[indexKeypad] = 0;
lcd.setCursor(0, 1);
int nilaiAngka = atoi(stringAngka);
lcd.print(nilaiAngka);
indexKeypad = 0;
break;
}
}
}
contoh penggunaan keypad sebagai masukan variabel integer:

Mohon bantuan kalau otputnya pakai 7segment . Atau panel p10 bisa tidak pak.
bisa saja dikembangkan seperti itu.
Mohon bantuan kalau otputnya pakai 7segment . Atau panel p10 bisa tidak pak
sketch ini bisa saja dikembangkan menggunakan display 7 segment atau panel P10 atau display lainnya
Terima Kasih kang, Sangat membantu sekali!
bang mau tanya kalau saya pakai keypad yang 4×4 bedanya dimana? soalnya tombol 7 8 9 saya malah jadi 1 2 3
gunakan pin 2 – 9 dan ganti kodingnya menjadi
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'},
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
Mau tanya kalo mau masukin nilai puluhan gimana programnya kak??
salah satu trik :
nilai = input * 10;