Aggiungiamo un controllo per il numero di foto da scattare

Aggiungendo alcune righe al programma possiamo fare in modo che possiamo fermare il motore e lo scatto dopo un numero preciso di foto (evidenziate le righe aggiunte):

//definiamo i pin utilizzati
int MotoreDir=3;
int MotoreStep=4;
int MotoreEnable=5;
int Led=13;
//definiamo le variabili che useremo
int NumeroPassi=200;//Il motore dovrebbe fare un giro 200x1,8°=360°
int Attesa=1000;//1 secondo tra un giro e l'altro
int Velocita=5;//Tempo di attesa tra uno step e l'altro. Più è basso questo valore più è veloce il motore
boolean Direzione = false;//variabile per gestire la direzione del motore
int NumeroFotoDaScattare = 300;//variabile per gestire il numero di foto da scattare
int NumeroFotoScattata = 0;

void setup() {
       pinMode(MotoreDir, OUTPUT); // imposto il pin indicato come uscita
       pinMode(MotoreStep, OUTPUT); // imposto il pin indicato come uscita
       pinMode(MotoreEnable, OUTPUT); // imposto il pin indicato come uscita
       pinMode(Led, OUTPUT); // imposto il pin indicato come uscita
}

void loop(){
      if (NumeroFotoScattata<NumeroFotoDaScattare)
      {
        AccendiLed();
        Motore();
        SpegniLed();
        delay(Attesa);//attendiamo per il prossimo ciclo
        NumeroFotoScattata++;//Incrementiamo il numero di foto scattate. 
                           //Scritta in questo modo, questa riga equivale a 
                           //NumeroFotoScattata = NumeroFotoScattata + 1
      }
}

void AccendiLed(void)
{
      digitalWrite(Led, HIGH);//accendiamo il led
}
void SpegniLed(void)
{
      digitalWrite(Led, LOW);//spegnamo il led
}

void Motore(void)
{
    
    if (Direzione==true) digitalWrite(MotoreDir, HIGH);//Abilitiamo un senso di rotazione
    if (Direzione==false) digitalWrite(MotoreDir, LOW);//Abilitiamo il senso opposto
     
     digitalWrite(MotoreEnable, LOW);//Abilitiamo la scheda passo passo abbassando il livello logico dell'uscita
      for (int ciclo=0;ciclo<NumeroPassi;ciclo++){
            //diamo un impulso al motore
            digitalWrite(MotoreStep, LOW);
            delayMicroseconds(2);
            digitalWrite(MotoreStep, HIGH);
            delayMicroseconds(2);
            delay(Velocita);//attesa per il prossimo impulso
      }
    digitalWrite(MotoreEnable, HIGH);//Disabilitiamo la scheda passo passo alzando il livello logico dell'uscita
}

Aggiungiamo il collegamento alla fotocamera

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Donate

Support TLTools, Make A Donation

Please make a donation if you enjoy using our software and believe in the importance of what the ciemmesoft is working to accomplish.

PayPal Donate Button

Fai una donazione!

Sostieni il progetto, fai una donazione TLTools è un progetto gratuito. Fai una donazione se ti piace utilizzare il nostro software e se credi nell'importanza di ciò a cui il progetto lavora.

PayPal Donate Button