4x4 keypad to set a delay length for intervalometer
hi
i'm pretty new arduino, though have been running trough various projects week , have learnt much. time put of use!
i building intervalometer sony camera. have found source code trigger shutter , can amend delay length via timebetweenshots variable. however, want use 4x4 keypad select different delay lengths programmed each key. example, if want 3 second shutter delay, press '1' on keypad.
i managed include potentiometer code adjust length, though able second delay, switched keypad.
how can use keypad change timebetweenshots variable?
here code far:
any assistance appreciated.
i'm pretty new arduino, though have been running trough various projects week , have learnt much. time put of use!
i building intervalometer sony camera. have found source code trigger shutter , can amend delay length via timebetweenshots variable. however, want use 4x4 keypad select different delay lengths programmed each key. example, if want 3 second shutter delay, press '1' on keypad.
i managed include potentiometer code adjust length, though able second delay, switched keypad.
how can use keypad change timebetweenshots variable?
here code far:
code: [select]
// declarations
unsigned long timebetweenshots = 1000; // time in ms 60000 = 60 seconds
int irled = 12; // ir output signal anode of ir led
// cathode of ir led ground through 150 ohm resistor.
int begin = 13; // indicates shutter start on led
int potpin = a2; // select input pin potentiometer
// code send shutter release command b4b8f
int scodebits[] = {1,0,1,1,0,1,0,0,1,0,1,1,1,0,0,0,1,1,1,1};
#include <keypad.h>
const byte numrows= 4; //number of rows on keypad
const byte numcols= 4; //number of columns on keypad
//keymap defines key pressed according row , columns appears on keypad
char keymap[numrows][numcols]=
{
{'1', '2', '3', 'a'},
{'4', '5', '6', 'b'},
{'7', '8', '9', 'c'},
{'*', '0', '#', 'd'}
};
//code shows the keypad connections arduino terminals
byte rowpins[numrows] = {9,8,7,6}; //rows 0 3
byte colpins[numcols]= {5,4,3,2}; //columns 0 3
//initializes instance of keypad class
keypad mykeypad= keypad(makekeymap(keymap), rowpins, colpins, numrows, numcols);
void setup()
{
// setup irled , begin led pins outputs
pinmode(irled, output); // sets digital pin output
pinmode(begin, output); // sets digital pin output
}
// infinite loop
void loop(){
digitalwrite(begin, high); // signal begin led on
(int i=1; <= 3; i++) // send command 3 times per sony specs
{
header(); // send start header
(int i=0; <= 19; i++) // loop send bits
{
if(scodebits[i] == 1) // data_is_one sent ?
{
data_is_one(); // yes, send data_is_one bit
}
else // no, data_is_zero sent
{
data_is_zero(); // send data_is_zero bit
}
}
delay(11); // delay padding give approx 45ms between command starts
}
digitalwrite(begin, low); // begin led off
delay(timebetweenshots); // hang wasting time before next shot
}
// routine give 40khz burst signal
void burst() // 40khz burst
{
digitalwrite(irled, high); // sets pin on
delaymicroseconds(10); // pauses 13 microseconds (fudged 10us delay)
digitalwrite(irled, low); // sets pin off
delaymicroseconds(8); // pauses 12 microseconds (fudged 8us delay)
}
// routine give quiet period of data
void quiet() // quiet burst
{
digitalwrite(irled, low); // sets pin off
delaymicroseconds(10); // pauses 13 microseconds (fudged 10us delay)
digitalwrite(irled, low); // sets pin off
delaymicroseconds(8); // pauses 12 microseconds (fudged 8us delay)
}
// routine send header data burst
// allows ir receiver set agc (gain)
// header burst timing 96 * 0.025us = 2.4ms
// quiet timing 24 * 0.025us = 600us
void header()
{
(int i=1; <= 96; i++){
burst(); // 40khz burst
}
(int i=1; <= 24; i++){
quiet(); // no 40 khz
}
}
// routine send 1 data burst
// burst timing 48 * 0.025us = 1.2ms
// quiet timing 24 * 0.025us = 600us
void data_is_one()
{
(int i=1; <= 48; i++){
burst(); // 40khz burst
}
(int i=1; <= 24; i++){
quiet(); // no 40 khz
}
}
// routine send 0 data burst
// burst timing 24 * 0.025us = 600us
// quiet timing 24 * 0.025us = 600us
void data_is_zero()
{
(int i=1; <= 24; i++){
burst(); // 40 khz burst
}
(int i=1; <= 24; i++){
quiet(); // no 40 khz
}
}
any assistance appreciated.
my advice first keypad working simple test sketch separate rest of code. may able use 1 of examples included keypad library(file > examples > keypad). test sketch print pressed key serial monitor. save test sketch use test if need troubleshoot keypad later. once have working easier incorporate working keypad code project.
Arduino Forum > Using Arduino > Programming Questions > 4x4 keypad to set a delay length for intervalometer
arduino
Comments
Post a Comment