Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of GPS_Incremental by
Revision 10:078891935385, committed 2013-04-18
- Comitter:
- dannyman939
- Date:
- Thu Apr 18 00:59:49 2013 +0000
- Parent:
- 9:13724ed3f825
- Commit message:
- Hardware trigger camera using the DigitalOut of Pin 2
Changed in this revision
PCMessaging.h | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/PCMessaging.h Wed Apr 17 13:50:21 2013 +0000 +++ b/PCMessaging.h Thu Apr 18 00:59:49 2013 +0000 @@ -8,6 +8,7 @@ const unsigned char STOPSTREAM_MSG =5; const unsigned char STARTLOGINFO_MSG =6; const unsigned char STOPLOGINFO_MSG =7; +const unsigned char SEND_TRIG =8; const double DEGREES_TO_RADIANS = acos(-1.0)/180.0; const double eccen = 0.0818191908426; //WGS84 earth eccentricity @@ -25,9 +26,10 @@ bool logMsgInfo =false; bool sendLogMsgInfo =false; bool recordData =false; +bool camtrg =false; -const unsigned char numMessages = 8; //number of potential messages +const unsigned char numMessages = 9; //number of potential messages char msgList[numMessages][32]; //text array storing the command messages from the PC char minMessageSize = 11; //minimum size of a text message unsigned char CR = 0x0d; //ASCII Carriage Return @@ -44,6 +46,7 @@ sprintf(msgList[STOPSTREAM_MSG], "WMsg POSSTREAM N"); sprintf(msgList[STARTLOGINFO_MSG], "WMsg LOGINFO Y"); sprintf(msgList[STOPLOGINFO_MSG], "WMsg LOGINFO N"); + sprintf(msgList[SEND_TRIG], "WMsg SEND_TRIG"); //message length is from 10 to 16 chars toPC.printf(" finished setting up messages \n"); @@ -116,7 +119,10 @@ case STOPLOGINFO_MSG: logMsgInfo = (m == STARTLOGINFO_MSG); sendLogMsgInfo = true; - break; + break; + case SEND_TRIG: + camtrg = true; //send a posvel message back to PC + break; } //end Switch statement break; } //end test for a valid message @@ -213,6 +219,12 @@ //we should put the below stuff into the readPC() procedure. //only do these actions in response to a command so no need for the tests w/o an inoput byte from the PC //perform the activities as a response to the commands + + if (camtrg) //true if camera trigger command sent from PC + { + camera1EventDetected=true; + + } if (sendPosVel) //true if we want to return a position solution { sendPosVel=false; //set to true if a POSVEL is requested from the PC
--- a/main.cpp Wed Apr 17 13:50:21 2013 +0000 +++ b/main.cpp Thu Apr 18 00:59:49 2013 +0000 @@ -14,7 +14,7 @@ DigitalOut ppsled(LED1); //blink an LED at the 1PPS DigitalOut trig1led(LED2); //blink an LED at the camera trigger detection DigitalOut recordDataled(LED4); //set the led when the record is on -InterruptIn camera1Int(p30); // camera interrupt in +//InterruptIn camera1Int(p30); // camera interrupt in DigitalOut camera2Pin(p29); // We dont use the second camera interrupt //USB serial data stream back to the PC Serial toPC(USBTX, USBRX); //connect the GPS TX, RX to p9 and p10 @@ -65,15 +65,15 @@ }; //ISR for detection of the hotshoe trigger 1 -void camera1ISR(void) -{ +//void camera1ISR(void) +//{ //GPSTime is from POS message header //PPSTimeOffset is an even sec to account for Time becoming known AFTER the 1PPS //PPSTimeOffset + timeFromPPS.read() can be as large as 1.02 secs - camera1Time = GPSTime + PPSTimeOffset + timeFromPPS.read(); - camera1EventDetected = true; //reset to false in main after processing the image detection - trig1led = !trig1led; //blink an LEWD at the camera event detection -}; +// camera1Time = GPSTime + PPSTimeOffset + timeFromPPS.read(); +// camera1EventDetected = true; //reset to false in main after processing the image detection +// trig1led = !trig1led; //blink an LEWD at the camera event detection +//}; /////////////////////////////////////////////////////// //set up the USB port and the GPS COM port @@ -171,10 +171,10 @@ void setupTriggers() { - camera1Int.mode(PullUp); +// camera1Int.mode(PullUp); camera2Pin = 1; //establish Trigger ISR - camera1Int.rise(&camera1ISR); +// camera1Int.rise(&camera1ISR); }; @@ -352,7 +352,14 @@ if (camera1EventDetected) //we have detected a camera trigger event { + camera2Pin=0; + wait(.25); + camera2Pin=1; + wait(.50); + camera2Pin=0; + camera1Time = GPSTime + PPSTimeOffset + timeFromPPS.read(); toPC.printf("WMsg TRIGGERTIME %5.3lf\n", camera1Time); + camera2Pin=1; camera1EventDetected = false; }