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 :

data bidirectionelle .


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Novembre 2002
    Messages
    815
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 815
    Par défaut data bidirectionelle .
    bonjour à tous,

    Quand je regarde des exemples de programme en Arduino, le Pinout des bits de data des port est configuré soit en entrées soit en sorties.
    Je souhaite savoir s'il est possible de changer la configuration d'une ou de plusieurs des broches d'un bus de data(Arduino, Mpc23017,...) en cours d’exécution ?
    Ou de déclaré des bits du bus de data en mode bidirectionnel ?.

    Le but étant d'avoir a un instant "T" une broche générant un état logique et ensuite cette même liaison devant lire un état logique. Cette demande et bien sur pour éviter trop de circuiterie externe pour faire cette fonction.

    Merci

  2. #2
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2004
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2004
    Messages : 539
    Par défaut
    Bonjour,
    je ne comprends pas trop ce que tu entends par " s'il est possible de changer la configuration d'une ou de plusieurs des broches d'un bus de data en cours d’exécution".

    Quand tu écris "pinMode(5, OUTPUT)" dans la fonction setup par exemple, tu changes bien la direction de la pin 5 d'entrée en sortie en cours d'exécution à un instant T.

    Ou de déclaré des bits du bus de data en mode bidirectionnel ?
    Non, c'est soit en entrée, soit en sortie.

  3. #3
    Membre éclairé

    Inscrit en
    Novembre 2002
    Messages
    815
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 815
    Par défaut
    Bonjour

    Je suis d'accord avec toi pour la définition des pins dans la routine de Setup.

    Mais je voulais juste savoir s'il était possible de faire des "pinMode(5, OUTPUT)" ou "pinMode(5, INPUT)" dans des routines qui sont dans le LOOP.

    merci

  4. #4
    Membre éprouvé
    Homme Profil pro
    Retraité de l'électronique analogique
    Inscrit en
    Avril 2021
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité de l'électronique analogique

    Informations forums :
    Inscription : Avril 2021
    Messages : 50
    Par défaut
    Bien sûr qu'à tout moment et à partir de n'importe quelle fonction tu peux changer le sens d'une E/S.
    La séparation setup() et loop() n'est là que pour apporter de la cohérence.
    • setup() : configuration de départ du programme, ne s'effectue qu'une fois. Il serait idiot de faire cette configuration dans loop() car elle serait recommencée en permanence.
    • loop() fonction volontairement placée dans une boucle infinie dont elle ne peut sortir.

    Préalable : un microcontrôleur n'a pas de système d'exploitation : si on ne fait rien une fois le code parcouru il s'arrête et pour le relancer il faut faire une RAZ.

    D'où la structure d'un squelette Wiring/Arduino :
    init(); //ne s'effectue qu'une fois, fonction ajoutée automatiquement par l'IDE pour la configuration du microcontrôleur "à la sauce Arduino"
    setup(); // ne s'effectue qu'une fois : configurations "utilisateur"
    While (1==1) { loop(); } // programme utilisateur

    Note : c'est un peu plus complexe -> voir le code exact dans les "entrailles" de l'IDE.

    Donc dès que la fonction loop() est finie le programme y re-entre.
    D'où l'utilité d'une fonction en dehors de la boucle infinie pour les opérations qui ne se font qu'une fois.

    Mais rien n'empêche à l'intérieur de loop() ou des fonctions appellées dans loop() de modifier les réglages effectué dans setup().
    N'importe quel réglage, y compris ceux effectué dans init() peut être modifié en cours de programme.

  5. #5
    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
    Bonjour,

    Le bidirectionnel n'existe pas en Arduino. Il serait sans plus pratique d'avoir une voie en entrée et une voie en sortie. Et je ne pense pas que cela demande plus de composants électroniques, au contraire.
    Si tu changes la configuration en cours de route il faut que l'électronique branchée sur la voie en question puisse également supporter ce changement. Et que se passe-t-il pendant cette période durant laquelle la voie change de configuration (au niveau impédance surtout, tensions, courants) ?

  6. #6
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 631
    Par défaut Est-ce que le bidirectionnel a un sens en Arduino ?
    Bonjour,

    I2C est un bus bidirectionnel (on n'évite cependant pas une seconde broche pour l'horloge). Les bus bidirectionnels sont généralement de type maître-esclave, ce dernier ne répondant que si il est interrogé. Cela simplifie la gestion des conflits inévitables si tout le monde peut parler en même temps. Mais cela interdit les signalisations par un esclave. Par exemple si un module doit surveiller une température, il n'a aucun moyen de communiquer une anomalie tant qu'il n'est pas interrogé.

    Il y a des bus bidirectionnels comme les bus CAN (pas Arduino mais possible avec ESP32 et peu de matériel supplémentaire) où les clients sont pratiquement à parité mais ils impliquent des gestions lourdes des collisions.

    Par ailleurs, les bus bidirectionnels sont mécaniquement en half-duplex (comme un talkie-walkie).

    Salutations

  7. #7
    Membre éprouvé
    Homme Profil pro
    Retraité de l'électronique analogique
    Inscrit en
    Avril 2021
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité de l'électronique analogique

    Informations forums :
    Inscription : Avril 2021
    Messages : 50
    Par défaut
    Citation Envoyé par Auteur Voir le message
    Bonjour,

    Le bidirectionnel n'existe pas en Arduino. ?
    C'est ma première contribution et je suis surpris de cette réaction.
    Déjà quel sens donne-t-on au terme bidirectionel ?
    Si c'est pouvoir mettre dans toutes les directions une E/S du microcontrôleur qui équipe une carte arduino la réponse est OUI.
    La question était "est-ce que je peux changer le sens au cours du programme" et la réponse est encore oui.

    Si c'est faire simultanément une transmission de A vers B et de B vers A, la réponse est Non.
    La transmission est faisable mais au prix d'une électronique externe et de toute façon nécessitera une entrée et une sortie de chaque côté.

    Quant à dire ce n'est pas possible parce qu'il y a les risques que tu as justement signalés je dis a titre personnel je ne m'autorise pas à le dire.
    Il faut bien sûr mettre en garde en signalant les risques mais on ne peut pas dire que ce n'est pas possible, c'est au demandeur qui aura été éclairé à prendre sa décision.
    Un exemple qui justifie mes propos : il existe une version du capteur à ultrason avec une pin commune pour le trigger et la réception des datas, le sens de cet pin doit être inversé dès l'envoi du signal de déclenchement de la mesure. La pin est bien employée dans un usage bidirectionel au sens des E/S des microcontroleurs et des divers expenseurs.
    Cest rendu possible parce le microntrôleur a des temps de réactions très largement inférieurs au temps que met le module ultrason pour faire la mesure avant d'envoyer le résultat.
    Chaque cas est particulier.

    Cordialement
    Bernard.

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

Discussions similaires

  1. Import data d'Excel ds 2 table lié par clé primaire
    Par lord_paco dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 10/05/2005, 09h31
  2. [SQL Server] Error converting data type varchar...
    Par Sir Tengu dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 13/06/2003, 10h46
  3. import de bd access 97 => sqlserveur : Data overf
    Par neo.51 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/03/2003, 15h17
  4. Query data set
    Par Sandra dans le forum JBuilder
    Réponses: 3
    Dernier message: 20/01/2003, 10h08
  5. [Pointer]Treeview.Data
    Par rbag dans le forum Composants VCL
    Réponses: 7
    Dernier message: 31/08/2002, 01h44

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