# Firmware code for the sangaboard *This firmware is Work in Progress and has not reached feature parity with the original yet (see below for more details)* Firmware for the control board of OpenFlexure Microscope. This is a refactor of the [original arduino code](https://gitlab.com/bath_open_instrumentation_group/sangaboard/-/blob/master/arduino_code/README.md) with some improvements to the infrastructure and features. ## Notable changes This version of the firmware uses PlatformIO rather than Arduino IDE. The code is split into the main part which mostly handles command parsing and modules which execute actual commands, allowing the firmware to be easily extensible with new features (add a module based on one of the existing ones and add a line to setup to register its commands and loop function). Motor moves now do not block command processing and a new command `stop` was added which aborts any move in progress. ## Hardware Currently works on Arduino Nano + Sangaboard v0.2. Other platforms might work with appropriate `platform.ini` and `config.h` changes and will be supported in due course. ## TODO list ### Original firmware feature parity - [ ] Implement Endstops module - [ ] Implement Light sensor modules - [ ] Handle Sangaboardv3 - [ ] Ensure responses to commands match the original version ### Improvements and fixes - [ ] Add a CI script - [ ] Add tests (argument parsing) - [ ] Test automatic building and upload - [ ] Support other platforms - [ ] Clean up some of the messier bits