Go Down

Topic: foto highspeed con arduino (Read 206 times) previous topic - next topic

majhico

salve a tutti
premetto innanzitutto che sono un neofita e uso arduino da poco tempo.
in questi giorni stavo dando vita ad una mia idea, (ma devo dire la verita, con scarsi risultati).
il mio intento era quello di unire la mia passione per la fotografia a quella dell'elettronica e provare a scattare foto da una reflex tramite arduino.
tutto qua!!! direte voi
be non proprio, l'idea era un pochino più complessa.
provvisto di un microfono o sensore sonoro arduino doveva rilevare il suono e azionare il flash nel minor tempo possibile tale da riprendere  lo scoppio di un palloncino.
All'inizio non mi sembrava difficile ma sto avendo problemi con il sensore suono
qualcuno di voi ha già fatto esperimenti del genere e sarebbe così gentile da aiutarmi
grazie anticipatamente per la disponibilità.

Lucailvec

Incomincia con questo però non cedo che sia una cosa molto fattibile rilevando il suono...sai com'è la luce viaggia leggermente più veloce del suono e oltretutto non ho la più pallida idea della latenza di sistema dell genere.
Potresti pensare invece di coordinare lo scatto con un ago che buca il palloncino , forse è meglio no ?

majhico

#2
Oct 21, 2014, 12:49 am Last Edit: Oct 21, 2014, 04:01 pm by leo72
la sincronizzazione meccanica è molto più difficile.
Ho appena acquistato un sensore suono lm393
ma ancora non riesco a farlo interagire con arduino

Code: [Select]
#define led 13
#define SENSOR_PIN 0
#define SENSOR_THRESHOLD 0





void setup() {
pinMode(led, OUTPUT);
       analogRead(SENSOR_PIN);    // Facciamo fare una lettura a vuoto per assestare l'ADC
}

void loop() {
if ((analogRead(SENSOR_PIN) > SENSOR_THRESHOLD)) //
{
delay(10);
digitalWrite(led, HIGH); // Lampeggia il flash
delay(1500);
digitalWrite(led, LOW);

}
}





ho dato tensione al modulo collegando l'uscita al pin (A0)
il modulo funziona perche quando registra suoni accende il led integrato
ma sembra che arduino non percepisce segnali
forso ho sbagliato a scrivere il programma???

Lucailvec

Beh sicuramente una lettura digitale è più veloce del convertitore , non mi ricordo i tempi e nemmeno di che tipo eè il convertitore ma fidati che è molto più veloce una lettura da digitale.

Brado

#4
Oct 21, 2014, 12:57 pm Last Edit: Oct 22, 2014, 09:13 am by Brado
Ed oltretutto hai anche messo un delay di dieci, che rallenta maggiormente la reattività del sistema.
In fotografia 1\100 non è affatto trascurabile.

majhico

siccome non volevo solo fotografare scoppi di palloncini 
ho messo un delay di un decimo di secondo per fotografare la frutta che cadeva in acqua 
e quel decimo di secondo era giusto il tempo che trascorreva tra l'impatto della frutta con l'acqua (quindi il rumore)
e per farla immergere  sotto la superficie dell'acqua 


Brado

#7
Oct 22, 2014, 09:24 am Last Edit: Oct 22, 2014, 09:26 am by Brado
Diciamo che SENSOR_THRESHOLD secondo me dovresti metterlo almeno a 102 (10% della scala), o se hai il datasheet con la relativa tabella comparativa, impostare un valore di dB opportuno.
Questo perchè settato a 0, almeno che tu non sia in una deprivation room, avrai uno scatto continuo, perchè ti basta anche che il cane in mezzo alla strada abbai per far scattare la fotocamera.

Poi, visto che come dicevi, hai diverse cose da fotografare, potresti comandare il delay iniziale con un potenziometro.

Code: [Select]
int max_delay(150);
int pausa;
pausa = map(analogRead(potenziometro), 0, 1023, 0, max_delay);
delay(pausa);



cyberhs

Di moduli LM393 ce ne sono varie versioni, da un minimo di 3 pin a quelli con più pin.
Fornisci il link di quello in tuo possesso, perché forse hai un modello con uscita digitale e non analogica.

majhico

http://www.dx.com/p/lm393-sound-detection-sensor-module-black-221267#.VEgRsUtZd4M
il modulo lm393 ha solo tre pin
grazie Brado proverò a collegare anche il potenziometro 
e domani vi faro sapere i risultati
grazie per l'aiuto

cyberhs

Il modulo in tuo possesso ha solo l'uscita digitale che viene attivata quando si accende il LED sulla schedina.

Non essendo un uscita analogica, lo sketch è più semplice in quanto il trimmer sulla schedina determina il livello di soglia.

Code: [Select]

#define led 13
#define SENSOR_PIN 2

void setup() {
  pinMode(led, OUTPUT);
  pinMode(SENSOR_PIN, INPUT);
  attachInterrupt(0, ISR, RISING);    // external interrupt 0 su pin 2 (in alternativa 1 su pin 3)
}

void loop() {
  delay(100);
  digitalWrite(led, LOW);
{

void ISR() {
  digitalWrite(led, HIGH);     // flash
}

majhico

#11
Oct 31, 2014, 03:20 am Last Edit: Oct 31, 2014, 07:33 am by leo72
Code: [Select]
int sensore;
void setup ()
{  
pinMode(13,OUTPUT);
pinMode(11,INPUT);
}

void loop()
{
sensore=digitalRead(11);
if (sensore==HIGH)
{
 digitalWrite(13,HIGH);
}
else
{
digitalWrite(13,LOW);
}
}



ecco come ho programmato il sensore
sembra funzionare correttamente,
il flash é stato collegato sul pin 13 tramite un optoisolatore
adesso la difficoltà viene volendo insererire anche la reflex su un optoisolatore (4n35)
la macchina dovrebbe scattare alla pressione di un pulsante e fermare lo scatto pochi millisecondo dopo il lampeggio del flash (macchina impostata su bulb)


ho cercato di impostare così lo sketch


Code: [Select]
# define button 8
# define camera 6
# define microfono 11
# define flash 13


int pulsante;
int sensore;
void setup ()
{  
pinMode(flash,OUTPUT);
pinMode(microfono,INPUT);
pinMode(camera,OUTPUT);
pinMode(button,INPUT);
}

void loop()
{
pulsante=digitalRead(button);
if (pulsante==HIGH)
{
 delay(3000);
 digitalWrite(camera,HIGH);
}

sensore=digitalRead(microfono);
if (sensore==HIGH);
{
delay(10);
digitalWrite(flash,HIGH);
delay(10);
digitalWrite(flash,LOW);
delay(50);
digitalWrite(camera,LOW);
}

}

ma deve esserci un errore
perche la macchina non scatta..
qualcuno sarebbe cosi gentile da aiutarmi a capire dove sbaglio
grazie anche per l'aiuto che mi avete dato fino ad adesso

Go Up