LOCODUINO

Les entrées sorties de l’Arduino

.
Par : Dominique, Guillaume, Jean-Luc

DIFFICULTÉ :

Le nombre d’entrées-sorties est variable selon les cartes Arduino. Toutefois leurs principes de fonctionnement se retrouvent quasiment à l’identique. Cet article se veut une présentation générale des entrées-sorties et de leur usage.

Si la plupart des broches d’entrées/sorties disponibles à la périphérie des Arduino permettent d’émettre ou de recevoir une valeur numérique binaire (0 ou 1), elles offrent aussi des fonctions spécialisées et on peut, par programme, décider de la fonction allouée à une broche particulière.

Quelque soit la broche de l’Arduino, on ne peut y brancher une tension supérieure à la tension d’alimentation, c’est à dire 5V ou 3,3V selon le modèle, ni une tension inférieure à la masse, le 0V, sous peine de destruction d’au moins la broche concernée si ce n’est l’Arduino en entier. Quelques Arduino 3,3V, ou assimilés comme le Teensy, acceptent une tension jusqu’à 5V.

Passons en revue la nature des entrées-sorties d’un Arduino.

Les entrées-sorties numériques

Quasiment toutes les broches d’un Arduino peuvent être programmées en entrée ou sortie numérique (et non les deux en même temps). Par exemple, sur l’Arduino Uno, il s’agit d’une part des broches numérotées de 0 à 13 mais également des broches A0 à A5. Une broche programmée ainsi peut être :

  • une entrée. Le programme peut lire une tension présente sur cette broche en utilisant digitalRead(...). Comme cette tension est interprétée comme un chiffre binaire (0 ou 1), la datasheet du MCU de l’Arduino Uno garantit que toute tension inférieure à 0,3 x Vcc, Vcc étant égale à 5V, soit 1,5V sera comprise comme un 0 et que toute tension supérieure à 0,6 x Vcc, soit 3V, sera comprise comme un 1. Entre les deux, c’est flou. digitalRead(...) renverra de toutes façons un 0 ou un 1 mais de manière plus ou moins aléatoire et variable selon l’Arduino utilisé.
  • une sortie. Le programme peut écrire un chiffre binaire, au moyen de digitalWrite(...), chiffre qui dans le programme sont nommées HIGH pour le 1 et LOW pour le 0, qui sera traduit en une tension de 5V pour le 1 et de 0V pour le 0. Attention toutefois, cette tension peut respectivement être plus basse ou plus haute si le courant qui est tiré de la broche commence à être important.
Entrées-sorties numériques de l’Arduino Uno
Les broches numérotées de 0 à 13 sont les entrées sorties numériques. Certaines d’entre elles peuvent également être utilisées en sortie PWM (en rose), les broches 0 et 1 servent aussi à la communication série (en rouge). L’I2C en gris est en haut et non étiqueté sur la carte.

Il est préférable de ne pas dépasser une consommation de 20 mA sur une broche programmée en sortie et absolument nécessaire de ne pas dépasser 40 mA sous peine de risque la destruction de la sortie du MCU. Il s’agit aussi de ne pas dépasser au total 200 mA.

Les sorties numériques sont employées de nombreuses manières : alimentation d’une DEL pour un éclairage ou un témoin, commande d’un transistor, connexion à un afficheur LCD, etc.

Les entrées numériques permettent également de connecter de nombreuses choses : interrupteur, bouton poussoir, interrupteurs à lame souple REED mais aussi des capteurs de présence plus sophistiqués.

Les entrées analogiques

Les Arduino sont pourvus de 6, pour le Uno, à 16 entrées analogiques, pour le Mega. Ce sont les broches étiquetées A suivie d’un nombre. Les tensions, toujours entre 0 et 5V, présentes sur ces broches, peuvent être numérisées via un convertisseur analogique-numérique ou ADC (Analog Digital Converter). La fonction analogRead(...) remplit ce rôle.

Entrées analogiques de l’Arduino Uno
Ces broches peuvent également être utilisées comme entrées-sorties numériques.

Le convertisseur des Arduino à base d’AVR effectue une conversion sur 10 bits, c’est à dire qu’il convertit la tension en un nombre entier ayant une valeur de 0 à 1023.

0 correspond au 0V de la tension et 1023 au 5V. La résolution, c’est à dire la différence entre deux valeurs successives de la tension correspondant à une différence de 1 sur l’entier résultat, est donc d’environ 5mV.

Il est possible de changer la tension de référence de la conversion analogique-numérique, c’est à dire la tension comprise comme 1023. Le MCU des Arduino possède une référence de tension interne de 1,1V qui peut être sélectionné à la place de la tension d’alimentation. Cela permet une meilleure résolution, environ 1mV, sur les faibles valeurs de tension à convertir. Il est également possible de sélectionner la tension fournie sur la broche AREF comme tension de référence.

Plusieurs types de capteurs analogiques peuvent trouver place sur ces broches. On citera la mesure de courant traversant une résistance ou la mesure d’intensité lumineuse via une photo-résistance.

Les sorties PWM

Selon les Arduino, de 6, pour l’Arduino Uno, à 15 broches, pour l’Arduino Mega, peuvent être configurées en sortie PWM. La configuration est effective dès que le programme utilise la fonction analogWrite(...) [1] sur une des broches configurable en PWM. Le rapport cyclique de la PWM est réglé via cette même fonction entre 0, le signal est constamment à l’état bas, 0V, à 255, le signal est constamment à l’état haut, 3,3V ou 5V selon l’Arduino, soit un rapport cyclique de 100%.

La PWM trouve son emploi lorsqu’il s’agit de commander un moteur électrique à courant continu, comme celui qui équipe nos locomotive, ou une intensité lumineuse, par exemple dans une DEL. Si le courant nécessaire à une DEL est compatible avec ce que peut fournir une sortie PWM, il n’est est pas de même pour la commande d’un moteur. Dans ce dernier cas, il est nécessaire d’amplifier le signal via un transistor qui permettra également de passer des 3,3V ou 5V de l’Arduino aux 12V nécessaires pour nos engins.

La ligne série

Les 2 broches étiquetées TX et RX sont respectivement la ligne d’émission série (T pour Transmit, émettre) et la ligne de réception série (R pour receive, recevoir). Cette ligne est principalement employée pour dialoguer avec l’ordinateur hôte, votre Mac ou votre PC. Des fonctions permettent d’afficher des messages dans une fenêtre de l’ordinateur hôte et de lire le clavier de l’ordinateur hôte.

Elle est également employer pour dialoguer avec certains modules comme les modules radio XBee ou certains modules WiFi ou encore bluetooth.

Le bus I2C

