#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>
#include <Adafruit_SSD1306.h>
#include <Keypad.h>
#define ROWS 4
#define COLUMNS 4
#define SH1107_WIDTH 128 // OLED display width, in pixels
#define SH1107_HIGHT 128 // OLED display height, in pixels
// Two 7-bit slave addresses (0111100 and 0111101) SH1107
#define SH1107_ADDRESS 0x3A
#define SSD1306_WIDTH 128 // OLED display width, in pixels
#define SSD1306_HIGHT 64 // OLED display height, in pixels
#define SSD1306_ADDRESS 0x3C
#define OLED_RESET -1 // can set an oled reset pin if desired
char keys[ROWS][COLUMNS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
uint8_t colPins[COLUMNS] = { 5, 4, 3, 2 }; // Pins connected to C1, C2, C3, C4
uint8_t rowPins[ROWS] = { 9, 8, 7, 6 }; // Pins connected to R1, R2, R3, R4
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLUMNS);
//Adafruit_SH1107 sh1107(SH1107_WIDTH, SH1107_HIGHT, &Wire, OLED_RESET);
Adafruit_SSD1306 ssd1306(SSD1306_WIDTH, SSD1306_HIGHT, &Wire, OLED_RESET);
void setup() {
//Serial.begin(115200);
/*
sh1107.begin(SH1107_ADDRESS, true); // Address 0x3D default
sh1107.clearDisplay();
sh1107.setTextSize(2); // Normal 1:1 pixel scale
sh1107.setTextColor(SH110X_WHITE); // Draw white text
sh1107.setCursor(0,0); // Start at top-left corner
sh1107.println(F("Hello, world!"));
sh1107.display();
*/
ssd1306.begin(SSD1306_SWITCHCAPVCC, SSD1306_ADDRESS);
ssd1306.setTextColor(SSD1306_WHITE);
ssd1306.setTextSize(6);
}
void loop() {
char key = keypad.getKey();
if (key != NO_KEY) {
//Serial.println(key);
ssd1306.clearDisplay();
ssd1306.setCursor(50, 10);
ssd1306.println(key);
ssd1306.display();
}
}