Dúvida ligação máquina fotográfica DSLR ao Arduino

Ok... vamos dividir para conquistar.

Primeiro esquece a parte das gotas. Sabemos que temos 4 variáveis para ajustar. Não percebi o que queres dizer por menu de entrada. Se vires um LCD de 16 caracteres, não consegues meter lá muita informação.

Aqui fica um excerto da mecânica.
Infelizmente não é muito complexo e certamente que tem bugs, mas mostra como se faz, basicamente vais andando para cima e para baixo consoante as teclas que usaste.
Vais usar um LCD shield? Uma coisa boa do LCD shield é que usa o analogRead() para detectar o botão usado e isso faz com que não tenhas problemas de bounce.

#define NUMERO_MENUS 3

#define MENU_HOME 0
#define MENU_GOTA1 1
#define MENU_GOTA2 2

unsigned char menu_move = 0;
unsigned char menu_enter = 0;
unsigned char menu_exit = 0;

unsigned char estado_menu = 0;
unsigned char sub_menu = 0;
unsigned int temp = 0;
unsigned int parametro1 = 0;
unsigned int parametro2 = 0;

unsigned int parametros[3]; //estes ser~o os parametros que usas no teu programa das gotas

switch(estado_menu) {
case MENU_HOME: {
lcd.print("Gota 1");
lcd.print("Gota 2");
if (menu_move == TRUE) {
temp = (temp+1)%3;
}
lcd.print("menu");
lcd.print(temp);
if (menu_enter == TRUE) {
estado_menu = temp;
}
break;
case MENU_GOTA1: { //agora ficamos aqui dentro...
switch(sub_menu) {
case 0: {
lcd.print("move cursor para escolher parametro");
if (menu_move == TRUE) {
temp = (temp+1)%3;
}
lcd.print("menu");
lcd.print(temp);
if (menu_enter == TRUE) {
sub_menu = temp;
}
break;
}
case 1: {
lcd.clear();
lcd.print("ajuste parametro 1");
if (menu_move == TRUE)
parametro1++;
lcd.setCursor(0,1);
lcd.print(parametro1);
if (menu_enter == TRUE) {
parametros[0] = parametro1;
}
if (menu_exit == TRUE) {
sub_menu = 0;
}
break;
}
case 2: {
lcd.clear();
lcd.print("ajuste parametro 1");
if (menu_move == TRUE)
parametro2++;
lcd.setCursor(0,1);
lcd.print(parametro2);
if (menu_enter == TRUE) {
parametros[1] = parametro2;
}
if (menu_exit == TRUE) {
sub_menu = 0;
}
break;
}//end case 2

}//end switch sub_menu
}//end switch

Como podes ver é um pouco complicado, mesmo para um menu simples como este.

Com um interface série seria um pouco mais simples de programar, mas terias de ter o computador ao teu lado para configurar o bicho.

Infelizmente não tenho um lcd para fazer um programa completamente funcional e testado para veres. :frowning: