I updated the reflow oven software in the following ways:
First, all the code was in a single Arduino IDE file (.ide). I really didn’t like that because it was messy and difficult to navigate. Even worse, I used global variables everywhere, which is very bad form. I’m not a coder, so I didn’t think much of it at the time, but I decided that this could be a good opportunity for me to learn about making my own libraries. Therefore, I broke the single file up into many smaller ones, divided by function:

oven_interp performs the linear interpolation to see what the target temperature should be between defined points in a profile, oven_UI is where the UI state machine is, and PMODTC1 handles the low level communication and conversion for the thermocouple module.
The second change I made concerns linear interpolation: before, only the profile used it (e.g. if the oven should be at 0 °C at 0 seconds and 100 °C at 100 seconds, then the oven should be 30 °C at 30 seconds). For manual mode, if you set the target temperature to 50 °C, then the software would heat the oven until it measured 50 °C. This resulted in overshoot since the heating elements would continue to be on UNTIL the oven was at 50 °C, at which point the thermal inertia caused the oven to continue getting hotter even though the heating elements no longer received any power. Now, manual mode uses linear interpolation as well. Instead of the set point being set to 50 °C, the set point slowly rises (or falls) at 0.66 °C/sec, which reduces the overshoot.
The third change concerns the temperature profiles. I added a profile for the low temperature solder paste, and adjusted both profiles (regular and low temperature) to one the solder oven can keep up with. I did this by increasing the amount of time the oven has to reach certain temperatures, and I think the results look pretty good:

I’ve uploaded the new program to github. One change I would like to implement is button debouncing; the interface buttons sometimes cause the menu to think the button has been pressed multiple times, which is annoying. However, it’s not a major issue, so it’s a low priority.