This week, I had to troubleshoot many issues I was experiencing with the firmware and graphics. There were two main issues I ran into: the screen not RemiGotchi screen not showing anything, and graphics glitches. The first issue was solved after figuring out the correct ESP32-S3 board. The two issues were, however, a lot more complicated, as it was a multitude of issues, such as library function compatibility and mismatched data sizes for pushing graphics.
After solving these issues, the buttons and screen can now interact properly: Menu Toggling
Due to these issues, I am off schedule by quite a bit. I plan to work on the project on the firmware and have it completed by this coming Wednesday. After that, I will have other people test it for a few days to fix any issues.
Unit Tests and System Tests
To monitor user input to device reaction time, I booted up the RemiGotchi device and tested the device reaction time from pressing the buttons ten times in a row. I also performed this same test after the device had been sitting for a while. The results from both these tests yielded approximately the same reaction time of 72 milliseconds, which is almost half of our anticipated reaction time. When this same test was performed with long button presses instead, the reaction time was 77 milliseconds, despite the button press performing a much more strenuous task ( switching from a PNG image to a multi-part graphical interface).
When trying to decide on animation libraries, I tested out 3 graphic libraries: eSPI TFT, Animated GIF, and the LVGL library. Initially, the Animated GIF library looked promising as it was able to quickly render animated characters, but it was extremely difficult to use, with drawing static assets on the screen. Static assets often ended up as corrupted files on the screen, and hid parts of the character animation from view. I did some research into other animation libraries and found the LVGL library. There, however, was not enough documentation for me to feel comfortable using this library. As a result of my difficulties with the other libraries, I decided to use the library for the TFT screen, as it had the most documentation and included multiple ways to parse data into an animation-style format.