diff --git a/conf/modules/digital_cam_shoot_rc.xml b/conf/modules/digital_cam_shoot_rc.xml new file mode 100644 index 00000000000..650e0824b3a --- /dev/null +++ b/conf/modules/digital_cam_shoot_rc.xml @@ -0,0 +1,26 @@ + + + + + + Digital camera control using radio channel. + With this module you can take pictures using a radio channel. + When you put the channel to max the picture are taken. + If the channel goes high for more than 0.75s a picture is taken every 1sec. + Only usable for fixedwing firmware. + + + + +
+ +
+ + + + + + + + +
diff --git a/sw/airborne/modules/digital_cam/dc_shoot_rc.c b/sw/airborne/modules/digital_cam/dc_shoot_rc.c new file mode 100644 index 00000000000..36efb0f643b --- /dev/null +++ b/sw/airborne/modules/digital_cam/dc_shoot_rc.c @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2014 Eduardo Lavratti + * + * This file is part of paparazzi. + * + * paparazzi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * paparazzi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with paparazzi; see the file COPYING. If not, write to + * the Free Software Foundation, 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/** @file modules/digital_cam/dc_shoot_rc.c + * Digital Camera remote shoot using radio channel. + * + * Use radio channel to take a picture. + * Only works with fixedwing firmware. + */ + +#include "dc_shoot_rc.h" +#include "inter_mcu.h" +#include "dc.h" + +#ifndef DC_RADIO_SHOOT +#error "You need to define DC_RADIO_SHOT to a RADIO_xxx channel to use this module" +#endif + +#define DC_RADIO_SHOOT_THRESHOLD 3000 + +void dc_shoot_rc_periodic(void) +{ + static uint8_t rd_shoot = 0; + static uint8_t rd_num = 0; + + if ((rd_shoot == 0) && (fbw_state->channels[DC_RADIO_SHOOT] > DC_RADIO_SHOOT_THRESHOLD)) { + dc_send_command(DC_SHOOT); + rd_shoot = 1; + } + if ((rd_shoot == 1) && (rd_num < 4)) { + rd_num = rd_num + 1; + } + else { + rd_num = 0; + rd_shoot = 0; + } +} diff --git a/sw/airborne/modules/digital_cam/dc_shoot_rc.h b/sw/airborne/modules/digital_cam/dc_shoot_rc.h new file mode 100644 index 00000000000..4437da51ffe --- /dev/null +++ b/sw/airborne/modules/digital_cam/dc_shoot_rc.h @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2014 Eduardo Lavratti + * + * This file is part of paparazzi. + * + * paparazzi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * paparazzi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with paparazzi; see the file COPYING. If not, write to + * the Free Software Foundation, 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/** @file modules/digital_cam/dc_shoot_rc.h + * Digital Camera remote shoot using radio channel. + * + * Use radio channel to take a picture. + * Only works with fixedwing firmware. + */ + +#ifndef DC_SHOOT_RC_H +#define DC_SHOOT_RC_H + +/** periodic 4Hz function */ +extern void dc_shoot_rc_periodic(void); + +#endif // DC_SHOOT_RC_H