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

Python Discussion :

[Micropython] Variable qui semble être toujours nulle


Sujet :

Python

  1. #1
    Membre éprouvé

    Homme Profil pro
    Technicien
    Inscrit en
    Août 2013
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 440
    Points : 1 192
    Points
    1 192
    Par défaut [Micropython] Variable qui semble être toujours nulle
    Bonjour,

    J'essaie de programmer ma microbit pour étudier la décharge d'un circuit RC.

    Mon code :
    Code : 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
    from microbit import *
    debut = 0
    tempsPrec = 0
    mesure = pin1
    alimentation = pin0
    saisie=""
    echantillonnage=0
    duree=0
     
    def reglages():
        echantillonnage = int(input("Saisir la période d'échantillonnage (en ms) : "))
        print(echantillonnage)
        #sleep(100)
        duree = int(input("Saisir la durée d'acquisition (en ms) : "))
        print(duree)
        sleep(100)
     
        input("Saisir S pour lancer l'acquisition : ")
     
        tempsPrec=0
        print("temps \t Uc")
        print("s \t V")
     
    def decharge():
        alimentation.write_digital(0)
     
     
     
    def charge():
        alimentation.write_digital(1)
        while mesure.read_analog() < 980:
            #print(mesure.read_analog())
            sleep(10)
     
    reglages()
    charge()
    decharge()
    debut=running_time()
     
    while running_time() - debut < duree:
        if running_time() - tempsPrec >= echantillonnage:
            tempsPrec = running_time()
            print(running_time() - debut, end="")
            print("\t", end="")
            print(mesure.read_analog() * 3.3 / 1023)
    L'erreur se situe à la ligne 40 : tout se passe comme si la duree enregistrée est nulle à chaque fois car j'obtiens une acquisition vide (juste les en-têtes). Par contre, si au lieu de mettre la variable duree, je mets la valeur que je saisis (par exemple 100), le programme fonctionne bien comme je souhaite qu'il le fasse (mesure toutes les echantillonnage millisecondes pendant la durée précisée).

    Je n'arrive pas à voir quelle est l'erreur dans mon programme.

    Merci
    [Nouveau] Envie de tracer des circuits électriques : essayez le package LaTeX CircuiTikZ

    Pour créer une belle table des matières sur LibreOffice - N'oubliez pas de consulter les FAQ en cas de question !

    Envie de se lancer dans l'aventure Arduino : allez faire un tour sur ce cours.


    Ma réponse vous a plu ? Un petit vote serait sympa

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 191
    Points : 4 632
    Points
    4 632
    Par défaut
    bonjour

    En fait duree, ligne 14 est une autre variable et locale à cette fonction

    Le plus propre est généralement que la fonction retourne la valeur (les fonctions pures)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def reglages():
        ...
        #  variable "duree" qui n'existe que dans cette fonction
        duree = int(input("Saisir la durée d'acquisition (en ms) : "))
        ...
        print("s \t V")
        return duree
     
     
    # on assigne à la variable globale duree, le retour de la fonction
    duree = reglages()
    ici, la variable "duree" dans la fonction reglages() est bien une autre variable que la globale et peut avoir ou non le même nom, cela ne change rien.

    Dans tes divers doc/tuto, tu as du voir passer les mots global, local est scope
    $moi= ( !== ) ? : ;

  3. #3
    Membre éprouvé

    Homme Profil pro
    Technicien
    Inscrit en
    Août 2013
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 440
    Points : 1 192
    Points
    1 192
    Par défaut
    Citation Envoyé par papajoker Voir le message

    En fait duree, ligne 14 est une autre variable et locale à cette fonction

    Le plus propre est généralement que la fonction retourne la valeur (les fonctions pures)
    Pourquoi est-ce que le problème ne vient qu'avec une des deux variables ?
    La variable echantillonnage devrait également faire pareil ?

    Merci pour ton retour en tout cas
    [Nouveau] Envie de tracer des circuits électriques : essayez le package LaTeX CircuiTikZ

    Pour créer une belle table des matières sur LibreOffice - N'oubliez pas de consulter les FAQ en cas de question !

    Envie de se lancer dans l'aventure Arduino : allez faire un tour sur ce cours.


    Ma réponse vous a plu ? Un petit vote serait sympa

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 885
    Points : 7 233
    Points
    7 233
    Par défaut
    Bonjour,

    Citation Envoyé par nlbmoi
    La variable echantillonnage devrait également faire pareil ?
    C'est le cas non ? Faîtes des tests et vérifiez cela en affichant leur valeur respective.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Membre éprouvé

    Homme Profil pro
    Technicien
    Inscrit en
    Août 2013
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2013
    Messages : 440
    Points : 1 192
    Points
    1 192
    Par défaut
    Oups, c'est moi qui me suis trompé !
    Effectivement, j'ai le même problème qui est bien résolu en associant un return à la fonction.

    Merci
    [Nouveau] Envie de tracer des circuits électriques : essayez le package LaTeX CircuiTikZ

    Pour créer une belle table des matières sur LibreOffice - N'oubliez pas de consulter les FAQ en cas de question !

    Envie de se lancer dans l'aventure Arduino : allez faire un tour sur ce cours.


    Ma réponse vous a plu ? Un petit vote serait sympa

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

Discussions similaires

  1. [PHP 7] opérateur null coalescent qui semble ne pas fonctionner
    Par laurentSc dans le forum Langage
    Réponses: 4
    Dernier message: 25/12/2019, 15h23
  2. Passage de variables entre deux JSP toujours égale à null ?
    Par sak_ura dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 03/11/2011, 09h22
  3. valeurs de variable qui ne s'affichent pas toujours
    Par crazylia dans le forum MySQL
    Réponses: 2
    Dernier message: 22/04/2010, 16h00
  4. variable qui se réinitialise toujours à zéro
    Par ordi_pentium dans le forum Qt
    Réponses: 6
    Dernier message: 22/04/2010, 12h32
  5. [Defi] Query SQL qui semble tres simple
    Par Wakko2k dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/04/2004, 10h01

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