Slowly continuing to update code and add some functionality (updates on Github). Most recent additions are:
- a 4W RGBW LED from Adafruit (I really needed a flashlight)
- replaced the TP4056 lipo charger with another charger: ( https://www.amazon.com/dp/B09GHT9MC2?psc=1&ref=ppx_yo2ov_dt_b_product_details ). Higher charging current (2A max as opposed to TP4056's 1A), and USB-A power output (if I ever need to charge a USB-A device, which is probably inadvisable due to my watch's power-hungriness). This new IC also properly negotiates voltage with USB-PD chargers, so I no longer have to use USB-A to USB-C cables.
I also solved a reset problem I was having- before, if my watch crashed (which it does fairly often), I had to reconnect it to my computer and reload the code to get it out of its crash state. I think this has something to do with Circuitpython not being explicitly designed to support multiple display buses; on hard reset it fails to clear the SPI bus (SCK in use error). After a bit of digging, I tried coding in a try/except where if the bus isn't clear on startup, the microcontroller initiates a soft reset. This worked!
Unfortunately, it seems that my RTC unit (in an Adalogger featherwing) has become quite unreliable, and stops working randomly. Whenever it stops working, I have to completely cut power to reset it- which means I also had to remove the coin cell backup timekeeping battery. I'm also seeing terminal outputs that suggest my rotary encoders connections are flaky, and I had to add some try/excepts to make them fail gracefully upon disconnect, and start back up on reconnect. I think it might be time to rip the hardware up and wire everything back together cleanly, just to eliminate as many potential sources of instability as possible.