l’I2C est l’un des bus de communication disponibles pour dialoguer soit avec un autre Arduino soit avec des circuits périphériques disposant de ce bus. 2 broches sont employées pour l’I2C, l’horloge et l’adresse/donnée. De nombreux circuits périphériques disposent d’une interface I2C. On peut citer les expanseurs d’entrées/sorties, circuits qui permettent d’ajouter des entrées/sorties numériques à l’Arduino et les générateurs de PWM qui permettent donc d’augmenter le nombre de PWM pilotables.

Le bus SPI

Enfin, le SPI est également un bus de communication destiné à dialoguer avec les circuits périphériques. À la différence de l’I2C, il est bidirectionnel. Il permet aussi un débit de communication plus important. 4 broches sont employées pour le SPI, l’horloge, les données en sortie, les données en entrée et la sélection du circuit avec lequel l’Arduino veut dialoguer. Il faudra autant de broches de sélection que de circuit branché sur le SPI [2].

Les broches d’alimentation

Elles ne font pas partie des entrées/sorties mais les voici pour que la visite soit complète :

  • IOREF. Cette broche est destinée à indiquer aux shields la tension de fonctionnement de l’Arduino. Sur un Arduino 5V, elle aura une tension de 5V et sur un 3,3V une tension de 3,3V
  • RESET. Cette broche permet de réinitialiser l’Arduino et donc de redémarrer le programme au début. Pour réinitialiser l’Arduino, il suffit de mettre cette broche à 0V puis de la repasser à 5V, ou 3,3V selon l’Arduino.
  • 3.3V. Un arduino Uno est équipé d’un régulateur 3,3V dont la sortie est connectée à cette broche. On peut s’en servir pour alimenter un circuit externe en 3,3V.
  • 5V. L’Arduino, si il fonctionne sous une tension de 5V, est équipé d’un régulateur 5V. La sortie de ce régulateur est connecté sur cette broche qui peut donc être employée pour alimenter des circuits externes en 5V. Si on désire construire sa propre alimentation 5V, on peut également fournir cette tension à l’Arduino via cette broche.
  • GND. La masse ou 0V
  • Vin. L’entrée du régulateur embarqué sur l’Arduino. On peut choisir d’alimenter l’Arduino via cette broche au lieu d’utiliser la prise d’alimentation.

Nous avons terminé ce rapide tour d’horizon.

