I don't mind using what other ppl did, so I'd jump to using that device even as it is closed source, if they implemented auto-tuning (there are devices that do auto-tuning out there) as auto-tuning is hard math and is not something you can easily implement youself (I'm playing with it for years and never came close to working example, and I have a lot of pages of someones bscee final work on auto tuning pid with matlab model etc etc) .. anyhow, if pid is what they offer, if you go with 16bit pic pid is few lines of code really, it is the P, I and D coefficients you need to calculate :D. For a fairly simple system like reflow oven Ziegler–Nichols works perfectly to make pid work (you disable ID control and use only P, you lower the P as much as you can but to still have standard sinus oscillation of target state/temperature in this case/ and when you get that lowest Posc value that produces this oscillation then you measure period of that oscillation Tosc and calculate P, I and D values from that Posc value using Ziegler–Nichols formulas, P = 0.6*Posc, I=1.2*Posc / Tosc, D =0.6*Posc*Tosc / 8) .. then you just run your PID as simplest possible code
previousError = targetTemp - currentTemp;
integral = 0;
while(1){
error = targetTemp - currentTemp;
integral = integral + (error*dt);
derivative = (error - previousError)/dt;
outputValue = (P*error) + (I*integral) + (D*derivative);
previousError = error;
//do something with outputValue, set PWM or whatever you do
//move motor with intensity of outputValue, or turn heater with intensity of outputValue
//notice that outputValue swings from -1 to +1, in systems where you can't go negative
//for e.g. if you have reflow oven - you do not have cooling element in you need to
//compensate for the negative values
delay(dt);
}