Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Arduino trigger per foto fulmini

Progetti, interfacciamento, discussioni varie su questa piattaforma.

Moderatori: Foto UtenteWALTERmwp, Foto Utentexyz

0
voti

[21] Re: Arduino trigger per foto fulmini

Messaggioda Foto UtenteEtemenanki » 21 lug 2021, 16:39

Dopo un po di prove fatte in passato (quando ancora si andava di pellicola prima, e poi con le prime digitali), mi sento di reiterare il consiglio che ti hanno gia dato, vai in modalita' video (con la memoria piu capiente che trovi e se possibile un'alimentazione esterna), anche meglio se al posto di una macchina fotografica trovi una buona telecamera digitale (di quelle che puoi settare anche in manuale, non gli aggeggini "faso-tuto-mi" tanto comodi per i principianti ma senza alcuna impostazione manuale ;-) ), e poi in postproduzione fondi insieme piu fotogrammi (una volta che il "primo" fulmine della serie ha "tracciato la via" gli altri al 99% seguono lo stesso percorso, per cui se la macchina non si sposta puoi ricrearlo totalmente con una buona possibilita' anche senza le macchine professionali da centinaia o migliaia di FPS che si usano per lo studio dei fulmini)
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.
Avatar utente
Foto UtenteEtemenanki
9.517 3 6 10
Master
Master
 
Messaggi: 5940
Iscritto il: 2 apr 2021, 23:42
Località: Dalle parti di un grande lago ... :)

0
voti

[22] Re: Arduino trigger per foto fulmini

Messaggioda Foto Utentecalida82 » 23 lug 2021, 23:00

nonostante qualcuno dice di lasciar perdere, io voglio comunque provare, non credo sia una cosa così inutile visto che ci sono aziende che costruisco questi aggeggi (vedi pluto trigger) per venderli, certo non ho la presunzione e di costruire qualcosa di pari qualità...
A chi vuole darmi una mano chiedo un ultimo consiglio, alcuni hanno detto di fare la media delle letture, si parla sempre di risparmiare tempo e di essere il piu svelti possibile nel trovare una variazione di luminosità ma la media mi lascia un po perplesso, mettiamo un esempio, butto la dei numeri così a caso, mettiamo che con il buio, il mio sensore misuri il valore 2, e mettiamo che il fulmine crei una variazione di lettura di 100, se utilizzo le medie, prima di rilevare 100 (e probabilmanete non lo rilevero mai)dovro fare svariate letture, perche essendo una media devo alzare la media delle letture precedenti, (non so se mi sono spiegato bene) leggendo invece il valore a colpo secco, una variazione di cento sarebbe rilevata molto piu velocemente con una singola lettura piuttosto che con letture multiple e facendo poi la media...
dico male?
forse con una media delle letture precedenti confrontate con l'ultima lettura secca?
tipo qualcosa del genere?
Codice: Seleziona tutto
#define led 4
#define sensore A3
#define scatto 1
#define regolazione A1

int soglia = 0;
int ultimaLettura = 0;
int media[] {0, 0, 0, 0, 0};
int i = 1;



// the setup function runs once when you press reset or power the board
void setup() {
  // initializa i pin
  pinMode(led, OUTPUT);
  pinMode(sensore, INPUT);
  pinMode(regolazione, INPUT);
  pinMode(scatto, OUTPUT);
  media[1] = analogRead(sensore);
  media[2] = analogRead(sensore);
  media[3] = analogRead(sensore);
  media[4] = analogRead(sensore);
  media[5] = analogRead(sensore);
  soglia = analogRead(regolazione);
 
}

// the loop function runs over and over again forever
void loop() {
    int letturaMedia = ((media[1] + media[2] + media[3] + media[4] + media[5])/5);
    ultimaLettura = analogRead(sensore);
    if ((ultimaLettura - letturaMedia) > soglia){
      digitalWrite(scatto, HIGH);
      delay(1000);
      digitalWrite(scatto, LOW);
      delay(500);
    }
    if (i > 5){
      i = 1;
    }
    else{
      i++;
    }
    media[i] = ultimaLettura;
   
  }
Avatar utente
Foto Utentecalida82
35 1 7
Frequentatore
Frequentatore
 
Messaggi: 138
Iscritto il: 11 set 2013, 14:52

0
voti

[23] Re: Arduino trigger per foto fulmini

