fototrappola con arduino

ciao a tutti vorrei creare una foto trappola con arduino per far scattare la d90 uso lo stesso sistema che avevo usato per un intervallometro sempre con arduino usando 2 fotoaccoppiatori. praticamente il programma che deve fare la fototrappola è il seguente: un uccello si posa davanti al sensore di movimento e dopo 3 secondi inizia a fare 3 scatti uno dopo l'altro con un intervallo di 2 secondi tra ognuna dopo aspetta 3 secondi perchè il sensore si riattivi di nuovo e ricominci il ciclo qualcuno ho progetti simili a cui potrei dare un occhiata o magari spiegarmi meglio la parte dell' if? perchè anche sul mio scorso progetto avevo un po di problemi.

una schizzo del programma

int Apuls=0;
int movi;

void setup() {

    pinMode(7,OUTPUT); // fotoaccoppiatore 2
    pinMode(2,INPUT); // sensore movimento
    pinMode(8,OUTPUT); // fotoaccoppiatore 1
    
    
}

void loop() {

movi=digitalRead(2);
  if ((movi==HIGH) and (Apuls==0)) {
     Apuls=1;
     delay(100);
     
 if (Apuls==1) {
digitalWrite(8,HIGH);
delay(1000);
digitalWrite(7,HIGH);
delay(500);
digitalWrite(8,LOW);
digitalWrite(7,LOW);
delay(2000);
digitalWrite(8,HIGH);
delay(1000);
digitalWrite(7,HIGH);
delay(500);
digitalWrite(8,LOW);
digitalWrite(7,LOW);
delay(3000);

}

} 
}

In quello sketch intanto manca la graffa di chiusura sul primo if, e poi che io sapessi "and" in c# si scrive &&, ma magari stanotte ho dormito troppo poco :slight_smile:

Non ho capito nemmeno come usi i delay, non mi tornano con le tempistiche che hai scritto sopra

m265:
... e poi che io sapessi "and" in c# si scrive &&, ma magari stanotte ho dormito troppo poco

In effetti la sintassi corretta è && ... però esiste una iso646.h che definisce delle "orrende" macro che rimappano i VERI operatori del C (&& , || , ecc.) con "and", "or", e via dicendo ...

Puoi dare un'occhiata QUI :wink:

Guglielmo

Grazie Guglielmo non avevo idea che esistesse una cosa del genere!

Certo non ne capisco l'utilità a livelli così bassi...

Non vedo cosa c'entri essere a basso o ad alto livello con il fatto che un operatore logico vada scritto "||" oppure "and"...

Il motivo ha a che fare col fatto che su certe tastiere alcuni simboli sono scomodi da scrivere, o proprio non si possono scrivere del tutto. Per noi italiani || e && non sono un grosso problema, ma pensa già alla tilde ~ (sono infatti definite macro anche per gli operatori bitwise) o alle parentesi quadre/graffe...

Comunque in C++ quelle macro sono incluse nella definizione base del linguaggio. Essendo quello di Arduino appunto C++, non è nemmeno necessario includere l'header, ed è lecito aspettarsi che siano definite.

Che poi l'OP abbia fatto tutto ciò coscientemente è un altro discorso :D.

Ciao Succo,
io pensavo fosse una cosa creata per chi programma per lavoro usando linguaggi diversi e per quello parlavo del livello del programmatore, non capivo perché andare a cercare una soluzione per usare gli operatori di un altro linguaggio su un programma di 50 righe!!
Non sapevo che non è necessario includere l' header e quindi mi rendo conto di aver detto una cavolata, chiedo scusa!