87 lines
1.7 KiB
C++
87 lines
1.7 KiB
C++
/**
|
|
* @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);
|
|
}
|
|
|
|
|