This repository details a two-microcontroller embedded system designed to implement a self-contained BASIC programming environment with dedicated graphics output capabilities. The architecture utilizes two Arduino Nano microcontrollers to separate the computational core from the input/output (I/O) processing.
The system employs a classic coprocessor model to enhance performance and functionality.
- Main Processor Board (BASIC Interpreter): An Arduino Nano running a C-based Tiny BASIC interpreter firmware. This unit is solely responsible for executing BASIC program logic, managing variables, and performing calculations. All I/O requests are transmitted to the Coprocessor Board.
- I/O Coprocessor Board (Video and Input): A second Arduino Nano connected to a host computer (via serial communication) and a small OLED display module. This board functions as a dedicated video card and I/O handler. It receives data from the Main Processor and translates it into display output, concurrently managing user input from the host terminal.
The following videos illustrate the functional capabilities of the system and the transition between operational modes.
The system provides robust text and graphics functionality across two selectable modes of operation, managed by the Coprocessor Board.
This mode is optimized for high-speed serial character transmission and display. It facilitates a command-line interface suitable for programming and executing text-based applications. The Coprocessor processes incoming data as character streams for printing to the OLED display.
This mode extends the system's capabilities to include vector graphics rendering. The Coprocessor receives specific instruction packets (commands) from the Main Processor, which it then executes to manipulate the OLED display buffer.
Supported Graphical Primitives:
- Point plotting
- Line drawing
- Circle drawing
- Text rendering at arbitrary screen coordinates
The system is constructed using the following primary components, as shown in the provided image:
- Two (2) Arduino Nano microcontrollers
- One (1) I2C-compatible OLED Display Module
- Interconnecting breadboard and jumper wires
Communication between the two Arduino Nano boards is conducted via serial protocol. The Main Processor transmits I/O requests and the Coprocessor acknowledges the request, manages the physical display, and handles keyboard input received from the host computer's serial monitor.
