IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Mesure de temps en utilisant une photo-résistance


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inventeur
    Inscrit en
    Août 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Inventeur

    Informations forums :
    Inscription : Août 2019
    Messages : 2
    Par défaut Mesure de temps en utilisant une photo-résistance
    Bonjour,

    Je cherche à modifier le script suivant qui calcul le temps de lumière
    Je souhaite calculer le temps d'obscurité, j'ai tenté plein de changements mais rien ne fonctionne
    Pouvez vous m'aider ?

    Merci d'avance

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    /*
    ex0100_mesure_temps_aide_photo_resistance
    Mesure du temps de passage d'un objet devant une photorésistance
    Le temps sera transmis à travers le port série.
    Mesure durant combien de microsecondes la photorésistance
    recoit une luminosité faible.
    L'utilisation de la lecture analogique est lente,
    elle prend environ 100 micro-secondes, donc la précision est limitée.
    Seul l'entrée analogique A0 est utilisée.
    La PIN 13 est utilisée pour indiquer que la mesure est en cours.
    Ce programme utilise la PIN 1 (tx) pour la communication série.
    Il utilise aussi la PIN 0 (rx) pour la lecture série "Serial.read()".
    */
     
    int nSensorValue = 0;    // Valeur lue sur le port analogique A0
    int nSensorValueOld = 0; // Dernière valeur lue sur le port analogique A0
    unsigned long lwTimeStart = 0; // Temps en micros secondes du départ de bouton appuyé
    unsigned long lwTimeStop = 0;  // Temps en micros secondes d'arret du bouton
     
    void setup() {
    //============
    // Initialise la PIN digital 13 comme OUTPUT
    pinMode(13, OUTPUT);
    digitalWrite(13, LOW);
    nSensorValueOld = analogRead(A0); // Lecture de la tension sur le port analogique A0
                                      // La tension varie entre 0 et 5 volts, correspondant
                                      // aux nombres     entre 0 et 1023.
    Serial.begin(115200);  // Initialise la communication série à une haute vitesse.
                           // La vitesse de 9600 bauds est souvent utilisée par défaut.
    } // setup
     
    void loop() {
    //===========
    nSensorValue = analogRead(A0); // Lecture de la tension sur le port analogique A0
                                   // La tension varie entre 0 et 5 volts, correspondant
                                   // aux nombres entre 0 et 1023.
     
    if ((nSensorValue < 500) & (nSensorValueOld > 500)) {
       // Début de la mesure de temps
       lwTimeStart = micros();
       nSensorValueOld = nSensorValue;  // < 500, donc une mesure est en cours
       digitalWrite(13, HIGH); // Allume la LED pour indiquer qu'une mesure est en cours
       }
     
    if ((nSensorValue > 550) & (nSensorValueOld < 500)) {
       // Fin de la mesure de temps
       lwTimeStop = micros();
       nSensorValueOld = nSensorValue; // > 500, donc une prochaine mesure peut etre faite
       digitalWrite(13, LOW); // Eteint la LED, ce qui indique la fin de mesure.
     
       // Affiche le temps
       Serial.println(lwTimeStop - lwTimeStart);
       }
    } // loop

  2. #2
    Membre Expert
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 017
    Par défaut
    Bonjour bot27210

    Citation Envoyé par bot27210 Voir le message
    Bonjour,

    Je cherche à modifier le script suivant qui calcul le temps de lumière
    Je souhaite calculer le temps d'obscurité, j'ai tenté plein de changements mais rien ne fonctionne
    Si je reprends le schéma de l'exercice ex0100_mesure_temps_aide_photo_resistance.ino, plus la lumière augmente, plus la valeur lue sur A0 augmente.
    La condition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	if ((nSensorValue < 500) & (nSensorValueOld > 500)) {
    "dit" si la lumière passe de > 500 (lumière) à < 500 (obscurité), on démarre le chronométrage et mémorise cette valeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    		lwTimeStart = micros();
    		nSensorValueOld = nSensorValue;  // < 500, donc une mesure est en cours
    Pour moi, ce programme chronomètre déjà l'obscurité.

    A+
    Cordialement
    jpbbricole

  3. #3
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 921
    Par défaut
    Et d’ailleurs le commentaire en début de code dit bien
    Mesure durant combien de microsecondes la photorésistance reçoit une luminosité faible.
    Cela dit le montage fait intervenir un pont diviseur de tension. Si vous avez inversé la place de la résistance avec celle de la photorésistante ça va varier dans le sens inverse

    Ou alors Souhaitez vous faire un cumul ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mesurer le temps d'appel à une fonction cuda
    Par ferhat.adel dans le forum CUDA
    Réponses: 2
    Dernier message: 14/01/2013, 14h02
  2. Mesurer le temps CPU sur une machine multicoeurs
    Par Aleph69 dans le forum Langage
    Réponses: 9
    Dernier message: 02/08/2010, 21h46
  3. Réponses: 3
    Dernier message: 13/06/2008, 11h55
  4. utiliser une table paradox en meme temps
    Par kalou26 dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/06/2006, 18h04
  5. [Stratégie] Mesurer le temps d'exécution d'une requête
    Par nice dans le forum Général Java
    Réponses: 5
    Dernier message: 29/01/2006, 17h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo