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 :

Arduino Uno et Edupython. A0 A1..A5 retourne "None"


Sujet :

Arduino

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Developpeur
    Inscrit en
    Octobre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2019
    Messages : 5
    Par défaut Arduino Uno et Edupython. A0 A1..A5 retourne "None"
    Bonjour.

    Je demande votre aide. Je viens de recevoir ma carte ARDUINO Uno R3. La carte est connectée sur le port COM5 qui s'ajoute bien dans windows dès que je branche la carte.
    J'ai fait un petit montage très simple avec 2 resistances. J'utilise Python 3.7 (Edupython). La lecture sur le pin A0 renvoie systématiquement "None". Je ne mets pas le schéma ici car si je connecte directement le 5V ou le 3.5V ou le GND sur A0 la lecture retourne toujours "None". J'ai essayé les pin A1 A2...A5 et j'ai le même probème: La lecture renvoie "None". En revanche un petit programme qui fait clignoter la diode (13) fonctionne bien. Voici le prog avec lequel je tente de lire A0.
    Code PYTHON : 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
    # coding: utf-8
    import os
    from pyfirmata import Arduino, util
    import time
    import math
     
    carte = Arduino('COM5',baudrate=9600, timeout=1)
    acquisition = util.Iterator(carte)
    acquisition.start()
    tension_A0 = carte.get_pin('a:0:i')
     
    time.sleep(1.0)
    print("Début du test")
    for i in range(0,5):
     time.sleep(1)
     tensionA0 = tension_A0.read()
     print("tension", tensionA0)
    print("Fin du test")
    carte.exit()

    et le résultat ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    *** Console de processus distant Réinitialisée *** 
    Début du test
    tension None
    tension None
    tension None
    tension None
    tension None
    Fin du test
    >>>

    Avez vous une idée d'ou peut venir le problème, ce que j'ai fait comme bêtise?

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 155
    Billets dans le blog
    47
    Par défaut
    Salut,

    Dans la doc, ils évoquent une commande supplémentaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tension_A0.enable_reporting()
    Ce pyfirmata est quand même merd#@*..., préférez d'autres moyens de faire https://arduino.developpez.com/tutor...putationnelle/

  3. #3
    Expert confirmé

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

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 895
    Par défaut
    j'ai jamais utilisé cela mais en lisant un exemple sur internet, je tenterai

    Code Python : 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
    import pyfirmata
    import time
     
    port = 'COM5'
    board = pyfirmata.Arduino(port)
     
    tension_A0 = board.get_pin('a:0:i')
    iterator = pyfirmata.util.Iterator(board)
    iterator.start()
    tension_A0.enable_reporting()
     
    while tension_A0.read() == None: None
     
    try:
        while True:
            print ("Tension lue (entre 0 et 1) :",tension_A0.read())
            time.sleep(1)
    except:
        tension_A0.disable_reporting() 
        board.exit( )

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Developpeur
    Inscrit en
    Octobre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2019
    Messages : 5
    Par défaut Pas de changement après l'ajout de la commande
    Citation Envoyé par f-leb Voir le message
    Salut,

    Dans la doc, ils évoquent une commande supplémentaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tension_A0.enable_reporting()
    Ce pyfirmata est quand même merd#@*..., préférez d'autres moyens de faire https://arduino.developpez.com/tutor...putationnelle/

    Merci. L'ajout de la commande ne change rien. J'ai toujours "none" après lecture du pin A0.
    Cela peut-il être du à une déficience de la carte?
    Merci pour le lien.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Developpeur
    Inscrit en
    Octobre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2019
    Messages : 5
    Par défaut
    Citation Envoyé par Jay M Voir le message
    j'ai jamais utilisé cela mais en lisant un exemple sur internet, je tenterai

    Code Python : 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
    import pyfirmata
    import time
     
    port = 'COM5'
    board = pyfirmata.Arduino(port)
     
    tension_A0 = board.get_pin('a:0:i')
    iterator = pyfirmata.util.Iterator(board)
    iterator.start()
    tension_A0.enable_reporting()
     
    while tension_A0.read() == None: None
     
    try:
        while True:
            print ("Tension lue (entre 0 et 1) :",tension_A0.read())
            time.sleep(1)
    except:
        tension_A0.disable_reporting() 
        board.exit( )
    Merci. j'avais aussi trouvé cet exemple qui hélas ne fonctionne pas. Dois je commencer à douter de la carte?

  6. #6
    Expert confirmé

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

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 895
    Par défaut
    Citation Envoyé par cap2019 Voir le message
    Dois je commencer à douter de la carte?
    essayez plutôt la carte avec du C++

    téléchargez l'IDE arduino et dans les exemples de code prenez "Blink"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void setup() {
      pinMode(LED_BUILTIN, OUTPUT);
    }
     
    void loop() {
      digitalWrite(LED_BUILTIN, HIGH);
      delay(1000); 
      digitalWrite(LED_BUILTIN, LOW); 
      delay(1000); 
    }
    et téléchargez le dans la carte. ==> la LED interne devrait clignoter


    (je n'ai jamais utilisé pyfirmata mais je n'en ai pas entendu que du bien)

  7. #7
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Un petit script Python utilisant pySerial :
    https://www.developpez.net/forums/d1.../#post10900117

    Code python : 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
    import Serial
     
    ser = serial.Serial()
    ser.port='/dev/ttyACM0'    #port série Arduino
    ser.baudrate = 9600
    ser.bytesize = serial.EIGHTBITS 
    ser.parity = serial.PARITY_NONE
    ser.stopbits = serial.STOPBITS_ONE
    ser.timeout = 10
    ser.xonxoff = False     
    ser.rtscts = True     
    ser.dsrdtr = False
    ser.open()
    print('Ouverture du port serie')
     
    time.sleep(5)   # laisser le temps à l'arduino de s'initialiser
                    # +/- long selon la carte

    ne pas oublier le time.sleep(5) après la commande open() le temps que la carte s'initialise. La syntaxe utilisée pour la dénomination du port est une syntaxe linux.
    J'ai encore des doutes sur l'importance des flags DSR / DTR et RTS / CTS en fonction du type de carte (ou plutôt microcontrôleur) utilisée. J'ai eu récemment quelques surprises comme un problème de communication entre mon script et une carte Arduino Mega (officielle).

    Et bien sûr ne pas oublier l'appel à la fonction close() à la fin du script. ;-)

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Developpeur
    Inscrit en
    Octobre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tchèque Rep.

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2019
    Messages : 5
    Par défaut
    Citation Envoyé par Jay M Voir le message
    mais j'arrive à faire clignoter la led (13) en Python! Le problème n'est que sur les entrées A0.. A5

    Citation Envoyé par Auteur Voir le message
    Merci mais ça ne marche pas.

  9. #9
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 155
    Billets dans le blog
    47
    Par défaut
    Citation Envoyé par cap2019 Voir le message
    mais j'arrive à faire clignoter la led (13) en Python! Le problème n'est que sur les entrées A0.. A5
    Essaie alors avec l'exemple ReadAnalogVoltage.

Discussions similaires

  1. Bluetooth Module Pro et Arduino Uno
    Par benimut2012 dans le forum Arduino
    Réponses: 1
    Dernier message: 07/09/2016, 09h09
  2. Réponses: 6
    Dernier message: 30/08/2016, 14h07
  3. Recyclage de clavier d'ordi portable avec Arduino Uno
    Par jeremygosset dans le forum Arduino
    Réponses: 3
    Dernier message: 24/06/2016, 23h58
  4. arduino uno et xbee
    Par rakiii dans le forum Sécurité
    Réponses: 0
    Dernier message: 12/04/2015, 22h19
  5. Acquisition de signal Labview et Arduino uno
    Par zangetsum dans le forum LabVIEW
    Réponses: 2
    Dernier message: 25/03/2014, 13h13

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