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; } }