diff --git a/main.c b/main.c --- a/main.c +++ b/main.c @@ -359,6 +359,68 @@ void restore_settings() int16_t last_temp = 21245; + +/////////////////////////////////////////////////////////////////////////////////////// +/// freaking multiple setpoint support /// +uint8_t step_duration[10]; +int16_t step_setpoint[10]; +uint8_t final_setpoint = 0; + +void stepper_init() +{ + int i; + for(i=0; i<10; i++) + { + step_duration[i] = 0; + step_setpoint[i] = 0; + } +} + +void state_setstepper() +{ + // Write text to OLED + // [ step #1:: Duration: ### ] + // [ Setpoint: ### ] + char tempstr[6]; + + itoa(stepnum, tempstr); + ssd1306_DrawString("Step #", 0, 0); + ssd1306_DrawString(tempstr, 0, 40); + + ssd1306_DrawString("Duration: ", 0, 5); + itoa(step_duration[final_setpoint], tempstr); + ssd1306_DrawString(tempstr, 0, 70); + + ssd1306_DrawString("Setpoint: ", 0, 0); + itoa(step_setpoint[final_setpoint], tempstr); + itoa(stepnum, tempstr); + + ssd1306_DrawString("Press to accept", 3, 40); + + // Button handler - TODO: increment max_step if pressed + // return and go to next state otherwise + if(SW_BTN_PRESSED) { + state = STATE_SETSTEPPER; + final_setpoint++ + } + else if(SW_LEFT_PRESSED) { + state++; // go to next state or something + } + else { + user_input(&k_p); + } + + // Event Handler + // N/A +} + +// Multiple screens to set setpoint and duration on each screen +// press center to go to the next one, and press left or right or something to confirm + +// When executing, complete on time AND(?) temperature. Maybe allow switching to OR via settings + +//////////////////////////////////////////////////////////////////////////////////////////////// + void machine() { uint8_t last_state = state;