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

Pedro_Silva:
OK,já percebi,basta testar a continuidade dos fios.
Quanto a ligar os fios directamente,o que queria dizer era cortar o jack e fazer a ligação dos fios directamente no circuito ficando o cabo sempre ligado e depois era só ligar na máquina...não sei se me faço entender.

Era isso que eu estava a dizer. O jack fica com maus contactos e não é fácil de meter numa placa.

Pedro_Silva:
Acreditas que já tive a mesma opinião que tu?Tive mesmo e continuo a achar que fazer este tipo de imagens continuamente se torna monótono e não é isso que pretendo,o que quero é experimentar coisas novas na fotografia.

Na boa... como disse, também dá para apanhar os meus gatos. LOL

Pedro_Silva:
Então vou ter que procurar outra solução,talvez encontre uma fonte de alimentação barata...

Isso não será difícil, creio... um bom carregador de telemóveis talvez dê.

Pedro_Silva:
Parece-me que estou com um problema com o LCD Shield que comprei,é o modelo 'A' aqui: 16 X 2 LCD Keypad Shield for Arduino - LinkSprite Playgound

Pois... percebi isso agora. Talvez arranjar um shield que dê para soltar componentes e colocar os fios a sair da parte de trás. Ou usar um mega para teres acesso aos pinos da parte de trás.

Pedro_Silva:
È o seguinte,depois de encaixar o LCD no Arduino fico sem acesso ás portas do mesmo...vou ter que encontrar uma solução para isto,tens alguma sugestão?

Podes também pesquisar por uns LCDs que trazem um módulo de comunicação SPI ou I2C. Assim só precisas de 2 pinos (o que é muito bom, tendo em conta que o LCD te leva 7).
http://www.ebay.co.uk/itm/New-Blue-IIC-I2C-TWI-2004-20x4-Serial-LCD-Module-Display-Arduino-compatible-/151003806901?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item2328873cb5

Pedro_Silva:
A ideia de adicionar uma luz externa ao setup é realmente muito bem pensado e interessante!

Pelo menos poupava-te trabalho. Mas adiciona um pouco mais de complicação... Pode ser um upgrade interessante mais à frente talvez, já que não é muito complicado de realizar e não interfere com as sequências.

Pedro_Silva:
Bem acho que está na hora de apresentar algum trabalho,estive a testar com leds e resistências e escrevi um código para ver se consigo aquilo que quero...de notar que nunca programei nenhum Arduino e há 3-4 semanas atrás nem sabia o que isso era,portanto o código que escrevi pode não fazer sentido nenhum,mas aparentemente pelo que observo no funcionamento dos leds,faz aquilo que pretendo.

E se for algo assim?

//
unsigned long time;

#define PASSOS     8

const char pushButton = 13;  //botão de inicio ligado ao pinp 13
const char cameraPin = 10;   //shutter da máquina ligado ao pino 10
const char valvulaPin = 11;  //válvula ligada ao pino 11
const char flashPin = 12;    //flash ligado ao pino 12

//sequências... 
/*
As sequências são definidas por bits. cada unsigned char tem 8 bits. 
Estados                  0     1    2     3    4    5     6     7
bit 0 - Luz exterior  1 -- 0 -- 0 -- 0 -- 0 -- 0 -- 0 -- 1
bit 1 - válvula          0 -- 0 -- 0 -- 1 -- 0 -- 0 -- 0 -- 0
bit 2 - obturador      0 -- 0 -- 0 -- 0 -- 1 -- 1 -- 1 -- 0
bit 3 - flash.            0 -- 0 -- 0 -- 0 -- 0 -- 1 -- 0 -- 0

*/
unsigned char sequencia_pinos[8]; //imagine que a sequência tem 8 estados
unsigned long sequencia_tempo[8]; //tempos entre sequências...

void executa_sequencia(unsigned long start) {
   unsigned char seq_counter = 0; 
   
   for (int i = 0; i < PASSOS; i++) { //percorre as sequencias
      do {
          digitalWrite(luz_exterior, (sequencia_pinos[i] & 0x1));
          digitalWrite(valvula, (sequencia_pinos[i] >> 1) & 0x1);
          digitalWrite(obturador, (sequencia_pinos[i] >> 2) & 0x1);
          digitalWrite(flash, (sequencia_pinos[i] >> 3) & 0x1);
      }while (millis() - start <= sequencia_tempos[i]);  
      start = millis(); //reinicializa temporizacção
   }//end for   
       
}

void setup()
 {
//inicializa sequencia de pinos.
   sequencia_pinos[0] = 0b00000001;
   sequencia_pinos[1] = 0b00000000;
   sequencia_pinos[2] = 0;
   sequencia_pinos[3] = 0b00000010;
   sequencia_pinos[4] = 0b00000100;
   sequencia_pinos[5] = 0b00001100;
   sequencia_pinos[6] = 0b00000100;
   sequencia_pinos[0] = 0b00000001;

//inicializa sequencia de tempos.  
   sequencia_tempos[0] = 1000; //1000 para testar e ver se tudo funciona como deve ser. 
   sequencia_tempos[1] = 1000;
   sequencia_tempos[2] = 1000;
   sequencia_tempos[3] = 1000;
   sequencia_tempos[4] = 1000;
   sequencia_tempos[5] = 1000;
   sequencia_tempos[6] = 1000;
   sequencia_tempos[7] = 1000;
   sequencia_tempos[8] = 1000;


   pinMode(pushButton,INPUT);    //inicia o botão como input
   pinMode(cameraPin,OUTPUT);    //inicia o shutter como output
   pinMode(valvulaPin,OUTPUT);   //inicia a válvula como output
   pinMode(flashPin,OUTPUT);     //inicia o flash como output

     
 }

 
 void loop() { 
    if (digitalRead(pushButton) == 1) { //carregaste no botão
        executa_sequencia(millis());
    }


 }

Nota que isto tem bugs, mas é muito mais flexível pois podes aumentar o numero de saidas e tempos à sequência. Se perceberes como é feita a configuração das saídas com os tempos estás lançado. :slight_smile:
Tenta ver se compila e se faz o que pretendes (coloca uma sequência simples com alterações de luzes em todos os níveis para testar)
Se isto funcionar, depois é uma questão de adicionar o LCD. Isso será o mais complicado. :\ LOL

Pedro_Silva:
Muito bom o trocadilho,LOL

Não estava a fazer um trocadilho... uma das minhas ideias seria mesmo apanhar os meus gatos desprevenidos. LOL