/***************************************************
Screen & Keypad
Ref Docs:
ILI9341 Screen: https://docs.wokwi.com/parts/wokwi-ili9341
Keypad: https://docs.wokwi.com/parts/wokwi-membrane-keypad
UNO r3: https://docs.wokwi.com/parts/wokwi-arduino-uno
****************************************************/
#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#include <Keypad.h>
// For the Adafruit shield, these are the default.
#define TFT_DC 9
#define TFT_CS 10
// Screen Defaults
#define DEFAULT_SCREEN_ROT 3
#define COLOUR_DARK 0x0020
#define COLOR_BRAND 0x2E4C
// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
//Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO);
const byte KEYPAD_ROWS = 4;
const byte KEYPAD_COLS = 4;
byte rowPins[KEYPAD_ROWS] = {5, 4, 3, 2};
byte colPins[KEYPAD_COLS] = {A3, A2, A1, A0};
char keys[KEYPAD_ROWS][KEYPAD_COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, KEYPAD_ROWS, KEYPAD_COLS);
uint64_t value = 0;
/**
* Setup
*/
void setup() {
Serial.begin(9600);
tft.begin();
// diagnostics from Screen
uint8_t SCREEN_DIAGNOSTICS = tft.readcommand8(ILI9341_RDMODE);
tft.fillScreen(COLOUR_DARK);
tft.setRotation(DEFAULT_SCREEN_ROT);
tft.setTextColor(COLOR_BRAND);
tft.setTextSize(2);
tft.setCursor((tft.width() / 2) - 90, (tft.height() / 2) - 3);
tft.println("Nobile Technology.");
delay(2000);
tft.fillScreen(COLOUR_DARK);
tft.setCursor((tft.width() / 2) - 80, (tft.height() / 2) - 3);
tft.println("Enter Number");
}
int maxNumberSize = 8;
String openingMessage = "Enter Number";
char memory[] = "";
String ringingMessage = "Ringing...";
boolean isRinging = false;
/**
* Loop
*/
void loop(void) {
char key = keypad.getKey();
if (key != NO_KEY) {
tft.fillScreen(COLOUR_DARK);
tft.setCursor((tft.width() / 2) - 80, (tft.height() / 2) - 3);
tft.setTextSize(3);
Serial.println(key);
Serial.println(strlen(memory));
memory += key;
tft.println(memory);
}
}