Skip to content

Commit

Permalink
[modules] add digital_cam_shoot_rc.xml
Browse files Browse the repository at this point in the history
module to use radio channel as remote camera trigger
closes #937
  • Loading branch information
agressiva authored and flixr committed Nov 12, 2014
1 parent a6022b9 commit 6246b91
Show file tree
Hide file tree
Showing 3 changed files with 116 additions and 0 deletions.
26 changes: 26 additions & 0 deletions conf/modules/digital_cam_shoot_rc.xml
@@ -0,0 +1,26 @@
<!DOCTYPE module SYSTEM "./module.dtd">

<module name="digital_cam_shoot_rc" dir="digital_cam">
<doc>
<description>
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.
</description>
<define name="DC_RADIO_SHOOT" value="RADIO_xxx" description="specifies the channel to be used to trigger the camera by radio transmiter"/>
</doc>
<depend require="digital_cam"/>
<header>
<file name="dc_shoot_rc.h"/>
</header>

<periodic fun="dc_shoot_rc_periodic()" freq="4" autorun="TRUE"/>

<makefile>
<define name="DIGITAL_CAM_SHOOT_RC"/>
<file name="dc_shoot_rc.c"/>
</makefile>

</module>
55 changes: 55 additions & 0 deletions sw/airborne/modules/digital_cam/dc_shoot_rc.c
@@ -0,0 +1,55 @@
/*
* Copyright (C) 2014 Eduardo Lavratti <agressiva@hotmail.com>
*
* 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;
}
}
35 changes: 35 additions & 0 deletions sw/airborne/modules/digital_cam/dc_shoot_rc.h
@@ -0,0 +1,35 @@
/*
* Copyright (C) 2014 Eduardo Lavratti <agressiva@hotmail.com>
*
* 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

0 comments on commit 6246b91

Please sign in to comment.