Skip to content
Snippets Groups Projects
Commit 07766e55 authored by Randy Mackay's avatar Randy Mackay
Browse files

SingleCopter: output_test for individual motors

Based on original work by Nils Hogberg
parent 3610cfe2
No related branches found
No related tags found
Loading
...@@ -216,50 +216,40 @@ void AP_MotorsSingle::output_disarmed() ...@@ -216,50 +216,40 @@ void AP_MotorsSingle::output_disarmed()
output_min(); output_min();
} }
// output_test - spin each motor for a moment to allow the user to confirm the motor order and spin direction // output_test - spin a motor at the pwm value specified
void AP_MotorsSingle::output_test() // motor_seq is the motor's sequence number from 1 to the number of motors on the frame
// pwm value is an actual pwm value that will be output, normally in the range of 1000 ~ 2000
void AP_MotorsSingle::output_test(uint8_t motor_seq, int16_t pwm)
{ {
// Send minimum values to all motors // exit immediately if not armed
output_min(); if (!_flags.armed) {
return;
// spin main motor }
hal.scheduler->delay(1000);
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_7]), _rc_throttle.radio_min + _min_throttle);
hal.scheduler->delay(1000);
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_7]), _rc_throttle.radio_min);
hal.scheduler->delay(2000);
// flap servo 1
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_1]), _servo1.radio_min);
hal.scheduler->delay(1000);
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_1]), _servo1.radio_max);
hal.scheduler->delay(1000);
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_1]), _servo1.radio_trim);
hal.scheduler->delay(2000);
// flap servo 2
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_2]), _servo2.radio_min);
hal.scheduler->delay(1000);
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_2]), _servo2.radio_max);
hal.scheduler->delay(1000);
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_2]), _servo2.radio_trim);
hal.scheduler->delay(2000);
// flap servo 3
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_3]), _servo3.radio_min);
hal.scheduler->delay(1000);
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_3]), _servo3.radio_max);
hal.scheduler->delay(1000);
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_3]), _servo3.radio_trim);
hal.scheduler->delay(2000);
// flap servo 4
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_4]), _servo4.radio_min);
hal.scheduler->delay(1000);
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_4]), _servo4.radio_max);
hal.scheduler->delay(1000);
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_4]), _servo4.radio_trim);
// Send minimum values to all motors // output to motors and servos
output_min(); switch (motor_seq) {
case 1:
// flap servo 1
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_1]), pwm);
break;
case 2:
// flap servo 2
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_2]), pwm);
break;
case 3:
// flap servo 3
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_3]), pwm);
break;
case 4:
// flap servo 4
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_4]), pwm);
break;
case 5:
// spin main motor
hal.rcout->write(pgm_read_byte(&_motor_to_channel_map[AP_MOTORS_MOT_7]), pwm);
break;
default:
// do nothing
break;
}
} }
...@@ -44,8 +44,10 @@ public: ...@@ -44,8 +44,10 @@ public:
// enable - starts allowing signals to be sent to motors // enable - starts allowing signals to be sent to motors
virtual void enable(); virtual void enable();
// output_test - spin each motor for a moment to allow the user to confirm the motor order and spin direction // output_test - spin a motor at the pwm value specified
virtual void output_test(); // motor_seq is the motor's sequence number from 1 to the number of motors on the frame
// pwm value is an actual pwm value that will be output, normally in the range of 1000 ~ 2000
virtual void output_test(uint8_t motor_seq, int16_t pwm);
// output_min - sends minimum values out to the motors // output_min - sends minimum values out to the motors
virtual void output_min(); virtual void output_min();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment