Closed sadr0b0t closed 7 years ago
Аргумент за переход к побитовости. Сейчас, чтобы проверить, есть ли на моторе ошибка, нужно писать примерно такую лапшу:
if(sm.error_soft_end_min || sm.error_soft_end_max ||
sm.error_hard_end_min || sm.error_hard_end_max ||
sm.error_step_delay_small) {
// error
}
с одним полем будет достаточно написать:
if(sm.error) {
// error
}
аналогично, обнулить все ошибки одной строкой:
sm.error = 0;
Готово дело https://github.com/1i7/stepper_h/commit/066d08eabfb90565a98df51d2fca28d873067b99
Теперь ошибки мотора можно печатать так
void print_motor_error(stepper &sm) {
if(sm.error) {
if(sm.error & STEPPER_ERROR_SOFT_END_MIN) {
Serial.print("STEPPER_ERROR_SOFT_END_MIN");
}
if(sm.error & STEPPER_ERROR_SOFT_END_MAX) {
Serial.print("STEPPER_ERROR_SOFT_END_MAX");
}
if(sm.error & STEPPER_ERROR_HARD_END_MIN) {
Serial.print("STEPPER_ERROR_HARD_END_MIN");
}
if(sm.error & STEPPER_ERROR_HARD_END_MAX) {
Serial.print("STEPPER_ERROR_HARD_END_MAX");
}
if(sm.error & STEPPER_ERROR_STEP_DELAY_SMALL) {
Serial.print("STEPPER_ERROR_STEP_DELAY_SMALL");
}
} else {
Serial.print("none");
}
Сделать флаги ошибок из stepper_info_t побитовыми значениями внутри одного поля (как принято делать всякие двоичные настройки в Сишечке).
И предварительно обдумать, стоит ли вообще так делать или и так нормально.