diff --git a/libraries/AP_RcChannel/examples/Manual/ServoSweep.pde b/libraries/AP_RcChannel/examples2/Manual.pde similarity index 53% rename from libraries/AP_RcChannel/examples/Manual/ServoSweep.pde rename to libraries/AP_RcChannel/examples2/Manual.pde index ab4e6892a4..85ae2143b1 100644 --- a/libraries/AP_RcChannel/examples/Manual/ServoSweep.pde +++ b/libraries/AP_RcChannel/examples2/Manual.pde @@ -11,9 +11,12 @@ #include #include +FastSerialPort0(Serial); // make sure this procees variable declarations + // test settings uint8_t nChannels = 8; -bool loadFromEEProm = false; +bool loadEEProm = false; +bool saveEEProm = false; // channel configuration Vector< AP_EEPromVar * > scale; @@ -23,15 +26,7 @@ Vector< AP_EEPromVar * > pwmMax; Vector< AP_EEPromVar * > pwmDeadZone; Vector< AP_Var * > filter; Vector< AP_Var * > reverse; -Vector< AP_RcChannel * > rc ; - -// test position -float testPosition = 0; -uint16_t testPwm = 1500; -int8_t testSign = 1; - -// serial -FastSerialPort0(Serial); +Vector< AP_RcChannel * > rc; void setup() { @@ -42,18 +37,34 @@ void setup() // add channels for (int i=0;i(1.0,strcat("SCALE",num))); pwmMin.push_back(new AP_EEPromVar(1200,strcat("PWM_MIN",num))); pwmNeutral.push_back(new AP_EEPromVar(1500,strcat("PWM_NEUTRAL",num))); pwmMax.push_back(new AP_EEPromVar(1800,strcat("PWM_MAX",num))); - pwmMax.push_back(new AP_EEPromVar(10,strcat("PWM_DEADZONE",num))); + pwmDeadZone.push_back(new AP_EEPromVar(10,strcat("PWM_DEADZONE",num))); + filter.push_back(new AP_EEPromVar(false,strcat("FILTER",num))); + reverse.push_back(new AP_EEPromVar(false,strcat("REVERSE",num))); + + // save + if (saveEEProm) + { + scale[i]->save(); + pwmMin[i]->save(); + pwmNeutral[i]->save(); + pwmMax[i]->save(); + pwmDeadZone[i]->save(); + filter[i]->save(); + reverse[i]->save(); + } // load - if (loadFromEEProm) + if (loadEEProm) { scale[i]->load(); pwmMin[i]->load(); @@ -64,24 +75,30 @@ void setup() reverse[i]->load(); } - // add rc channel - rc.push_back(new AP_RcChannel(APM_RC,i,scale[i]->get(), + // find neutral position + AP_RcChannel * ch = new AP_RcChannel(APM_RC,i,scale[i]->get(), pwmMin[i]->get(),pwmNeutral[i]->get(),pwmMax[i]->get(), - pwmDeadZone[i]->get(),filter[i]->get(),reverse[i]->get())); + pwmDeadZone[i]->get(),filter[i]->get(),reverse[i]->get()); - // find neutral position - rc[i]->readRadio(); - pwmNeutral[i]->set(rc[i]->getPwm()); + ch->readRadio(); + pwmNeutral[i]->set(ch->getPwm()); + + // add rc channel + rc.push_back(ch); } } void loop() { - // set channel positions - for (int i=0;i<7;i++) - { - rc[i]->getRadio(); - Serial.printf("\npwm:\t%d\t\tposition:\t%f\n", rc[i]->getPwm(),rc[i]->getPosition()); - } + // read radio + for (int i=0;ireadRadio(); + + // read test positions + Serial.printf("\npwm :\t"); + for (int i=0;igetPwm()); + Serial.println(); + Serial.printf("position :\t"); + for (int i=0;igetPosition()); + Serial.println(); delay(100); } diff --git a/libraries/AP_RcChannel/examples/ServoSweep/ServoSweep.pde b/libraries/AP_RcChannel/examples2/ServoSweep/ServoSweep.pde similarity index 56% rename from libraries/AP_RcChannel/examples/ServoSweep/ServoSweep.pde rename to libraries/AP_RcChannel/examples2/ServoSweep/ServoSweep.pde index 5a1e6c2551..f89c96da52 100644 --- a/libraries/AP_RcChannel/examples/ServoSweep/ServoSweep.pde +++ b/libraries/AP_RcChannel/examples2/ServoSweep/ServoSweep.pde @@ -11,9 +11,12 @@ #include #include +FastSerialPort0(Serial); // make sure this procees variable declarations + // test settings uint8_t nChannels = 8; -bool loadFromEEProm = false; +bool loadEEProm = false; +bool saveEEProm = false; // channel configuration Vector< AP_EEPromVar * > scale; @@ -23,15 +26,13 @@ Vector< AP_EEPromVar * > pwmMax; Vector< AP_EEPromVar * > pwmDeadZone; Vector< AP_Var * > filter; Vector< AP_Var * > reverse; -Vector< AP_RcChannel * > rc ; +Vector< AP_RcChannel * > rc; // test position float testPosition = 0; uint16_t testPwm = 1500; int8_t testSign = 1; -// serial -FastSerialPort0(Serial); void setup() { @@ -42,18 +43,34 @@ void setup() // add channels for (int i=0;i(1.0,strcat("SCALE",num))); pwmMin.push_back(new AP_EEPromVar(1200,strcat("PWM_MIN",num))); pwmNeutral.push_back(new AP_EEPromVar(1500,strcat("PWM_NEUTRAL",num))); pwmMax.push_back(new AP_EEPromVar(1800,strcat("PWM_MAX",num))); - pwmMax.push_back(new AP_EEPromVar(10,strcat("PWM_DEADZONE",num))); + pwmDeadZone.push_back(new AP_EEPromVar(10,strcat("PWM_DEADZONE",num))); + filter.push_back(new AP_EEPromVar(false,strcat("FILTER",num))); + reverse.push_back(new AP_EEPromVar(false,strcat("REVERSE",num))); + + // save + if (saveEEProm) + { + scale[i]->save(); + pwmMin[i]->save(); + pwmNeutral[i]->save(); + pwmMax[i]->save(); + pwmDeadZone[i]->save(); + filter[i]->save(); + reverse[i]->save(); + } // load - if (loadFromEEProm) + if (loadEEProm) { scale[i]->load(); pwmMin[i]->load(); @@ -64,36 +81,43 @@ void setup() reverse[i]->load(); } - // add rc channel - rc.push_back(new AP_RcChannel(APM_RC,i,scale[i]->get(), + // find neutral position + AP_RcChannel * ch = new AP_RcChannel(APM_RC,i,scale[i]->get(), pwmMin[i]->get(),pwmNeutral[i]->get(),pwmMax[i]->get(), - pwmDeadZone[i]->get(),filter[i]->get(),reverse[i]->get())); + pwmDeadZone[i]->get(),filter[i]->get(),reverse[i]->get()); - // find neutral position - rc[i]->readRadio(); - pwmNeutral[i]->set(rc[i]->getPwm()); + ch->readRadio(); + pwmNeutral[i]->set(ch->getPwm()); + + // add rc channel + rc.push_back(ch); } } void loop() { // set channel positions - for (int i=0;i<7;i++) - { - rc[i]->setPosition(testPosition); - Serial.printf("\npwm:\t%d\t\tposition:\t%f\n", rc[i]->getPwm(),rc[i]->getPosition()); - } + Serial.println("In Loop"); + for (int i=0;isetPosition(testPosition); + + Serial.printf("\ntestPosition (%f)\n",testPosition); + Serial.printf("pwm :\t"); + for (int i=0;igetPwm()); + Serial.println(); + Serial.printf("position :\t"); + for (int i=0;igetPosition()); + Serial.println(); // update test value testPosition += testSign*.05; if (testPosition > 1) { - testPosition = -1; + testPosition = 1; testSign = -1; } - else if (testPosition < 1) + else if (testPosition < -1) { - testPosition = 1; + testPosition = -1; testSign = 1; } delay(500); diff --git a/libraries/AP_RcChannel/examples/AdvUsage/AdvUsage.pde b/libraries/AP_RcChannel/examples2/Usage/Usage.pde similarity index 96% rename from libraries/AP_RcChannel/examples/AdvUsage/AdvUsage.pde rename to libraries/AP_RcChannel/examples2/Usage/Usage.pde index d902ab7414..4e6b5c2eeb 100644 --- a/libraries/AP_RcChannel/examples/AdvUsage/AdvUsage.pde +++ b/libraries/AP_RcChannel/examples2/Usage/Usage.pde @@ -11,6 +11,8 @@ #include #include +FastSerialPort0(Serial); // make sure this proceed variable declarations + AP_EEPromVar scale(45.0,"RC1_SCALE"); AP_EEPromVar pwmMin(1000,"RC1_PWMMIN"); AP_EEPromVar pwmNeutral(1500,"RC1_PWMNEUTRAL"); @@ -26,8 +28,6 @@ AP_Var reverse(false,"RC1_REVERSE"); float testPosition = 0; uint16_t testPwm = 1500; -FastSerialPort0(Serial); - AP_RcChannel rc[] = { AP_RcChannel(APM_RC,CH_1,scale.get(),pwmMin.get(),pwmNeutral.get(),pwmMax.get(),