Messaggioda Foto UtentedrGremi » 24 lug 2021, 6:54

calida82 ha scritto:forse con una media delle letture precedenti confrontate con l'ultima lettura secca?

Sisi era quello che ti dicevo. Fai la media delle ultime x letture e la confronti con l'ultimo valore letto più una soglia percentuale sulla media. O addirittura fai solo una fase di calibrazione e non fai la media mobile per la soglia.

Per quanto riguarda il codice non usare gli Array in quel modo. Usa un ciclo e scorri l'arrey.
Avatar utente
Foto UtentedrGremi
2.294 3 5 9
Master EY
Master EY
 
Messaggi: 1455
Iscritto il: 20 nov 2019, 19:49

0
voti

[24] Re: Arduino trigger per foto fulmini

Messaggioda Foto Utentecalida82 » 24 lug 2021, 17:18

No invece, l'ho fatto di proposito, un ciclo é ripetere la stessa operazione più volte con spreco di tempo e risorse... In questo modo scrivo più codice ma con una sola operazione ho il risultato senza dover ciclare per fare la somma x volte e poi dividere...
Avatar utente
Foto Utentecalida82
35 1 7
Frequentatore
Frequentatore
 
Messaggi: 138
Iscritto il: 11 set 2013, 14:52

0
voti

[25] Re: Arduino trigger per foto fulmini

Messaggioda Foto UtentedrGremi » 24 lug 2021, 20:34

calida82 ha scritto:No invece, l'ho fatto di proposito

Sempre sbagliato è.

calida82 ha scritto:ma con una sola operazione

Ti piacerebbe!
Avatar utente
Foto UtentedrGremi
2.294 3 5 9
Master EY
Master EY
 
Messaggi: 1455
Iscritto il: 20 nov 2019, 19:49

0
voti

[26] Re: Arduino trigger per foto fulmini

Messaggioda Foto UtenteGabrieleb » 24 lug 2021, 21:21

drGremi ha scritto:
calida82 ha scritto:No invece, l'ho fatto di proposito

Sempre sbagliato è.

calida82 ha scritto:ma con una sola operazione

Ti piacerebbe!


Beh proprio sbagliato non direi forse non elegante e poi un po' di tempo si risparmia .
A me é capitato di dovere fare così perché non ci stavo col tempo.
Avatar utente
Foto UtenteGabrieleb
165 1 5
Frequentatore
Frequentatore
 
Messaggi: 193
Iscritto il: 22 ott 2009, 19:27

0
voti

[27] Re: Arduino trigger per foto fulmini

Messaggioda Foto UtenteGioArca67 » 24 lug 2021, 21:36

Quel che dite era valido più o meno 20 anni fa.
Ormai è meglio programmare in modo leggibile, chiaro e riusabile ed imparare ad usare bene il compilatore, che è circa 10 volte più capace di noi a trasformare il nostro programma in linguaggio macchina efficiente.
Con le opportune direttive compila sicuramente in modo più ottimizzato di quanto non possiamo fare noi coi nostri marchingegni...
...ad esclusione di due o tre guru mondiali...
Avatar utente
Foto UtenteGioArca67
4.580 4 6 9
Master EY
Master EY
 
Messaggi: 4591
Iscritto il: 12 mar 2021, 9:36

0
voti

[28] Re: Arduino trigger per foto fulmini

Messaggioda Foto UtenteGioArca67 » 24 lug 2021, 22:23

Se proprio vuoi guadagnare tempo somma 4 valori (non credo ci sia tutta questa differenza fra mediare 4 o 5 valori) e fai uno shift right di 2 posizioni per dividere per 4.
La analogRead poi non è un fulmine (per rimanere in tema!), anzi... quindi il tempo viene perso lì.
Cambia il prescale a 16 in modo da clockare l'ADC ad 1MHz e guadagni 8 volte:

Codice: Seleziona tutto
#define FASTADC 1

// defines for setting and clearing register bits
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

