diff --git a/main.c b/main.c --- a/main.c +++ b/main.c @@ -43,6 +43,7 @@ enum state { STATE_SETP, STATE_SETI, STATE_SETD, + STATE_SETSTEPS, STATE_SETWINDUP, STATE_SETBOOTTOBREW, @@ -362,58 +363,10 @@ int16_t last_temp = 21245; /////////////////////////////////////////////////////////////////////////////////////// /// freaking multiple setpoint support /// -uint8_t step_duration[10]; -int16_t step_setpoint[10]; +uint8_t step_duration[10] = {0,0,0,0,0,0,0,0,0,0}; +int16_t step_setpoint[10] = {0,0,0,0,0,0,0,0,0,0}; 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 @@ -576,7 +529,7 @@ void machine() // Button handler if(SW_BTN_PRESSED) { - state = STATE_SETWINDUP; + state = STATE_SETSTEPS; } else { user_input(&k_d); @@ -587,6 +540,45 @@ void machine() } break; + case STATE_SETSTEPS: + { + // Write text to OLED + // [ step #1:: Duration: ### ] + // [ Setpoint: ### ] + char tempstr[6]; + + itoa(final_setpoint, 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); + ssd1306_DrawString(tempstr, 0, 70); + + 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_SETSTEPS; + final_setpoint++; + } + // else if(SW_LEFT_PRESSED) { + // state++; // go to next state or something + // } + else { + user_input(&k_p); + } + + // Event Handler + // N/A + + } break; + case STATE_SETWINDUP: { // Write text to OLED