ServosWidget::ServosWidget(Device *device, QWidget *parent) : StandardWidget(device, parent), ui(new Ui::ServosWidget), m_provider(new NumpadDialog(QString())) { ui->setupUi(this); performStandardSetup(tr("Servos")); ui->number->setInputProvider(m_provider); connect(ui->dial, SIGNAL(valueChanged(double)), SLOT(positionChanged(double))); connect(ui->number, SIGNAL(textEdited(QString)), SLOT(manualEntry(QString))); connect(ui->port_0, SIGNAL(clicked()), SLOT(activeChanged())); connect(ui->port_1, SIGNAL(clicked()), SLOT(activeChanged())); connect(ui->port_2, SIGNAL(clicked()), SLOT(activeChanged())); connect(ui->port_3, SIGNAL(clicked()), SLOT(activeChanged())); connect(ui->enable, SIGNAL(clicked()), SLOT(enable())); connect(ui->disable, SIGNAL(clicked()), SLOT(disable())); // Setup ui for port 0 (the default servo) ui->dial->setMinimumValue(0); ui->dial->setMaximumValue(2047); ui->dial->setValue(get_servo_position(0)); ui->dial->setLabel(0); ui->port_0->setEnabled(false); const bool servoEnabled = get_servo_enabled(0); ui->enable->setVisible(!servoEnabled); ui->disable->setVisible(servoEnabled); publish(); }
void ServosWidget::activeChanged() { QObject *from = sender(); // Set dial label for new servo int newPort = -1; if(from == ui->port_0) newPort = 0; else if(from == ui->port_1) newPort = 1; else if(from == ui->port_2) newPort = 2; else if(from == ui->port_3) newPort = 3; else return; ui->dial->setLabel(newPort); // Set dial value for new servo ui->dial->setValue(get_servo_position(newPort)); // Enable/disable appropriate port buttons ui->port_0->setEnabled(from != ui->port_0); ui->port_1->setEnabled(from != ui->port_1); ui->port_2->setEnabled(from != ui->port_2); ui->port_3->setEnabled(from != ui->port_3); // Show/hide enable and disable buttons const bool servoEnabled = get_servo_enabled(newPort); ui->enable->setVisible(!servoEnabled); ui->disable->setVisible(servoEnabled); publish(); }
int main() { int delay=10; int i=0; enable_servo(2); printf("%d enabled\n",get_servo_enabled(0)); printf("%d enabled\n",get_servo_enabled(1)); printf("%d enabled\n",get_servo_enabled(2)); printf("%d enabled\n",get_servo_enabled(3)); set_servo_position(2,100); for(i=0;i<200;i++) { printf("%d position %d\n",get_servo_position(2), i); msleep(delay); } msleep(1500); set_servo_position(2,1500); printf("%d position\n",get_servo_position(2)); msleep(1500); }