Il sito per chi ama smanettare con Arduino, Raspberry Pi & Co.
Notifications

Trappola fotografica  

   RSS

0

Innanzitutto mi presento essendo appena iscritto a questo Forum.

Mi chiamo Ezio, sono Cardiologo, e mi approccio solo ora al mondo dell'elettronica avendo ricevuto in regalo dalle mie figlie un Super Starter Kit UNO R3 Project della Elegoo.

Essendo appassionato di fotografia mi sono subito cimentato nella realizzazione di una trappola elettronica che fa uso di un sensore ad ultrasuoni in grado di pilotare un servo che andrà a premere il pulsante di scatto della fotocamera all'approssimarsi del soggetto da fotografare.

Non so ancora bene come fare a inviare allegati per cui provo ad inserire lo sketch tra <>. Non sarà forse un'idea originale, ma il risultato ottenuto mi soddisfa.

Ora penso di adeguare la risposta del sensore implementando una regolazione del calcolo della distanza mediante l'uso di un sensore di temperatura (vorrei fotografare un tasso che viene sempre a mangiare nel mio giardino durante la notte e quindi con condizioni climatiche imprevedibili vista la localizzazione montana del sito in cui dovrò operare).

Mi scuso per la lunghezza del messaggio e vi chiedo lumi per ottimizzare l'invio di files tecnici (es. lo schema realizzato con Fritzing).

Ciao, Ezio

#include <Servo.h>

Servo myservo; // crea l'oggetto SERVO per comandare il motore
int pos = 0; // variabile per settare la posizione del SERVO

const int triggerPort = 10;
const int echoPort = 9;
const int led = 13; // ho mantenuto questo comando per l'eventuale inserimento di un LED

void setup() {

myservo.attach(11); // seleziono il Pin 11 per l'attacco del SERVO

pinMode(triggerPort, OUTPUT);
pinMode(echoPort, INPUT);
pinMode(led, OUTPUT);
//Serial.begin(9600); // qui ho commentato le linee
//Serial.print( "Sensore Ultrasuoni: "); // per disattivare il monitor seriale
}

void loop() {

//porta bassa l'uscita del trigger
digitalWrite( triggerPort, LOW );
//invia un impulso di 10microsec su trigger
digitalWrite( triggerPort, HIGH );
delayMicroseconds( 15 );
digitalWrite( triggerPort, LOW );

long durata = pulseIn( echoPort, HIGH );

long distanza = 0.034 * durata / 2;

Serial.print("distanza: ");

if( durata > 50000 ){ //dopo 380ms è fuori dalla portata del sensore
Serial.println("Fuori portata ");
}
else{
Serial.print(distanza);
Serial.println(" cm ");

}

// Qui inizia il mio esperimento di attivazione del SERVO

if( durata < 1300 ){
for (pos = 150; pos <= 180; pos += 2) { // Muovo il servo da 150 a 180 gradi
// in steps di 2 gradi
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(5); // il SERVO impiaga 5 msec per raggiungere la nuova posizione
}
for (pos = 180; pos >= 150; pos -= 2) { // il SERVO ritorna da 180 a 150 gradi
myservo.write(pos);
delay(5); // il SERVO impiaga 5 msec per ritornare alla posizione di partenza
}
}

//Aspetta 1/2 secondo per scattare una nuova foto se sono mantenute le condizioni di distanza

delay(500);
}

Questa discussione è stata modificata 2 mesi fa 2 times da admin
1 Answer
0

Ciao Ezio, inanzitutto complimenti per la fantasia!

In secondo purtroppo devo dirti che il forum è così come l'hai trovato: non ci sono lumi per inviare schemi aggiuntivi se non quelli che pagano le opzioni a pagamento del plugin del forum, risorse di cui al momento non disponiamo avendo questo sito carattere amatoriale.

Se riesci a spiegarti lo stesso con gli strumenti che abbiamo messo a disposizione ben venga.

Saluti

Entra nel forum

Hai un nuovo progetto in mente ma hai dei dubbi su come realizzarlo? Vuoi condividere la tua conoscenza da maker con gli altri? Registrati nella nostra community e potrai chiedere fare la tua domanda o rispondere e condividere la tua conoscenza in internet.

Spread the love
  • 1
  •  
  •  
  •  
  •  
  •  
  •  
  •  
    1
    Share