#include <Keypad.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ILI9341.h>
#include "tokens.h"
#include "gui.h"
#include "modes.h"
#include "mode_basic.h"
#include "mode_selector.h"
#include "mode_advanced.h"
const uint8_t KB_ROWS = 4;
const uint8_t KB_COLS = 4;
const char keys[KB_ROWS][KB_COLS] = {
{ '1', '2', '3', '+' },
{ '4', '5', '6', '-' },
{ '7', '8', '9', '*' },
{ '0', 'M', '=', '/' }
};
const uint8_t colPins[KB_COLS] = { 5, 4, 3, 2 }; // Pins connected to C1, C2, C3, C4
const uint8_t rowPins[KB_ROWS] = { 9, 8, 7, 6 }; // Pins connected to R1, R2, R3, R4
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, KB_ROWS, KB_COLS);
void handle_key(char key)
{
if (selected_mode == MODE_BASIC) mode_basic_handler(key);
else if (selected_mode == MODE_SELECTOR) mode_selector_handler(key);
else if (selected_mode == MODE_ADVANCED) mode_advanced_handler(key);
}
void setup() {
Serial.begin(9600);
tft.begin();
tft.setRotation(1);
draw_full_screen();
clear_tokens();
select_mode(MODE_BASIC);
//push_token(TokenType::Number, 20);
}
void loop() {
char key = keypad.getKey();
if (key != NO_KEY) {
draw_status_text("key: " + String(key));
handle_key(key);
}
}