Now that I've switched to the Digispark for the brain of this project, I've updated the code to support it (using a preprocessor define so we can switch between that and the Nano) and added in a software-based serial port for communication. (I couldn't get the Digispark's software serial-over-USB to work, and it doesn't have a hardware serial port apparently)
The weirdest thing here is that I got no output on the serial port TX line at all for quite a while... until I unplugged the heat sensor amp circuit from the Digispark. The heater control circuit is apparently fine, but something about the OPA4228PA's output was apparently killing the Digispark - when it was plugged in, I couldn't even get lights to blink!
I'm really kinda stumped on this one... I don't understand why connecting the output of an op-amp to an input pin would cause the whole microcontroller to freeze. I've pushed my latest changes to the GitLab project, if anyone reading this would like to take a look and maybe fill me in on what I'm doing wrong. (the Fritzing file for the Digistump version of the circuit is available here)