void setup() {
#if FASTADC
  // set prescale to 16
  sbi(ADCSRA,ADPS2) ;
  cbi(ADCSRA,ADPS1) ;
  cbi(ADCSRA,ADPS0) ;
#endif

..... Segue il codice che ti serve.

a scapito di un poco di precisione in meno nella conversione.
O_/
Avatar utente
Foto UtenteGioArca67
4.580 4 6 9
Master EY
Master EY
 
Messaggi: 4591
Iscritto il: 12 mar 2021, 9:36

0
voti

[29] Re: Arduino trigger per foto fulmini

Messaggioda Foto Utentecalida82 » 25 lug 2021, 9:29

GioArca67 ha scritto:Se proprio vuoi guadagnare tempo somma 4 valori (non credo ci sia tutta questa differenza fra mediare 4 o 5 valori) e fai uno shift right di 2 posizioni per dividere per 4.
La analogRead poi non è un fulmine (per rimanere in tema!), anzi... quindi il tempo viene perso lì.
Cambia il prescale a 16 in modo da clockare l'ADC ad 1MHz e guadagni 8 volte:

Codice: Seleziona tutto
#define FASTADC 1

// defines for setting and clearing register bits
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

void setup() {
#if FASTADC
  // set prescale to 16
  sbi(ADCSRA,ADPS2) ;
  cbi(ADCSRA,ADPS1) ;
  cbi(ADCSRA,ADPS0) ;
#endif

..... Segue il codice che ti serve.

a scapito di un poco di precisione in meno nella conversione.
O_/


Funziona anche su attiny85?

GioArca67 ha scritto:Quel che dite era valido più o meno 20 anni fa.
Ormai è meglio programmare in modo leggibile, chiaro e riusabile ed imparare ad usare bene il compilatore, che è circa 10 volte più capace di noi a trasformare il nostro programma in linguaggio macchina efficiente.
Con le opportune direttive compila sicuramente in modo più ottimizzato di quanto non possiamo fare noi coi nostri marchingegni...
...ad esclusione di due o tre guru mondiali...

quel che dice è vero, ma fino ad un certo punto, il compilatore trasforma il tuo programmino in codice macchina, per quanto intelligente possa essere se nel programmino scrivi un ciclo, sempre un ciclo fara eseguire al micro....
drGremi ha scritto:
calida82 ha scritto:No invece, l'ho fatto di proposito

Sempre sbagliato è.


che possa non essere bello a vedersi che possa non essere leggibile che il buon senso dica di usare il ciclo posso anche essere d'accordo, ma non puoi dire che è sbagliato e che non si risparmia tempo.

calida82 ha scritto:ma con una sola operazione

Ti piacerebbe!

non è che piace a me, è così.... il tempo per prendere il valore dalla variabile è lo stesso sia nel ciclo che fuori, peccato che se usi il ciclo devi ogni volta oltre che andare a prendere il valore corrente dell'array, devi anche andarti a prendere il valore della variabile dove memorizzi la somma dell'array, oltre a doverla scrivere ogni volta. per quanto il tempo usato solo in lettura scrittura (tralasciando quello delle operazioni 6 a fronte di 1)possa essere poco (o insignificante) viene comunque utilizzato del tempo in più nel ciclo rispetto alla unica operazione. Magari non è questo tempo che fara o meno funzionare il mio aggeggino, ma non puoi dire che è sbagliato o che impiega lo stesso tempo (la regola non l'obbligo direbbe di usare un cliclo, ma bisogna anche vedere anche il contesto)
Avatar utente
Foto Utentecalida82
35 1 7
Frequentatore
Frequentatore
 
Messaggi: 138
Iscritto il: 11 set 2013, 14:52

0
voti

[30] Re: Arduino trigger per foto fulmini

Messaggioda Foto UtentedrGremi » 25 lug 2021, 16:48

calida82 ha scritto: e che non si risparmia tempo.

Puoi anche impiegare più tempo paradossalmente invece che risparmiarlo. Non voglio fare quello che chiede da che studi vieni. Però non è così.

calida82 ha scritto:per quanto intelligente possa essere se nel programmino scrivi un ciclo, sempre un ciclo fara eseguire al micro....

Anche questo non è corretto.

Comunque stiamo divagando! Onestamente chissenefrega.

Se vuoi una review potresti postare il codice di quello che hai scritto e il circuito e vediamo se si trova qualche criticità. Comunque penso tutti i suggerimenti che si potessero fare sono stati dati. Tocca fare la prova se va!
Avatar utente
Foto UtentedrGremi
2.294 3 5 9
Master EY
Master EY
 
Messaggi: 1455
Iscritto il: 20 nov 2019, 19:49

PrecedenteProssimo

Torna a Arduino

Chi c’è in linea

Visitano il forum: Nessuno e 26 ospiti