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 test_shutter by
Diff: main.cpp
- Revision:
- 0:7a527a9bedce
- Child:
- 1:7972095b7aea
diff -r 000000000000 -r 7a527a9bedce main.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Sun Apr 21 12:39:43 2013 +0000
@@ -0,0 +1,108 @@
+#include "mbed.h"
+
+//are these actually used ???
+DigitalOut ext_led[8] = {p21,p22,p23,p24,p25,p26,p27,p28};
+//DigitalOut int_led[4] = {LED1, LED2, LED3, LED4};
+
+// from handbook for BusOut: Flexible way to write multiple DigitalOut pins as one value
+BusOut int_led(LED1, LED2, LED3, LED4); //four built-in LEDs used to display the counter from the trigger
+
+DigitalInOut fire(p20); //connected to the tip of 2.5mm connector (T2i)
+DigitalInOut pre_fire(p19); //connected to the mid-connection for 2.5mm connector (T2i)
+
+InterruptIn x(p18);
+Serial pc(USBTX, USBRX);
+
+
+#define US_INTERVAL 500
+
+//set the resolution of the timing information
+#define MS_INTERVAL 2 //interval used to change the counter display
+
+void resetLed()
+{
+ for(int i=0; i<8; i++)
+ {
+ ext_led[i] = 0;
+ }
+ int_led = 0;
+}
+
+//xFire procedure is not used in the logic in main
+void xFire()
+{
+ for(int i=1; i<16; i++)
+ {
+ wait_us(US_INTERVAL);
+ int_led = i;
+ }
+ return;
+}
+
+volatile bool trigger = 0;
+Ticker trig;
+void setTrig()
+{
+ trigger = 1;
+}
+
+int main()
+{
+ // try open drain driving (internal pullup in camera?)
+ //x procedure not used below
+ x.mode(PullUp);
+ x.fall(&xFire);
+
+ fire.output(); //set the fire pin as outoput
+ pre_fire.output(); //set the pre-fire pin as output
+ //fire.mode(OpenDrain);
+
+ //set up for the first trigger
+ fire = 1;
+ pre_fire = 1;
+
+ // reset the LED's
+ resetLed();
+
+ //trig is a ticker used to repeatedly fire a trigger at the interval (e.g., 7.5 secs)
+ trig.attach(&setTrig, 7.5f); //set ticker interval to 7.5secs
+
+ // start the program
+ while(1)
+ {
+// if(pc.readable()) //used to trigger from a keyboard click
+// {
+// char ch = pc.getc(); //read the keyboard click
+
+ //below used for repeatedly triggering on a ticker
+ if(trigger) //is the ticker has fired the trigger, proceed ...
+ {
+ trigger = 0; //reset the trigger to zero
+
+ // turn all leds off to start the counter
+ resetLed();
+
+ // pre-fire the trigger using the mid-body 2.5mm connection (T2i)
+ pre_fire = 0;
+
+ wait(.25f); //wait for 0.25 secs
+
+ fire = 0; //fire the trigger using the tip connection
+
+ wait(0.100f); // empirically known delay to get us to the range of the 4 timing LEDs
+
+ // maybe we need more or later just use these...
+ //just count up to 16 diaplaying the results on the LEDs
+ for(int i=1; i<16; i++)
+ {
+ wait_ms(MS_INTERVAL);
+ int_led = i; //write to the BusOut to display the counter on 4 LEDs
+ }
+
+ //reset for the next trigger
+ // release the trigger
+ fire = 1;
+ pre_fire = 1;
+ }
+ }
+}
