A PID controller works by measuring the error (difference between the "set point" (desired temp) and the "process value" (measured temp). It performs three separate calculations on that error value, the first is proportional to the size of the error, the second is the integral, which is the amount of time that the process has been in error. The third is the derivative, in which it measures the rate of change of the process value. It then calculates the sum of the previous three calculations and applies that sum as a percentage of a given window of time in the form of a pulse to a solid state relay (in the case of temperature control loops). The Arduino code for this project has been adapted with single boiler home espresso machines particularly in mind, such as the Rancilio Silvia and the Le Lit PL041QE and others, however it is easily adapted to any other heating control application, such as Sous Vide Controllers, Kiln Controllers, etc. The software for the Arduino PID controller itself consists of three main parts: the temperature reading code using the MAX31855 chip (sold separately), the PID control algorithm code, and the menu system code, which allows changing of the set point and other parameters, such as temperature offset from boiler to group head.