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

Bibliothèques tierces Python Discussion :

Module MCP230xx


Sujet :

Bibliothèques tierces Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2016
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mai 2016
    Messages : 87
    Par défaut Module MCP230xx
    Bonjour,

    J'utilise comme composant le MCP 23008. J'ai tenté d'installer la librairie comme indiqué dans le site: https://github.com/adafruit/Adafruit_Python_GPIO..

    En télechargant le fichier et en faisant sudo python setup.py install.

    Mais dés que je lance un exemple de programme (wiki), permettant la configuration et la mise à l'état bas ou haut des pin du GPIO, j'obtiens un message d'erreur.

    Quand j'importe le module par :
    • import Adafruit_GPIO.MCP230xx, j'ai comme message: "NameError: name 'Adafruit MCP230xx"


    • from Adafruit_MCP230xx import * , j'ai comme message erreur: "ImportError: No module named Adafruit_MCP230xx"


    Voici le code que je test:
    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
     
    #!/usr/bin/python
    # -*- encoding: utf8 -*-
    from Adafruit_MCP230xx import *
     
    # ***************************************************
    # Utiliser num_gpios=8 pour un MCP23008 
    # ou  num_gpios=16 pour un MCP23017!
    # ***************************************************
    # mcp = Adafruit_MCP230XX(address = 0x20, num_gpios = 8) # MCP23008
    mcp = Adafruit_MCP230XX(address = 0x20, num_gpios = 16) # MCP23017
     
    # Déclarer les broches 0, 1 et 2 comme sortie (vous pouvez faire de même pour les broches de 0 à 15)
    mcp.config(0, mcp.OUTPUT)
    mcp.config(1, mcp.OUTPUT)
    mcp.config(2, mcp.OUTPUT)
     
    # Déclarer la broche 3 comme entrée (input) et activer la résistance pullup
    mcp.config(3, mcp.INPUT)
    mcp.pullup(3, 1)
     
    # Lire l'état de la broche 3 et afficher le résultat
    print "Pin 3 = %d" % (mcp.input(3) >> 3)
     
    # Changer l'état de la broche 0 
    print "Clignoter la broche 0 (CTRL+C pour quitter)"
    while (True):
      mcp.output(0, 1) # Mettre la broche 0 à l'état HAUT/High
      time.sleep(1)
      mcp.output(0, 0) # Mettre la broche 0 à l'état BAS/Low
      time.sleep(1)
    Comment aboutir à une bonne installation de ce module?

    En vous remerciant.

    Cordialement.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Dans les exemples il est toujours question de from Adafruit_GPIO import quelque chose et pas ton Adafruit_MCP230xx

    Ce que tu peux faire pour tester ton installation c'est télécharger le dossier tests et essayer les divers scripts qui y sont.

    En plus tu auras ainsi des exemples d'usage de la lib.

  3. #3
    Membre confirmé
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2016
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mai 2016
    Messages : 87
    Par défaut
    Bonjour,

    J'ai télecharger le dossier test mais il ny avait aucun exemple pour le produit MCP23. Ensuite j'ai ouvert le fichier .py MCP23xx mais je n'ai pas trouver comment envoyer des infos sur le GPIO pour le configurer en mode sortie.


    J'ai continuer mes recherches et j'ai trouver ce site http://www.nathan.chantrell.net/2012...xpander-board/ qui propose un exemple de .py en exécutable puis ajout de paramétre: ./mcp23017.py -b a -o 0 -s high. Afin de pouvoir mettre la pin du GPio à l'état haut ou bas.

    Le probléme est que je ne sais pas comment l'appliquer dans un programme .py en génerale sans passer nécessairement par ce mode d'exécution : ./mcp23017.py -b a -o 0 -s high.

    Pourriez vous m'aider?


    En vous remerciant.

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    D'où tiens-tu ce "Adafruit_MCP230xx" ? Je suppose que tu as lu cette info quelque part.

    Ensuite, si ça existe, il faut peut-être remplacer les deux x par quelque chose.

    Sur le deuxième lien (nathan.chanterell) tu dis avoir trouvé un script python. Bien, mais plutôt que de le lancer comme exécutable importe-le dans ton code, éventuellement après hacking de circonstance.

    Malheureusement, pas moyen d'accéder à ce site.

  5. #5
    Membre confirmé
    Femme Profil pro
    Etudiante
    Inscrit en
    Mai 2016
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Etudiante

    Informations forums :
    Inscription : Mai 2016
    Messages : 87
    Par défaut
    Merci pour votre retour.

    Oui j'ai lu cette information dans un site pour la configuration de ce module... : http://arduino103.blogspot.fr/2014/0...erry-avec.html

    Je reposte le lien: https://nathan.chantrell.net/2012060...xpander-board/

    Quand je le lance en mode exécutable, je suis obligé d'indique ces paramétres: ./mcp23017.py -b a -o 0 -s high

    Mais comment appliquer de code sans passer par l'exe.

    importe-le dans ton code
    C'est à dire?

    En vous remerciant.

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    D'après ce que je vois, dans ton premier script c'est ceci que tu dois importer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    from Adafruit_GPIO.MCP230xx import MCP230xxBase
    J'ai regardé le deuxième lien.
    Ce que fait ce code est relativement simple et se résume à ceci:
    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
     
    bank = 0x12 ou 0x13
    output = ?
    state = "hight" ou "low" ou "read"
     
    import smbus
    bus = smbus.SMBus(1)
    address = 0x20 # I2C address of MCP23017 a adapter sans doute selon ton modèle
    bus.write_byte_data(0x20, 0x00, 0x00) # Set all of bank A to outputs 
    bus.write_byte_data(0x20, 0x01, 0x00) # Set all of bank B to outputs
     
    # On lit la valeur courante du registre
    value =  bus.read_byte_data(address, register)
    # ensuite on exécute 
    if state == "high":
        if (value >> output) & 1 :
            print "Output GP"+bank.upper()+str(output), "is already high."
        else:
            value += (1 << output)
            bus.write_byte_data(address, register, value)
    elif state == "low":
        if (value >> output) & 1 :
            value -= (1 << output)
            bus.write_byte_data(address, register, value)
        else:
            print "Output GP"+bank.upper()+str(output), "is already low."
    elif state == "read":
        if (value >> output) & 1 :
            print "high"
        else:
            print "low"
    Tu dois donc définir les trois données de départ bank, output et state.

    N'oublie pas que smbus doit être installé

    https://pypi.python.org/pypi/smbus-cffi/0.5.1

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

Discussions similaires

  1. Module FTP.pm ?
    Par MSP dans le forum Modules
    Réponses: 4
    Dernier message: 04/08/2003, 15h49
  2. module Find
    Par martijan dans le forum Modules
    Réponses: 8
    Dernier message: 09/07/2003, 11h07
  3. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44
  4. PerlDoc sur une fonction d'un module
    Par lesouriciergris dans le forum Modules
    Réponses: 2
    Dernier message: 13/03/2003, 20h50

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