PidTunerWidget::PidTunerWidget(Device *device, QWidget *parent) : StandardWidget(device, parent), ui(new Ui::PidTunerWidget) { ui->setupUi(this); performStandardSetup(tr("PID Tuner"), false); connect(ui->p, SIGNAL(textChanged(QString)), SLOT(coeffChanged())); connect(ui->i, SIGNAL(textChanged(QString)), SLOT(coeffChanged())); connect(ui->d, SIGNAL(textChanged(QString)), SLOT(coeffChanged())); connect(ui->motor, SIGNAL(currentIndexChanged(int)), SLOT(motorChanged())); //void get_pid_gains(int motor, short *p, short *i, short *d, short *pd, short *id, short *dd) NumpadDialog *pProvider = new NumpadDialog(tr("P Value"), NumpadDialog::Decimal, -99.0, 99.0, this); NumpadDialog *iProvider = new NumpadDialog(tr("I Value"), NumpadDialog::Decimal, -99.0, 99.0, this); NumpadDialog *dProvider = new NumpadDialog(tr("D Value"), NumpadDialog::Decimal, -99.0, 99.0, this); ui->p->setInputProvider(pProvider); ui->i->setInputProvider(iProvider); ui->d->setInputProvider(dProvider); m_feedback = ui->plot->addPlot(QColor(0, 0, 200)); m_setpoint = ui->plot->addPlot(QColor(0, 0, 0)); updatePids(); QTimer *updateTimer = new QTimer(this); connect(updateTimer, SIGNAL(timeout()), SLOT(update())); updateTimer->start(UPDATE_MS); connect(ui->plot, SIGNAL(mouseEvent(double)), SLOT(mouseEvent(double))); m_setpointVal = 0.0; m_feedbackVal = 0.0; m_position_1 = 0; m_vel_1 = 0; }
// This update function should be called every second void Control::update() { updateSensors(); updatePids(); updateActuators(); mutex->update(); }
void PidTunerWidget::motorChanged() { updatePids(); }