Leonardo : détection de la liaison Série-USB pour activer le DEBUG

Bonjour,

Je débute en Leonardo mais j'ai beaucoup utilisé des UNO et des nano.
J'ai investit dans un Leonardo (& un Micro) car je souhaite utiliser le port série "hard" sur les PIN 0 & 1 tout en utilisant la lisaison série avec le PC, et tout ça sans utiliser "softserial".

Et je me demande s'il est possible de "détecter" la liaison série avec le PC depuis le Leonardo.

J'explique mon objectif :

  • Si la liaison série-USB avec le PC est détectée dans le setup alors je met un flag DEBUG=1
  • Si la liaison série-USB avec le PC n'est pas détectée (avec time out) alors DEBUG reste à 0

Du coup, toutes mes lignes de debug dans mon programme, commence par "if (DEBUG==1)" et l'activiation de ce mode debug ne se fait QUE si on a une liaison série-USB...

Vous me suivez ?

C'est-à-dire que le port série ne peut pas savoir qu'il est connecté à un équipement. En tout cas lorsque seuls RX et TX sont utilisés.
Le seul moyen pour lui de le savoir c'est de recevoir des caractères.

Le if (Serial) dont parle B@tto ne teste que la disponibilité du périphérique intégré à l'arduino ( et uniquement sur la Leonardo) pas la présence d'un équipement en face.

Merci pour vos réponses.

Pour aller un plus loin, dans quel cas de figure "if (Serial)" va me retourner "false" sur un Leonardo ?

Si l'USB n'est pas branché ?
Si le port n'est pas "ouvert" sur l'ordi ?
S'il n'a rien reçu ?

UniseV

Le mieux c'est d'essayer non ? :wink:

J'ai jamais testé mais vu la description sur la page Arduino, Serial retourne true si la connexion est ouverte donc logiquement, quand tu ouvres le moniteur série par exemple

La doc est ambiguë, on n'arrive pas à savoir si c'est lorsque le périphérique est prêt (initialisé) ou si c'est lorsque le port a été énuméré et reconnu et donc pleinement fonctionnel.
Mais c'est vrai que la manip est facile à monter pour le savoir. Pour autant que l'on ait une carte Leonardo.

He bien dans ce cas, j'informe tout le monde que :

La condition (Serial) sur un Leonardo ne retourne (true) que si le moniteur de l'IDE Arduino est ouvert.

C'est une bonne nouvelle pour moi, car je peux enfin conditionner mon mode DEBUG a la présence du moniteur Arduino.
La moins bonne c'est qu'il faut attendre que le port série soit énuméré et disponible sur l'ordi pour pouvoir ouvrir le moniteur de l'IDE, donc prévoir une petit délais dans le sketch.

D'autre part, le bouton RESET du Leonardo le fait toujours démarrer en mode BOOTLOADER (la LED "L" orange clignote en FADE-IN / FADE-OUT)... Il faut attendre le timeout du bootloader pour que la carte démarre le sketch (uniquement dans la cas d'un RESET).

Voila c'est mon analyse de newbee du Leonardo, et vous risquez de me dire: mais pourquoi aller s'ennuyer avec un Leonardo plutôt qu'un UNO ?

Ce à quoi je répondrai que parfois, c'est vraiment pratique d'avoir le Serial et le Serial-USB séparés :wink:

C'est au-delà de ça encore : gain en espace et possibilité d'exploiter l'USB au sens propre du terme => voir projet LUFA notamment, qui permet de faire beaucoup plus de chose au niveau interaction PC<->Arduino (RAW HID, souris, clavier, joystick ...)