Keypad 4x4 Dengan I2C Interface Arduino ESP8266
Pin pada module ESP8266 sangat terbatas,
dengan menggunakan Komunikasi I2C, kita bisa menghemat sampai 6 Pin.
Disini gw coba test dengan beberapa board : Arduino UNO , Wemos D1 Mini & NodeMCU, semua berjalan dengan baik, Seharunya dengan ESP32 tidak ada masalah.
Hardware yang di butuhkan :
- Arduino Board / ESP8266 Board
- Kabel Jumper + Breadboard
- Keypad 4x4
- IC PCF8574
- Resistor 10K 2pcs
Wiring.
Arduiono Uno:
- Analog Input Pin 4 = SDA
- Analog Input Pin 5 = SCL
Atau bisa juga seperti digambar :
Wemos D1 Mini :
PIN D1 = SDA
PIN D2 = SCL
dan temen-temen juga bisa memakai module IO Expander yang udah jadi, cukup mudah, simple dann tidak membutuhkan banyak kabel jumper :D
Datasheet IC PCF8574
Bisa di lihat Pin (16) VCC dan (8) GND.
Pin untuk berkomuniasi (15) SDA , (14) SCL,
dalam project ini pin INT tidak dipakai.
PIN A0 — A1 adalah untuk mengatur alamat pada IC tersebut,
dan Pin P0 — P7 adalah Pin Input/Output.
Source Code :
Download terlebih dahulu library Keypad_i2c dan Keypad.
#include <Keypad_I2C.h>
#include <Keypad.h>
#include <Wire.h>const byte ROWS = 4; // empat rows
const byte COLS = 4; // empat columns
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {0, 1, 2, 3};
byte colPins[COLS] = {4, 5, 6, 7};int i2caddress = 0x20; // alamat PCF8574, semua pin A0 - A2 ke Ground.Keypad_I2C kpd = Keypad_I2C( makeKeymap(keys), rowPins, colPins, ROWS, COLS, i2caddress );void setup(){
Serial.begin(115200);
kpd.begin();
}
void loop(){
char key = kpd.getKey();
if (key){
Serial.println(key); //debug.
}
}
Upload Sketch lalu buka Serial Monitor. :D
Terima Kasih,
Semoga Bermanfaat.