[1Nom de fonction bien mal choisi, la grandeur présente sur la broche n’est pas du tout analogique

[2Sauf si on utilise un décodeur

89 Messages

  • Les entrées sorties de l’Arduino 28 juillet 2015 15:47, par Fred

    Bonjour,

    Le programme peut lire une tension présente sur cette broche en utilisant digitalRead(...). Comme cette tension est interprétée comme un chiffre binaire (0 ou 1), la datasheet du MCU de l’Arduino Uno garantit que toute tension inférieure à 1V sera comprise comme un 0 et que toute tension supérieure à 3,5V sera comprise comme un 1. Entre les deux, c’est flou.

    Comment résoudre ce problème ?
    Je travaille sur une MEGA 2560, j’ai un BP connecté sur ma broche 22 et j’aimerais allumer un led en fonction de l’état du BP.
    Le problème c’est que même avec un appui court, la led reste allumée environ 3s et enfin se coupe..

    Une idée ?!

    Répondre

    • Les entrées sorties de l’Arduino 28 juillet 2015 15:55, par Guillaume

      Un article sur le bouton poussoir va sortir pour expliquer les deux phénomènes.

      Le bp n’est pas à brancher tel quel sur l’arduino, il faut lui adjoindre une résistance pull-up ou down tel qu’expliqué ici http://locoduino.org/spip.php?article122
      Cela peut expliqué les 3s ou autre, un courant parasite est pris pour un appui.

      D’autre part, il faut éviter l’effet rebond, le courant ne passe pas directement de 0 à 5V ou vice versa. 2 solutions un condensateur ou un ajout dans le sketch comme on le retrouve ici : http://locoduino.org/spip.php?article64

      Merci de faire un retour

      Répondre

      • Les entrées sorties de l’Arduino 28 juillet 2015 16:15, par Fred

        Fantastique mon ami !
        Mon montage fonctionne à présent.
        Je me doutais qu’il y avait un courant résiduel mais pas la présence d’esprit de trouver la solution !

         ;)
        Merci
        Fred

        Répondre

    • Les entrées sorties de l’Arduino 20 janvier 2017 23:28, par cordier

      Bonjour

      votre problème vient surement de la manière dont vous avez déclaré l’entrée
      pimMode(2,INPUT) ;

      lorsque ce mode est actionnée, il est necessaire que votre bouton poussoir
      relie la broche au + si actionné et au - si relaché. avec un BP classique, vous ne contrôlez qu’un état (habituellement le + en étant actionné) et lorsque vous relachez le BP, la broche est dite "en l’air" et prend bien le potentiel qu’elle veut bien (l’impédance de l’entrée étant très grande, quelques electrons baladeurs suffisent à donner un potentiel pris pour un 1).

      Il faut utiliser le mode INPUT_PULLUP
      pinMode(2,INPUT_PULLUP) ;

      dans ce mode, un réseau interne de résistances (virtuel) est mis en place pour relier l’entrée à un + lorsqu’elle n’est pas connectée. Votre BP devra donc lui relier l’entrée à la masse lorsqu’il sera actionné. Attention votre logique est donc inversée : lorsque j’appui digitalRead(2) renvoi la valeur false et true lorsque je relache le bouton. Hors mis cette gymnastique intelectuelle nécessaire, ce mode fonctionne très bien et permet de corriger le problème rencontré.
      Il serait intéressant d’avoir un mode INPUT_PULLDOWN, mais celui ci n’est pas implémenté dans le micro-controleur AVR Peut être plus tard dans une nouvelle vie avec une évolution de notre joujou !

      Cordialement

      Répondre

  • Les entrées sorties de l’Arduino 13 novembre 2015 15:28, par PhB22

    Bonjour,
    Est-il possible d’utiliser les entrées analogiques avec un signal en tout ou rien ?
    Je m’explique, sur le UNO j’utilise 12 sorties numériques (commande de relais) et j’ai besoin de 4 entrées en plus.
    Je pensais mettre un contact (avec résistance pull-up et anti-rebond) sur chacune de ces 4 entrées analogiques.
    Réaliste ou pas ?
    Merci d’avance
    Philippe

    Répondre

    • Les entrées sorties de l’Arduino 13 novembre 2015 18:08, par Jean-Luc

      Bonjour,

      Les entrées analogiques du Uno, A0 à A5, peuvent être employées en entrée ou en sortie numérique. Il suffit d’écrire, par exemple pour A0 et A1 :

      pinMode(A0, OUTPUT);
      pinMode(A1, INPUT);

      Pour que A0 soit une sortie numérique et A1 une entrée numérique. Elles fonctionnent comme les autres entrées/sorties numériques.

      Sur un Nano, il y a deux entrées analogiques supplémentaires, A6 et A7 qui elles sont exclusivement des entrées analogiques.

      Répondre

      • Les entrées sorties de l’Arduino 13 novembre 2015 18:57, par Phb22

        Merci Jean-Luc,
        C’est clair.
        Et en prime j’ai une réponse à une question que j’allais poser :-)).
        En effet je viens de me poser la question du comment écrire les numéros pour les pins analogiques.
        Il suffit donc d’indiquer le A suivi du numéro.
        Encore merci.
        Philippe

        Répondre

      • Les entrées sorties de l’Arduino 12 juin 2022 19:04, par Laurent

        Merci pour le truc de A6 et A7 exclusivement en entrée analogique. Je buchais dessus mais je comprenais pas pourquoi en numerique il ne me retournais pas la bonne valeur. Merci :-)

        Répondre

  • Les entrées sorties de l’Arduino 20 octobre 2016 12:16, par Ange ILARDO

    Peut-on avoir par exemple : A0 paramétré en entrée analogique, et A5 en sortie numérique simultanément, je ne trouve pas d’explication sur ce cas de figure.
    Es ce que A0 à A5 doivent être tous déclarées analogiques ou numériques ?

    Merci de vos réponses.

    Ange

    Répondre

    • Les entrées sorties de l’Arduino 22 septembre 2021 02:35, par Degdougui amine

      Bonjour,

      Je suis en train d’utiliser un arduino mega et pour cela je veux savoir si tous les pins analogiques peuvent être utilisés en entrées et sorties analogique.

      Répondre

      • Les entrées sorties de l’Arduino 22 septembre 2021 10:01, par msport

        Bonjour,

        non :

        Arduino Mega 2560 has 16 analog inputs

        Arduino Mega 2560 has 15 pins which can be used for PWM output.
        Board PWM Pins PWM Frequency
        Mega 2 - 13, 44 - 46 490 Hz (pins 4 and 13 : 980 Hz)

        Voir en ligne : Pinout-Mega2560

        Répondre

        • Les entrées sorties de l’Arduino 22 septembre 2021 19:38, par Degdougui amine

          Bonjour,

          D’abord je vous remercie pour votre réponse, ma question posée était erroné et
          je rectife ; est ce que on peut utiliser tous les pins analogique de la carte mega en entrées et sorties numériques ??

          Répondre

  • Les entrées sorties de l’Arduino 20 octobre 2016 22:28, par Dominique

    OUI, on peut utiliser A0 en entrée analogique et A5 en sortie numérique simultanément. Les pins analogiques peuvent être utilisées comme des pins digitales tel que l’explique la réponse de Jean-Luc quelques centimètres plus haut et le site Arduino.cc dans ses pages tutorial :

    The analog pins can be used identically to the digital pins, using the aliases A0 (for analog input 0), A1, etc.
    Dans votre cas nous aurons :

    pinMode(A0, INPUT);
    pinMode(A5, OUTPUT);
    digitalWrite(A5, HIGH);

    Pour conclure, on peut utiliser les pins analogiques indifféremment en analogique (entrée de mesure de tension seulement) ou en numérique (entrée et/ou sortie LOW ou HIGH).

    La fin de l’article cité donne aussi quelques précautions à prendre dans les cas de changements de mode des pins du mode digital vers le mode analogique :
    The analogRead command will not work correctly if a pin has been previously set to an output, so if this is the case, set it back to an input before using analogRead. Similarly if the pin has been set to HIGH as an output, the pullup resistor will be set, when switched back to an input.

    The Atmega datasheet also cautions against switching analog pins in close temporal proximity to making A/D readings (analogRead) on other analog pins. This can cause electrical noise and introduce jitter in the analog system. It may be desirable, after manipulating analog pins (in digital mode), to add a short delay before using analogRead() to read other analog pins.

    Répondre

  • gestion 19 voies de depot par mega 2560 11 novembre 2016 14:39, par guytou

    je ne connais pas grand chose a la programmation, même rien, voila ce que j’aimerai faire pour mon petit train ho, que le méga recherche une voie de garage libre sur 19,pour fermer un relais de sortie , et le maintenir fermer , arrête la recherche de voie libre jusqu’au démarrage d’une autre recherche, démarrage par un ils pour la recherche suivante etc pour 19 voie qui serais connecter aux sorties mega relais N° 22 a N° 40 de l’arguino mega est ce possible ? pourriez vous m’écrire quelque ligne de programmation pour pouvoir faire fonctionner cela ? sachant qu’il y aura des fin de course et un ils de démarrage du programme, suis éventuellement a votre disposition pour toute info car suis peut etre pas tres claire merci d’avance

    Répondre

  • Les entrées sorties de l’Arduino 11 novembre 2016 16:48, par Dominique

    Bonjour,

    Ce n’est pas le bon endroit pour poser cette question qui n’a d’ailleurs qu’un lointain rapport avec l’article (tous les projets se servent des entrées sorties de l’Arduino).

    Je vous invite à le reformuler sur le Forum Locoduino en créant un nouveau sujet dans la rubrique "Vos projets" et surtout en donnant tous les détails sur votre projet : tous les éléments, voies, aiguilles, butoirs, découpe des zones, capteurs, types, positions, etc.. Et ce que vous souhaitez exactement. C’est un cahier des charges !

    Il y a plus de chance, de cette façon, qu’un modéliste vous réponde.

    bon courage

    Répondre

    • Les entrées sorties de l’Arduino 11 novembre 2016 20:21, par guytou

      desolé de vous avoir deranger , merci d’avoir repondu quand meme les aiguillages et d’autre truc ne serons pas commander par l’arguino seulement la recherche des voie libre le reste seras fait par electro, c’est mon metier cela mais la programmation suis nul j’aurai bien aimer apprendre un peu bonne continuation a vous

      Répondre

  • Les entrées sorties de l’Arduino 13 mars 2017 09:07, par De Neef

    Bonjour,

    j’ai un petit projet de train électrique avec signalisations commandées par un Arduino Uno.

    Pour la signalisation, j’aimerais savoir comment programmer le fait que si un relais n’est pas alimenté (LOW), la led rouge s’éclaire et que si par contre le relais est alimenté (High) la led verte s’éclaire. J’ai essayé avec la fonction if, mais je n’arrive pas.

    Merci donc de pouvoir m’aider à ce sujet

    Répondre

  • Les entrées sorties de l’Arduino 13 mars 2017 09:22, par Dominique

    Bonjour,

    Quel est le schéma de votre installation ? Sinon, si vous affectez une pin pour chaque relai et une autre pour chaque Led, alors vous pouvez faire ce que vous voulez. Pourquoi ne pas essayer ?

    Utilisez une variable booléenne pour décrire l’état du relai. Ensuite allumez les leds en fonction de l’état de cette variable :

    • vrai : rouge allumée et verte éteinte
    • faux : rouge éteinte et verte allumer

    On ne va pas écrire pour vous un programme aussi simple !

    Répondre

    • Les entrées sorties de l’Arduino 15 octobre 2019 03:11, par Allizey

      Sinon, brocher les leds sur le contacteur du relais (avec résistances).
      Avec trois transistors et quelques résistances, les leds verte et rouge agirons en fonction du relais, et ce, sans prendre de broche en plus sur l’arduino.

      Une autre solution est d’opter pour des led RGB ws2812 (RGB adressable), et de faire une fonction qui permet d’assigner une led par relais, et d’intégrer la fonction qui controle les led dans la fonction qui controle les relais (On peut mettre autemps de leds ws2812 sur une seule broche digital de l’arduino, cependant, cela demande un peut de temps de les comprendres, de plus, il est conseiller de les alimenter avec une alimentation 5V exterieur à l’arduino pour éviter la surcharge du régulateur de tension)

      Répondre

  • Les entrées sorties de l’Arduino 27 mai 2017 11:37, par musneb

    bonjour j’ai un projet sur les capteurs à remettre la semaine prochaine alors j’ai 5 capteurs differents capteur de température et d’humidité,capteur de poussiére,capteur de préssion, capteur de gaz et une caméra. je voudrais savoir si je pourrais les controler avec une carte arduino uno et un ordinateur et si c’est possible comment pourrais je faire
    ps:je suis débutant merci

    Répondre

    • Les entrées sorties de l’Arduino 27 mai 2017 17:13, par Dominique

      Pas de chance ! les ingrédients de votre projet n’ont rien à voir avec le modélisme ferroviaire. Passez votre chemin !
      Mais la réponse est OUI probablement : ça dépend des capteurs.
      Rien ne vous empêche d’étudier la section "Pour débuter" si vous êtes débutant.
      Bon courage

      Répondre

  • Les sorties arduino 31 juillet 2017 11:20, par Akram

    Bonjour,

    Merci pour ces informations, mais je souhaite savoir s’il est possible d’envoyer des courants de différents ampérages (exemple 5 mA, 7 mA, 10 mA...) avec des cycles différents d’enclenchement et d’arrêt sur des sorties différentes ? Mon objectif est de simuler des TI reliés à des appareils plus puissants.
    Si oui comment écrire la commande ?

    Répondre

  • Les entrées sorties de l’Arduino 31 juillet 2017 13:43, par Dominique

    Bonjour, qu’entendez-vous par « simuler des TI reliés à des appareils plus puissants ».
    Je ne vois pas le rapport avec le modélisme ferroviaire. Votre question relève de l’électronique.

    Chaque sortie de l’Arduino peut délivrer au maximum 20mA (voir les articles et la fiche caractéristique du micro-contrôleur utilisé) avec une limitation globale à ne pas dépasser.

    En cas de besoin, des circuits exterieurs peuvent fournir les courants dont vous avez besoin si ceux de l’Arduino ne suffisent pas. Parcourez le site pour en savoir plus SVP.

    Répondre

  • Les entrées sorties de l’Arduino 31 janvier 2018 23:21, par benouis

    est ce que si possible de commandé d’un interrupteur aérien de 30 kva par UNO car j’ai un coffret qui comporte carte d’alim 12 v +carte de communication protocole 101 ;TCP-IP et comment je puisse realiser le montage +config je suis débutant .
    MERCI POUR TOUS

    Répondre

  • Les entrées sorties de l’Arduino 1er février 2018 09:28, par Jean-Luc

    30kva ! Ce n’est certainement pas du modélisme ferroviaire. En théorie tout est possible. Mais je ne peux pas répondre à cette question qui dépasse mes compétences. Quant à attaquer ce genre de projet quand on est débutant....

    Répondre

  • Les entrées sorties de l’Arduino 1er février 2018 13:40, par achrf azzez

    Si je déclare tous les entres/sortie de l arduino comme des sorties.. est ce que je peux les mettre ensemble en un état logique 1 ?

    Répondre

  • Les entrées sorties de l’Arduino 17 mars 2018 13:14, par Rudboy1234

    Bonjour,
    j’ai branché un moteur cc sur mon arduino uno. Démarrage avec bouton poussoir et arrêt avec ce même bouton.
    Je fais démarrer mon moteur à l’aide d’un IRF520 actionné par la pin A4 (pinMode(A4, output) ;. Et pour pouvoir faire varier la vitesse de mon moteur, je l’ai branché sur la pin PWM 9.
    Et lorsque je démarre le moteur ma tension de sortie est de 2.41V (entre la masse et la pin9).
    Pour le moteur, je fais la fonction (analogWrite(9, 255) ;).
    Qu’est-ce qui pourrait occasionner une baisse de tension sur cette sortie. Car toutes les autres sorties sont à 5V ?
    Cdlt

    Répondre

  • Les entrées sorties de l’Arduino 17 mars 2018 13:32, par Dominique

    Le moteur est-il branché directement sur l’arduino ?
    Quelles sont ses caractéristiques ?
    Quel est votre schéma ?
    Est-ce un projet de modélisme ferroviaire ?

    Si vous ne répondez pas après 48 h, ce message sera effacé.

    Répondre

  • Sortie analogique inutilisées mises à la masse 26 août 2018 10:33, par jean marc

    Bonjour, est il possible de mettre au gnd les sorties analogiques inutilisées ? J’ai un ecran LCD qui, lorsqu’un relais 5v/220v bascule, affiche n’importe quoi. Je pensais que les sorties analogiques se comportent comme des antennes et capte de l’impédance. Merci pour votre aide. Jean marc

    Répondre

  • Les entrées sorties de l’Arduino 26 août 2018 11:15, par dominique

    Normalement les entrées analogiques non initialisées par le programme ne peuvent pas perturber celui-ci.
    Neanmoins ça ne coûte rien de connecter les entrées non utilisées à la masse. Mais je doute que ce soit le bon remède.
    Si c’est votre cas il faut probablement vous occuper des parasites par exemple en utilisant des relais avec optocoupleurs.

    Répondre

  • Les entrées sorties de l’Arduino 24 février 2019 14:04, par PECOURT Jean-Louis

    Bonjour,
    Quelques petites questions (de débutant..)à la suite de la lecture de cet article.
    1°) Le bus SPI ? je n’ai pas vu de broches qualifié de SPI sur mon UNO. Ce bus est-il sur tous les arduino ou seulement quelques-uns ? Ou bien utilise-t-il d’autres sorties du UNO ?
    2°) Sur la partie broches alim :
    a - une broche de sortie 5VDC peut également servir d’entrée à une alim extérieure de 5 VDC ? Autrement dit on relie 2 sorties en face à face ? N’est ce pas un peu risqué pour le régulateur Arduino ?
    b - Vin est relié au régulateur de l’arduino. Est-ce-que cela correspond (est relié) à la prise jacq ? Si non, que se passe-t-il si dans un moment de distraction, l’arduino se trouve alimenté par le jacq et la prise Vin ?
    c- Et sur cette entrée, peut-on monter la Vin à 12VDC comme par le jacq ou faut-il se limiter à 5 VDC ?

    Cordialement (et à bientôt pour de nouvelles questions.... :-)))

    Répondre

    • Les entrées sorties de l’Arduino 24 février 2019 14:44, par Jean-Luc

      Bonjour.

      1) Tous les Arduino ont un bus SPI. Les broches correspondantes pour le Uno se trouvent dans la doc.
      2a) Oui mais je déconseille car il n’y a pas de protection vis-à-vis d’une double alimentation avec l’USB sauf si vous attaquez le 5V via une diode Schottky. Le régulateur est protégé d’un courant inverse par une diode Schottky.
      2b) Vin = prise jack.
      2c) On est entrée du régulateur, don on peut monter à ce que supporte le régulateur (12V typiquement).

      Répondre

  • Les entrées sorties de l’Arduino 26 février 2019 20:13, par Gérard LAndron

    Bonsoir,

    digitalRead() est-il utilisable sur les sorties ?

    Mon but est d’empêcher une action si la sortie est déjà haute.

    un Serial.print(digitalRead(pin)) me donne bien 1 mais un if basé sur cette valeur ne marche pas et dans les doc on ne parle pas de digitalRead(pin) sur les sorties…

    Merci
    Gérard

    Répondre

    • Les entrées sorties de l’Arduino 26 février 2019 21:21, par Dominique

      Votre question n’est pas banale : si une pin est programmée en sortie, c’est votre programme qui la commande et qui connaît donc son état.
      Donc il n’est pas besoin de lire une sortie, il suffit de lire la variable associée à cette sortie.

      Répondre

      • Les entrées sorties de l’Arduino 26 février 2019 22:01, par msport

        Gérard a peut être ses raisons qu’il pourra nous expliquer ...

        A priori, la solution est donnée là :
        https://stackoverflow.com/questions...

        Répondre

      • Les entrées sorties de l’Arduino 27 février 2019 10:35, par Gérard LAndron

        Bonjour,

        tout d’abord je ne suis ni un pro d’arduino ni de programmation.

        Quand on fait digitalWrite(10, HIGH) ; je ne vois pas de variable lisible sur cette pin10.

        Le problème :

        J’ai mis en place une gestion de sonnerie de cloche (3 cloches) liées aux heures et jours de l’année. Une cloche peut être utilisée en volée ou en tintement mais on ne doit pas l’utiliser en tintement tant que la volée n’est pas finie et la cloche arrêtée.

        Pour la cloche arrêté, cela ne peut être géré par arduino car il suffit de réinitialisé la carte pour supprimer les 5mn de pause. (La carte arduino est piloté par un raspberry via l’usb (phpserial) ce qui veut dire réinitialisation à chaque commande.) Ce contrôle d’arrêt est géré par un monostable déclenché par le passage de HIGH à LOW de la broche qui met à HIGH une broche d’entrée d’arduino. digitalRead() marche bien pour ce cas.

        il reste le cas d’une volée sur une cloche et tintement sur une autre qui ne pose pas de problème mais comme la commande du tintement est sur bouton poussoir, je veux contrôler qu’on n’appuie pas sur la cloche en volée par erreur.

        Désolé d’avoir été aussi long.

        je vais refaire des tests avec digitalRead() car cela me renvoi bien 1 ou 0 mais n’est pas pris en compte par mon test. Le problème est peut-être ailleurs.

        Merci

        Gérard

        Répondre

        • Les entrées sorties de l’Arduino 27 février 2019 11:00, par Dominique

          Quand vous dites « Quand on fait digitalWrite(10, HIGH) ; je ne vois pas de variable lisible sur cette pin10 » je vous répond qu’il suffit d’en créer une pour l’etat de la pin 10 et de l’utiliser à la place de HIGH dans digitalWwrite.

          Répondre

          • Les entrées sorties de l’Arduino 27 février 2019 17:34, par Gérard LAndron

            de fait mais j’aimerais éviter car pas très facile à mettre en place dans mon code(pour mon niveau) ou les pins sont dans des tableaux et pourquoi ajouter une variable si on peut lire l’état réel.

            J’ai refait quelques tests sur un code simplifié et apparemment cela devrait marcher avec le digitalRead(), ce que laissait entendre le lien donné par Guillaume.

            Je lui avais fait une réponse mais visiblement elle n’est pas passée.

            Merci beaucoup

            Gérard

            Répondre

          • Les entrées sorties de l’Arduino 27 février 2019 17:38, par Gérard LAndron

            bonsoir,

            merci pour votre réponse. C’est la deuxième fois que je fais un long message qui ne passe pas.

            Y a-t-il un timeout sur la rédaction ?

            Pas le courage de reprendre. Pour résumer digitalRead() devrait marcher. Mon problème est ailleurs. J’avais aussi fait une grande réponse à Guillaume mais elle n’est pas passée.

            À bientôt si je rencontre un autre problème.

            Merci

            Gérard

            Répondre

            • Les entrées sorties de l’Arduino 15 octobre 2019 03:22, par Allizey

              Et sinon, pourquoi ne pas utiliser une (ou plusieurs) broches de l’arduino pour contrôler l’état des cloches ?
              Avec des opto-coupleurs et un pond diviseur fait correctement, une seule broche analogique suffit^^

              Répondre

    • Les entrées sorties de l’Arduino 27 février 2019 19:34, par Jean-Luc

      Bonjour,

      Il est anormal que la lecture de la pin vous donne une valeur de 1 mais que le if basé sur cette valeur ne fonctionne pas. C’est pas de la magie, un 1 est un 1, qui vienne d’une broche ou d’ailleurs.

      En l’occurrence, digitalRead() sur une broche programmée en sortie vous retourne bien la valeur écrite précédemment.

      Répondre

  • Les entrées sorties de l’Arduino 29 mars 2019 22:58, par Dominique

    Bonjour, merci pour ce tuto détaillé.
    mais je me pose une question car je rencontre un problème : une entrée numérique peut-elle être pilotée par une sortie en 3.3V ?
    Merci pour votre réponse.

    Répondre

    • Les entrées sorties de l’Arduino 29 mars 2019 23:00, par Dominique

      Bon en fait, en relisant, j’ai toute la réponse dans le début de la description des entrées numériques...
      Désolé, j’ai lu un peu vite.
      Merci encore en tous cas pour ces explications très détaillées.
      Dominique

      Répondre

    • Les entrées sorties de l’Arduino 29 mars 2019 23:03, par Dominique

      Mais du coup, peut-on mettre des pullups de 10K par exemple pour remonter le niveau ?
      ou bien faut-il passer absolument par un étage de conversion 3.3V -> 5V ?

      Répondre

      • Les entrées sorties de l’Arduino 30 mars 2019 10:55, par Jean-Luc

        Du coup j’ai vérifié les chiffres qui étaient dans l’article et il s’avère qu’il y avait une erreur que j’ai corrigée. Le niveau logique bas correspond à une tension inférieure à 1,5V et le haut à une tension supérieure à 3V (et non 1V et 3,5V comme c’était indiqué de manière erronée). Par conséquent un périphérique en 3,3V fournit une tension de niveau logique 1 compatible avec ce qu’attend le Uno.

        Répondre

  • Les entrées sorties de l’Arduino 28 avril 2019 11:57, par léa

    dans la fonction SETUP on initialise la broche 13 comme :
    entrée
    sortie
    merci de répondre a ma question
    léa

    Répondre

  • Les entrées sorties de l’Arduino 28 avril 2019 12:01, par léa

    svp je ne comprends pas

    Répondre

  • Les entrées sorties de l’Arduino 28 avril 2019 22:15, par msport

    Dans la fonction SETUP on initialise la broche 13 comme ce qu’on veut : en entrée ou en sortie. La led en reflètera l’état.
    Quote :
    Les entrées-sorties numériques

    Quasiment toutes les broches d’un Arduino peuvent être programmées en entrée ou sortie numérique (et non les deux en même temps). Par exemple, sur l’Arduino Uno, il s’agit d’une part des broches numérotées de 0 à 13 mais également des broches A0 à A5.

    Répondre

  • Les entrées sorties de l’Arduino 3 mai 2019 09:47, par arthur

    bonjour ! avec mes amis on fabrique un préamplificateur piezo et nous avons besoin de la valeur de l’impédance de l’entrée analogique pour réaliser une simulation avant de monter mais impossible de trouver cette valeur nulle part... quelqu’un pour nous éclairer ? merci d’avance Arthur

    Répondre

  • Les entrées sorties de l’Arduino 23 mai 2019 19:18, par Fabrice

    Bonjour,
    Je cherche une explication a un phénomène observé sur le montage que j’ai réalisé pour le comptage de contacts sur un flipper électromécanique. On est un peu loin des trains mais le phénomène est intéressant et concerne les entrées et sorties de l’arduino UNO.
    J’ai donc observé que mon programme ne se comporte pas de la même façon lorsque j’utilise l’une ou l’autre des entrées numériques. Lorsque j’utilise la broche 8 je n’ai pas de problèmes, le comptage correspond bien au nombre de touches sur le flipper (switch 5v ajouté sur le relais d’un bumper pour l’exemple).
    En revanche lorsque je branche la même configuration sur la broche 9( ) le comptage s’intensifie. Il devient sensible à l’activation des autres relais du flipper. Si bien qu’il compte quasiment tout ce qui s’active.
    J’en suis venu à la conclusion que les broches MLI étaient plus sensibles aux perturbations électromagnétique des bobines du flipper mais je ne m’explique pas qu’elles arrivent à produire un état HIGH.
    Est-il possible que ces entrées MLI soient sensibles à une intensité de 5/1024 V. Si oui comment désactiver ce phénomène ou comment programmer ces broches pour pouvoir les utiliser en entrées.
    Je vous remercie par avance de l’intérêt que vous porterez à cette demande.

    Répondre

  • Les entrées sorties de l’Arduino 23 mai 2019 22:03, par msport

    Bonsoir,
    j’imagine qu’un flipper avec tous ces électro-aimants doit être un environnement perturbé.
    J’ai aussi constaté que les entrées pouvaient aussi avoir des sensibilités différentes aux parasites sans l’associer au PWM.
    Mais de base, il faut éliminer les rebondissements (bounce)
    soit physiquement : un filtre RC sur l’entrée
    soit logiquement - quelques lignes de votre cru ou en utilisant la bibliothèque (bounce2 actuellement)
    Vous pouvez voir ce qui s’est déjà échangé sur le forum avec ce mot-clé dans la recherche.
    Bonne chasse aux parasites !

    Répondre

  • Les entrées sorties de l’Arduino 28 mai 2019 15:52, par Gilles

    Bonjour,
    J’ai connecté une carte SIM800L a mon Arduino Uno. L’alimentation du module SIM se fait via le 5V de l’Arduino. Mais j’ai l’impression que le module se met en veille pour une raison que je ne m’explique pas. Mon idée est la suivante : puis-je alimenter le module depuis une broche numérique et, par programmation, le "réveiller" par des instructions digitalwrite, LOW puis HIGH ?
    Merci d’avance

    Répondre

    • Les entrées sorties de l’Arduino 29 mai 2019 09:04, par Dominique

      Il ne semble pas que votre projet soit en rapport avec le modélisme ferroviaire. Mais vous trouverez de nombreux sites sur le web traitant ce sujet en faisant une recherche simple.

      La consommation d’un module GSM excède probablement les limites de l’alimentation 5v de l’Arduino. Alors celle d’une pin, limitée à 40 mA maxi, forcément !

      Répondre

  • Les entrées sorties de l’Arduino 12 décembre 2019 23:11, par Gérard

    Bonjour,
    J’utilise un esp32-cam alimenté par des accus pour être indépendant du secteur électrique.
    Je souhaiterais pouvoir contrôler sur mon navigateur (Web serveur) la tension des accus qui entrent sur la broche 5volt.
    Je ne sais pas si c’est possible de surveiller cette tension sur cette broche par programmation et en permanence.
    Je voudrais faire des essais, mais je ne sais pas comment nommer cette broche 5volt, pin GPIO0,ou 1,2,3, ou etc ?
    Mais cette broche est elle une broche analogique ?
    Quel nom porte elle ?
    Merci de me diriger s’il vous plaît, je suis assez novice...

    Répondre

  • Les entrées sorties de l’Arduino 12 décembre 2019 23:37, par msport

    J’ai eu le même problème avec un Arduino et j’ai utilisé un pont diviseur (résistances) sur une entrée analogique que je lis dans le programme.

    Répondre

  • Les entrées sorties de l’Arduino 13 décembre 2019 01:24, par trimarco232

    Bonjour,
    j’ai regardé le schéma de l’esp32_cam
    le module n’est pas spécialement fait pour être utilisé avec une batterie
    il faut donc procéder comme msport le préconise
    le pont diviseur sera calculé en fonction de la tension max pouvant se trouver sur l’entrée 5v, et de manière à ce que la tension en sortie ne dépasse pas 3v3
    la sortie du pont sera raccordée à un entrée adc libre de l’esp

    Répondre

    • Les entrées sorties de l’Arduino 13 décembre 2019 09:30, par Gérard

      Bonjour et merci msport et trimarco232
      1) Si j’ai bien compris, il faut que je trouve une entrée adc, au fait c’est quoi adc, c’est une entrée analogique, c’est ça ?

      2) J’ai commandé CECI pour abaisser la tension à 5v, car mes batteries font 2 X 3.6v soit 7.2v, ça n’a peut être rien à voir, vous pouvez me le dire svp ?

      3) Il n’y a pas beaucoup de broche libre sur l’ESP32-CAM, avez vous une idée celle que je pourrais me servir pour lire la tension sur mon programme et surtout comment faire ce programme et le branchement ?

      4) msport, s’il te plait, tu pourrais me dire comment tu as fait pour le branchement physique ET aussi pour lire la tension avec ton programme, un exemple me serait très utile, je n’y connais pas grand chose...

      5) Mais aussi comment s’appelle la broche d’alimentation 5v ?
      Merci d’avance

      Répondre

      • Les entrées sorties de l’Arduino 13 décembre 2019 11:53, par msport

        Bonjour,
        ma fibre pédagogique est assez ténue, d’autant qu’il y a d’excellents tutos sur Internet et d’encore meilleurs sur Locoduino. Pour ne pas tarir les bonnes volontés, merci de faire les quelques recherches nécessaires.
        https://www.arduino.cc/reference/fr...
        Un pont diviseur à deux résistances fonctionne comme un potentiomètre en fixe.
        Cordialement

        Répondre

      • Les entrées sorties de l’Arduino 13 décembre 2019 12:53, par trimarco232

        quelle est la finalité du montage ?

        Répondre

        • Les entrées sorties de l’Arduino 13 décembre 2019 13:28, par Gérard

          Simplement pouvoir suivre l’état de mes batteries sur mon smartphone par l’intermédiaire d’un web serveur, de manière à prévoir un rechargement éventuel de ces batteries.
          c’est pour cela que je cherche désespérément si il existe une broche analogique disponible sur l’esp32-cam.
          Malgré mes recherches je n’en vois pas, c’est pour cela que je me permet de vous déranger, en jetant une bouteille à la mer en espérant avoir le renseignement que je n’arrive pas à trouver...
          Merci quand même

          Répondre

  • Les entrées sorties de l’Arduino 13 décembre 2019 13:16, par Dominique

    Gérard,

    qestions simples dont vous trouverez les réponses facilement avec les recherches soit dans le site Locoduino (articles et forum) soit dans le site Arduino, soit sur un moteur de recherche general. On a tous acquis des connaissances de base en cherchant, testant et recommençant souvent. C’est un peu facile de demander tout sans chercher un peu.

    Répondre

  • Les entrées sorties de l’Arduino 11 avril 2020 14:38, par Justine

    Bonjour,
    Pour mon stage je dois réaliser une conversion analogique-numérique d’une tension de capteurs comprise entre plus ou moins 10V (pour ensuite l’afficher sur un écran LCD). Je vais donc réaliser la conversion avec un ADC 12 bits(MCP3201) externe à mon arduino 2560.
    Est-il possible de brancher la sortie de données de mon ADC sur une PIN numérique de l’arduino ?

    Répondre

    • Les entrées sorties de l’Arduino 11 avril 2020 16:20, par Jean-Luc

      Bonjour Justine,
      D’habitude on ne fait pas de support technique pour les étudiants en stage mais vu les circonstances exceptionnelles, je vais faire une exception. Il existe un bibliothèque : https://github.com/labfruits/mcp320x également disponible via le gestionnaire de bibliothèques (tapez mcp320x). La sortie de donnée doit être branchée sur MISO.

      Répondre

  • Les entrées sorties de l’Arduino 11 avril 2020 15:41, par msport

    Bonjour,
    le MCP3201 communique par un bus SPI, voyez la référence arduino :
    coup de chance, écran oled 0.96", lcd 16x02 et autres fonctionnent aussi en SPI.
    Si 12 bits suffisent, regardez l’ESP32.
    Génial, un stage en modélisme ferroviaire, vite l’adresse !

    Voir en ligne : Arduino reference SPI

    Répondre

  • Les entrées sorties de l’Arduino 24 octobre 2020 12:21, par nat

    Bonjour j’ai besoins de 20 sorties pour un projet et j’ai vu qu’on pouvait utiliser les sortie tx et rx cependant peut importe le code elles restent allumer pour tx et éteinte pour rx , comment il faut faire pour les configurer en tant que output classique ?

    Répondre

  • Les entrées sorties de l’Arduino 25 octobre 2020 10:40, par msport

    Bonjour nat,

    D’habitude on ne fait pas de support technique pour les étudiants, mais la question est tellement basique qu’elle fait pitié :
    Réponse, comme les autres E/S :

    Dans la partie configuration void setup () :

    pinMode(n, OUTPUT) ; // n est le numéro de la broche de 0 à 13
    voir aussi Commandes de base des E/S arduino

    Si ça ne marche pas, c’est qu’il faut déconnecter l’USB ou ce qui est connecté à RX/TX.

    Voir en ligne : Les entrées sorties de l’Arduino

    Répondre

    • Les entrées sorties de l’Arduino 25 octobre 2020 11:58, par nat

      Merci de votre réponse bien que condescendante, je pense que ce forum est là pour tout les niveaux et si je pose la question c’est bien que j’avais essayer avant en mettant simplement pinMode(0,OUTPUT) et que ça ne marchait pas ( comme préciser dans la question ) et que justement je cherchait comment déconnecter l’usb et ce n’est pas un projet dans le cadre scolaire c’est simplement un projet personnel sinon je profiterais d’un prof ou maître de stage qui saurait me répondre

      Répondre

      • Les entrées sorties de l’Arduino 25 octobre 2020 16:19, par msport

        Désolé de ne pas avoir perçu votre niveau d’expertise à la lecture de votre question, vous l’avez posée en deux lignes.

        Ce forum est fait pour tous ceux qui respectent l’investissement en temps de ceux qui y participent. Et donc à ceux qui passent un temps équivalent à expliquer leur problème à celui qui est pris pour y répondre.

        Dites nous pourquoi vous devez conserver l’USB connecté, ce que votre question ne dit pas.

        Répondre

  • Les entrées sorties de l’Arduino 25 octobre 2020 13:55, par dominique

    Est-ce de la condescendance que de vous demander de vérifier votre orthographe en préalable (question de politesse) ? : au moins 4 grosses fautes sans compter la ponctuation !

    Répondre

  • Les entrées sorties de l’Arduino 25 octobre 2020 18:10, par nat

    Non ce n’est pas condescendant mais c’est dommage de proposer un forum arduino pour au final dire que les questions font pitié, nous n’avons pas tous quelques années d’expérience dans le domaine et c’est pour ça que nous posons des questions. Si ça vous embête de répondre à des questions trop simple vous pouvez discuter avec des personnes ayant les mêmes compétences

    Répondre

    • Les entrées sorties de l’Arduino 25 octobre 2020 18:54, par msport

      Je crains que vous vous trompiez de forum :
      1. Avertissement sur : Le forum LOCODUINO est consacré aux discussions ayant trait à l’utilisation de l’Arduino dans les automatismes et les animations pour le train miniature. Nous avons eu récemment quelques inscriptions de personnes ayant des projets plus généraux mais surtout inapplicables au train miniature. Si votre projet ou vos questions ne concernent pas le modélisme ferroviaire, ne vous inscrivez pas, vous perdriez votre temps et nous aussi. Le site éditorial fonctionne sur les mêmes bases.
      2. Si vous posez néanmoins une question, faites l’effort d’expliquer ce que vous avez déjà tenté pour résoudre votre problème. Sinon vous vous exposez à être considérée comme une primo débutante qui n’a pas encore lu ce qui est mis à votre disposition.
      Relisez votre question : comment il faut faire pour les(RX/TX) configurer en tant que output classique ?
      3. Pour avancer, il faut accepter de se remettre en question.
      4. Et à tout le moins de répondre aux questions qu’on vous pose. Nous savons très bien que avons tous débuté un jour.

      Et pour conclure, rappelons cette citation de Pierre Dac Ceux qui ne savent rien en savent toujours autant que ceux qui n’en savent pas plus qu’eux.

      Répondre

  • Les entrées sorties de l’Arduino 9 juin 2021 10:46, par Sacha Pery

    Bonjour à tous, en ce moment j’essaie de m’approprier le langage Arduino. Je suis en train de travailler sur la carte Arduino DUE, sur un programme me pemettant d’envoyer un voltage prédéfini dans la sortie analogique DAC0. Simplement, je ne sais pas comment lui indiquer d’aller dans cette sortie.
    Quand j’y branche ma LED (avec résistance en série) elle ne s’allume pas lorsque je fais varier mon voltage. Quelqu’un aurait une idée ?
    Bonne journée à vous !

    Répondre

  • Les entrées sorties de l’Arduino 9 juin 2021 11:25, par msport

    Vous n’êtes pas sur le bon site pour poser votre question et obtenir des exemples :

    voir Référence DUE

    Répondre

  • Les entrées sorties de l’Arduino 19 mars 2023 08:28, par ROUCH

    Bonjour
    Est ce qu’on peut mettre une horloge indépendante sur chaque sortie de l’arduino ? horloge individuelle et commandant chaque sortie.........
    Je précise, sachant qu’une sortie correspond à un allumage de LED (eclairage d’une maison en modelisme bien sur) , Tout cela pour faire des éclairages allumage et extinction aléatoire indépendantes des uns et des autres et surtout décalés . C’est à dire éviter un cycle répétitif de l’ensemble des sorties.
    Je ne sais si je me suis bien fait comprendre et vous m’en excuserez.
    cdlt

    Répondre

  • La bibliothèque ScheduleTable 19 mars 2023 09:51, par msport

    Bonjour,
    vous pouvez regarder si la bibliothèque ScheduleTable répond à votre question.
    De plus vous pouvez utiliser la fonction random :
    https://www.arduino.cc/reference/en...
    Vous avez un exemple là :
    https://www.locoduino.org/spip.php?...
    Cordialement

    Voir en ligne : La bibliothèque ScheduleTable

    Répondre

  • Les entrées sorties de l’Arduino 19 mars 2023 11:55, par Jean-Luc

    Bonjour,
     
    On peut faire exactement ce que l’on veut.
     
    Par exemple, pour votre application, supposons que vous ayez N sorties, numérotées de 0 à N-1, on peut, par exemple tirer une sortie au hasard puis lui appliquer un état, allumé ou éteint, au hasard. Fixons N au nombre d’entrées/sorties de l’Arduino Uno : 20, cela donnerait le loop suivant :

    const byte N = 20;
    const int PERIODE = 5000;
    
    void loop() {
      const byte sortie = random(N);  /* 0 à N-1 */
      const byte etat = random(2);    /* 0 ou 1  */
      digitalWrite(sortie, etat);
      delay(PERIODE);
    }

    C’est sans doute le programme le plus simple que l’on puisse écrire mais vous aurez toujours au moins PERIODE millisecondes entre deux changements d’état d’une des lumières de l’ensemble de maisons. Une autre solution est de tirer au sort un intervalle de temps pour chaque lumière. Il faut donc avoir un tableau avec un élément par lumière pour mémoriser cet intervalle de de temps et un tableau pour la date du dernier changement. Cela donnerait ceci :

    const uint32_t PERIODE_MAX = 240000; /* 4 minutes */
    const uint32_t PERIODE_MIN = 30000;  /* 30 secondes */
    const byte N = 20;
    uint32_t intervalle[N];
    uint32_t derniere_date[N];
    
    void loop() {
      uint32_t date = millis();
      for (byte sortie = 0; sortie < N; sortie++) {
        if (date - derniere_date[sortie] > intervalle[sortie]) {
          derniere_date[sortie] = date;
          intervalle[sortie] = random(PERIODE_MIN, PERIODE_MAX);
          digitalWrite(sortie, ! digitalRead(sortie));
        }
      }
    }

    Ici, chaque lumière suit une suite de changements d’état séparés par une durée tirée aléatoirement entre PERIODE_MIN et PERIODE_MAX indépendamment des autres lumières. Notez également qu’au démarrage toutes les lumières vont s’allumer simultanément. Il faudrait dans setup tirer aléatoirement un état initial pour chaque lumière.
     
    Je n’ai ni compilé, ni testé, ces deux programmes.

    Répondre

  • Les entrées sorties de l’Arduino 17 avril 08:06, par Alain

    Bonjour,
    objectif : dans le projet de cantonnement, basculer l’alimentation de la zone de pleine voie soit en 12V (feu vert ) soit en une tension intermédiaire telle que 6V ou 7V (mais fixe par alimentation séparée) pour respecter le feu orange tout en n’utilisant qu’une seule broche de la carte arduino : celle qui commande le relais qui coupe ou alimente la zone d’arrêt qui suit
    moyen et question : peut on brancher 2 relais sur une seule broche arduino sans risquer de destruction ? l’un sert à la zone d’arrêt l’autre à la zone de pleine voie précédente
    Cordialement

    Répondre

Réagissez à « Les entrées sorties de l’Arduino »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Atelier »

Les derniers articles

Les articles les plus lus