ReflowController/Software/reflowController/reflow.ino

92 lines
2.3 KiB
C++

void Reflow_Init(void) {
profile[0].preheat_rate = 1;
profile[0].preheat_temp = 130;
profile[0].preheat_time = 20;
profile[0].reflow_rate = 0.5;
profile[0].reflow_temp = 235;
profile[0].reflow_time = 40;
process.profile = profile[0];
process.phase = 0;
process.timer = 0;
process.countdown = 5;
process.temp = 0;
sprintf(process.title,"Ready");
}
void Reflow_Task(void) {
switch (process.phase) {
case 0: // standby
if (process.countdown > 0) {
process.countdown--;
if (process.countdown == 0) {
process.phase = 1;
sprintf(process.title,"1/4 PreHeat");
process.temp = process.profile.preheat_temp;
process.countdown = 10;
}
}
break;
case 1: // preheat aufheizen
process.timer++;
if (process.countdown > 0) {
process.countdown--;
if (process.countdown == 0) {
process.phase = 2;
sprintf(process.title,"2/4 PreHeat");
process.countdown = 10;
}
}
break;
case 2: // preheat temp halten
process.timer++;
if (process.countdown > 0) {
process.countdown--;
if (process.countdown == 0) {
process.phase = 3;
sprintf(process.title,"3/4 Reflow");
process.temp = process.profile.reflow_temp;
process.countdown = 10;
}
}
break;
case 3: // reflow aufheizen
process.timer++;
if (process.countdown > 0) {
process.countdown--;
if (process.countdown == 0) {
process.phase = 4;
sprintf(process.title,"4/4 Reflow");
process.countdown = 10;
}
}
break;
case 4: // reflow temp halten
process.timer++;
if (process.countdown > 0) {
process.countdown--;
if (process.countdown == 0) {
process.phase = 5;
sprintf(process.title,"Cooldown");
process.temp = 0;
process.countdown = 10;
tone(buzzer, 2000, 1000);
}
}
break;
case 5: // auskühlen
if (process.countdown > 0) {
process.countdown--;
if (process.countdown == 0) {
process.phase = 0;
process.timer = 0;
sprintf(process.title,"Ready");
process.countdown = 0;
}
}
break;
default:
process.phase = 0;
}
}