Go Down

Topic: SOFTWARE FOCUS STACKING-PROBLEMA PER FINIRLO (Read 221 times) previous topic - next topic

Simone27

 >:( Si tratta di un progetto scolastico, di FOCUS STACKING, il sistema attraverso il quale una fotocamera viene spostata via arduino di un 1mm alla volta( su un tubo rettificato "filettato" da 6mm , essendo da 6mm, ogni giro completo si sposta di 1mm perfetto); ad ogni giro scatta una foto: in questo modo, essendo ogni volta spostato(il fuoco dell'obbiettivo) , le 20/30 foto verranno messe insieme da photoshop cs6, così che esce alla fine, un'immagine finale con una profondità di campo maggiore di quella ottenibile con le tecniche tradizionali (=una somma di tutte le foto).Utilizzo un arduino uno,due finecorsa(uno per lato), un motore stepper NEMA17, ed un modulo bluetooth HC-05.
<<Io, vi chiedo , quindi , se potete aiutarmi a finire il Software, perchè non riesco a capirci più.Manca tutta la parte dell'inizializzazione, ed in più ci sono dei problemi nel seguente codice.  Ditemi cosa aggiungere e cosa modificare( delle cose sbagliate).>> MI SERVE ENTRO QUALCHE GIORNO...


QUESTO è IL CODICE(QUI SOTTO IN ALLEGATO)

gpb01

Buongiorno,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie. :)

Guglielmo

P.S.: Qui una serie di link utili, NON necessariamente inerenti alla tua domanda:
- serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections
- pinout delle varie schede by xxxPighi: Pinout
- link generali utili: Link Utili
Search is Your friend ... or I am Your enemy !

gpb01

#2
May 25, 2018, 05:19 pm Last Edit: May 25, 2018, 05:20 pm by gpb01
>> MI SERVE ENTRO QUALCHE GIORNO...
Ah .. guarda che qui NESSUNO è al tuo servizio, quindi ... se ti SERVE ENTRO QUALCHE GIORNO ... paghi un consulente e te lo fai fare, altrimenti ...

... con calma, educazione e pazienza aspetti che qualcuno che passa (... e ricorda che qui siamo tutti volontari NON pagati che aiutiamo nel nostro tempo libero) veda il tuo problema e provi ad aiutarti a risolverlo.

Guglielmo
Search is Your friend ... or I am Your enemy !

Simone27

Non volevo essere scortese sig. Guglielmo mi scuso.Quando ho detto mi SERVE non intendevo che qualcuno debba farlo per me subito come uno schiavo:intendevo solamente che mi servirebbe entro qualche giorno.Non volevo fare il scortese.Comunque le conoscienze sono basse-medie.Grazie per la risposta.Volevo chiarire che lo scritto velocemente: non volevo fare intendere ciò che lei ha capito( so che nessuno è pagato qui, chiedo solo aiuto).

gpb01

#4
May 25, 2018, 05:33 pm Last Edit: May 25, 2018, 05:33 pm by gpb01
Non volevo essere scortese sig. Guglielmo mi scuso.
Nessun problema Simone :) , se si può aiutare, ben volentieri, solo ... prima devi fare la presentazione nell'apposito thread, come indicato nel mio post #1 e ... anche una attenta lettura al regolamento ;)

Guglielmo
Search is Your friend ... or I am Your enemy !

gpb01

... altra cosa, per aiutare chi ti deve aiutare:  metti uno schema (... va bene anche fatto a penna su un foglio di carta, purché chiaro e leggibile, allegandolo come immagine) di tutti i collegamenti fatti e di tutti i componenti usati.

Guglielmo
Search is Your friend ... or I am Your enemy !

Patrick_M

ok cominciamo :)

elimina le scritte main e motore, se vuoi lasciarle commentale altrimenti non compila :)

all'inizio del loop
fai un .print("a")

quindi non aspetti un carattere da bt

quindi procedi con l'analisi

se il carattere è 'a'
esegui x_sx

la funzione x_sx()
alza il pin direzione
poi si muove di 200 passi
e quando ha terminato il movimento scatta 95 foto
non credo che tu volessi questo
quindi presumo che tu voglia scattare una foto ogni x passi dove x = 200
quindi ci vuole un coclo più esterno
che:
per un totale di 20-30 scatti
    fa una foto
    sposta di 200 passi
fine ciclo
Code: [Select]

for (byte numFoto = 0 ; numFoto <30; numFoto++) {  // ipotizzo 30 foto
     digitalWrite(scatta, HIGH);
     delayMicroseconds(pausa2stepper);
     digitalWrite(scatta, LOW);
      for (int x = 0; x < passi_x; x++) {
         digitalWrite(stepPin, HIGH);                          // lo stePin1 viene portato a livello alto
         delayMicroseconds(pausa1stepper);            // delay
         digitalWrite(stepPin, LOW);                          // lo stePin1 viene portato a livello basso
         delayMicroseconds(pausa2stepper);            // delay
      }
}
[code]

nell'ultima funzione x_dx() manca la graffa iniziale e sicuramente anche questa è da rivedere
però bisogna capire cosa deve fare

per inserire (lo sketch) il programma, dall'IDE clicca modifica, clicca copia per il forum poi vieni qui e incolla nel tuo post (ctrl+v) ;)

torn24

Ciao :)
Mancano i pinMode() dei vari pin utilizzati nella funzione setup()

Non hai descritto nello specifico cosa vuoi ottenere, come si deve comportare il sistema nello specifico,
sappiamo solo che deve spostarsi e scattare foto in successione, ma ciò non è sufficiente a sapere come si deve comportare il sistema.

Le funzioni di spostamento devono essere rivedute in base a ciò che vuoi ottenere effettivamente.

Sarebbe opportuno avere una funzione da richiamare ad inizio programma o tramite un comando inviato
da seriale, che porta ad home la macchina, esempio hai due finecorsa, in un ciclo while, fino a che il finecorsa non è attivo, muovi verso destra "se l'home è a destra" :)

Dovresti descrivere il comportamento che vuoi ottenere dal sistema esattamente.

Esempio.
Muove verso sinistra, ad ogni spostamento di un millimetro scatta una foto.



Altra cosa, per valutare i caratteri ricevuti da seriale, usi una successione di if() che vengono tutti valutati ogni volta, sarebbe meglio usare una successione di "else if()", che vengono valutati solo se la
precedente è falsa, o ancora meglio usare la struttura switch() case...

Go Up