Three years back in time, I bought Nikon D3000 DSLR. I started shooting, but the moment I needed remote, came one day (more over night), during on night photography session. I checked all local suppliers, but the prices were high. I ordered one from China. The problem with orders from China is that they take time. I started waiting and one day I made my IR remote, using the MSP430.
This is a youtube video showing the remote in action:
It doesn’t use the Launchpad hardware, I use it only for programming the MSP430G2231. This is the schematic of the remote:
This is a photo of the prototype
One tip use good quality buttons, I had to debug this low cost button for more than 1/2 hour. The battery I used is 3V, not 4.5 V, like in the schematic. You can remove the RESET button, I placed it for other purposes.
Now the code:
//; 2000 us ON //; 27830 us OFF //; 390 us ON //; 1580 us OFF //; 410 us ON //; 3580 us OFF //; 400 us ON //; repeat after 63200 us (OFF) #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer BCSCTL1 = CALBC1_1MHZ; // Set range DCOCTL = CALDCO_1MHZ; P1DIR = 0x41; // P1.0 and P1.6 output (red and green LEDs) _delay_cycles(100000); P1OUT = 0x41; _delay_cycles(2000); P1OUT = 0x00; _delay_cycles(27830); P1OUT = 0x41; _delay_cycles(390); P1OUT = 0x00; _delay_cycles(1580); P1OUT = 0x41; _delay_cycles(410); P1OUT = 0x00; _delay_cycles(3580); P1OUT = 0x41; _delay_cycles(400); P1OUT = 0x00; _delay_cycles(63000); P1OUT = 0x41; _delay_cycles(2000); P1OUT = 0x00; _delay_cycles(27830); P1OUT = 0x41; _delay_cycles(390); P1OUT = 0x00; _delay_cycles(1580); P1OUT = 0x41; _delay_cycles(410); P1OUT = 0x00; _delay_cycles(3580); P1OUT = 0x41; _delay_cycles(400); P1OUT = 0x00; _delay_cycles(3000000); for (;;) { P1OUT = 0x41; // P1.6 on (red LED) _delay_cycles(1000000); P1OUT = 0x00; _delay_cycles(1000000); } }
Happy shooting!