/** * @file pidSettings.cpp * @author Alexander Klein (alex@kleiax.de) * @brief * @version 0.1 * @date 2022-01-19 * * @copyright Copyright (c) 2022 * */ #include "menuPidSettings.h" MenuPidSettings::MenuPidSettings(PID* pid) { this->pid = pid; this->values[0] = (uint8_t) pid->GetKp(); this->values[1] = (uint8_t) pid->GetKi(); this->values[2] = (uint8_t) pid->GetKd(); } void MenuPidSettings::down() { if (values[curPos] > 0) values[curPos]--; this->printMenu(); } void MenuPidSettings::up() { if (values[curPos] < UINT8_MAX) values[curPos]++; this->printMenu(); } void MenuPidSettings::right() { if (curPos < NUM_VAL - 1) curPos++; else curPos = 0; this->printMenu(); } void MenuPidSettings::left() { if (curPos > 0) curPos--; else curPos = NUM_VAL - 1; this->printMenu(); } void MenuPidSettings::no() { if (parentMenu) this->parentMenu->printMenu(); } void MenuPidSettings::yes() { this->pid->SetTunings(this->values[0], this->values[1], this->values[2]); if (parentMenu) this->parentMenu->printMenu(); } void MenuPidSettings::printMenu() { Serial.println(" P I D "); char pos[16]; switch (this->curPos) { case 0: sprintf(pos, "_%d.3_ %d.3 %d.3 ", this->values[0], this->values[1], this->values[2]); break; case 1: sprintf(pos, " %d.3 _%d.3_ %d.3 ", this->values[0], this->values[1], this->values[2]); break; case 2: sprintf(pos, " %d.3 %d.3 _%d.3_", this->values[0], this->values[1], this->values[2]); break; default: break; } Serial.println(pos); }