[Projet] Montage de mesure de stabilité

Jean-François:

Artouste:
je pense qu'il est préférable d'utiliser la LDR en trigger (0 ou 1)

Je fais ça avec les interruptions ?
Ou est ce que c'est coté hardware que ça se joue ?

Bonjour
en entrée hard devant une pin digitale je mettrais un truc comme ça (reglage du niveau logique sur occultation)
http://cjoint.com/12fe/BBlmiCe0nxU_ldrard3.jpg (j'ai mis 100K à la louche)
je conserverais l'interruption pour le 1PPS issue de la Bdt
et dans la boucle principale, je vérifierais si il y a occultation (1 vers 0) pour incrémenter un compteur, attention à bien prendre en compte les transitions entre occultation et non occultation.
Compte tenu de la durée de boucle qui sera courte par rapport à la durée d'occultation, il ne faut faire un +1 qu’après réarmement (detection de la transition de 0 vers 1 après un 1 vers 0 )

Bout de code pondu rapidement pour les transitions, testé , semble fonctionnel (utilisation de millis() pour simuler le 1PPS interruption)

/*
 
 
 Turns on and off a light emitting diode(LED) connected to digital  
 pin 13, when LDR is trigerred on Pin 2. 
 
 
  */

// constants won't change. They're used here to 
// set pin numbers:
const int buttonPin = 2;     // the number of the pushbutton pin
const int ledPin =  13;      // the number of the LED pin
int Fill=true; // flag etat precedent , true pour etat illuminé
word Cpt=0; //compteur d'occultation 

unsigned long time;
// variables will change:
int buttonState = 0;         // variable for reading the pushbutton status

void setup() {
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);      
  // initialize the pushbutton pin as an input:
  pinMode(buttonPin, INPUT);   
  Serial.begin(115200);  
}

void loop(){
  // read the state of the pushbutton value:
  buttonState = digitalRead(buttonPin);

  // check if the pushbutton is pressed.
  // if it is, the buttonState is HIGH:
  if (buttonState == HIGH) {     
    // turn LED on:    
    digitalWrite(ledPin, HIGH);  

  } 
  else {
    // turn LED off:
    digitalWrite(ledPin, LOW); 
  }
  //-----------------------------------
  
  if (Fill== true) { // si etat precedent = illuminé

if (buttonState == false) // si etat lu = non illuminé = occultation 
{
Cpt=Cpt + 1; // increment du compteur d'occultation 
Fill=false;  // flag mis à non illuminé (occulté)
}
}
Fill= buttonState; // flag mis à l'etat lu sur pin ldr
  
  
  
  
  if (millis() -time > 1000) {
   Serial.println(Cpt, DEC);
   time=millis(); 
Cpt=0;
}
}

complément
http://cjoint.com/12fe/BBlqfDtF9zi_ldr04a.jpg
testé sur paillasse rapide avec

  • un 47K pour adapter le niveau de trigger
  • le sketch exemple de base (022) digital --> button
    à l'oscillo sur la led (13) après calage "potard" ça détecte même le 50Hz de ma lampe fluo 8)