Clone the repository
git clone https://github.com/MiracleAig/MI-23 A DIY graphing calculator powered by the Raspberry Pi RP2350 — built for students who refuse to pay $150 for a TI-84.
Dual-platform firmware that runs on real hardware and as a desktop simulator — no RP2350 required to start hacking.
Full arithmetic evaluation with correct operator precedence, parentheses, and decimal support. Parser is unit-tested with Google Test.
Run the full MI-23 firmware on Linux, macOS, or Windows via SDL2. Iterate fast without flashing hardware every time.
Hardware Abstraction Layer cleanly separates platform-specific code. Adding a new target is straightforward and documented.
Graphing mode is under active development. The architecture is in place — contributions are welcome.
Expression parser ships with a full Google Test suite. Run ./mi23 --test to verify your build.
MIT licensed. Fork it, hack it, sell it. Inspired by NumWorks — designed to be the affordable, hackable alternative.
Designed around affordable, widely-available components. The full BOM costs a fraction of a commercial graphing calculator.
No hardware needed to run the simulator. Clone, build, and launch on your machine.
git clone https://github.com/MiracleAig/MI-23
Install
cmake g++ libsdl2-dev libgtest-dev
for your platform.
./build.sh --clean --platform=host ./build-host/firmware/platform/host/sdl_simulator/mi23 // MI-23 Expression Parser // Supports precedence, parens, decimals class ExprParser { public: ExprParser(const std::string& input) : src_(input), pos_(0) {} double parse() { auto result = parseExpr(); if (pos_ != src_.size()) throw std::runtime_error("Unexpected char"); return result; } private: std::string src_; size_t pos_; double parseExpr(); // +, − double parseTerm(); // ×, ÷ double parseFactor(); // literals, () };
Clean separation between app logic, hardware drivers, math engine, and platform backends.