#pragma once #include "LCD_I2C.hpp" #include "keypad.hpp" #include "tokenizer.hpp" #define LCD_COLUMNS 16 #define LCD_ROWS 2 #define I2C_ADDRESS 0x27 class Calculator { private: // Private attributes. LCD_I2C *display; Keypad *default_keypad; Tokenizer tokenizer = Tokenizer(); Token **tokens; char default_keypad_chars[4][4] = { {'1', '2', '3', '+'}, {'4', '5', '6', '-'}, {'7', '8', '9', '*'}, {'(', '0', ')', '='} }; char secondary_keypad[4][4] = { {'1', '2', '3', '+'}, {'4', '5', '6', '-'}, {'7', '8', '9', '/'}, {'(', '0', ')', '='} }; uint keypad_col_pins[4] = {6, 7, 8, 9}; uint keypad_row_pins[4] = {16, 17, 18, 19}; // End of private attributes. // Private methods. void processInputs(); // End of private methods. public: Calculator(); ~Calculator(); void run(); };