Viewing 6 reply threads
  • Author
    Posts
    • #6709
      Dominique
      Participant

      Lorsque l’on quitte MyRobotLab, y a t’il une commande qui “détach” les Arduinos ?

      Je me pose cette question car je travail sur Manipulator, un Atmega328 contenant MRLcomm et connecté sur un port série d’un des mégas gauche ou droite et qui va servir à commander l’une des mains.

      Tout fonctionne très bien MAIS, si je quitte MyRobotLab, puis je relance, alors les servos commandés par MRLComm déporté ne fonctionne plus. Il faut couper électriquement la tension pour que ça fonctionne de nouveau. Une solution que j’ai trouvé est de commander la PIN reset de l’atmega328.

      Quelqu’un aurait il une idée ?

    • #6715
      Christian
      Participant

      Lorsque MRL cesse de fonctionner, ou que le cable USB est débranché, l’arduino continue de fonctionner de la meme facon, sauf qu’il ne peu plus recevoir de commande.

      Lorsque le board Mega est reconnecté, le Mega subit un hardware reset, mais pas ton atmega328 puisqu’il n’est pas connecté par USB.

      Si tu reconnecte ton atmega328 avec un commande semblable a arduino1.connect(arduino, Serial1) un soft reset devrait s’effectuer et reinitialiser mrlComm.

      Mais il est possible que le soft reset l’état des pins utiliser par le servo. C’est a vérifier

    • #6737
      Dominique
      Participant

      OK merci Christian pour ta réponse. C’est bien ce que je pensais.

      En faite, je me demandais s’il existait une commande qui clôture une communication, l’inverse de “connect”

      Autrement peux tu nous dire ce que fait la commande “i01.detach()” ?

    • #6738
      Gael Langevin
      Keymaster

      Hello Dominique,
      i01.detach() déconnecte les servos et i01.attach(), les connecte.
      Mais j’imagine que tu veux savoir comment ces fonctions se déroulent en arriere plan.
      Christian aura de meilleur renseignement sur ça.

    • #6740
      Dominique
      Participant

      Salut Gael,

      En fait, lorsque l’on commence un script on fait ceci : i01 = Runtime.createandstart(“i01”, “InMoov”)

      Puis, quand on quitte MyRobotLab, on appel la fonction “shutdown()” dans la quels on mets cela : i01.detach()

      Je pensais que cela permettait de quitter proprement les arduinos.

    • #6743
      Christian
      Participant

      Salut Dominique

      is existe une méthode arduino.disconnect() qui permet de couper la communication serial (et faire un peu de clean out) mais présentement c’est juste du coté java MRL. et non sur l’arduino

      Présentement, nous testons un ‘heartbeat’ qui permet de vérifier que la communication serial est toujours active et fonctionnel. Le but est de permettre autant MrlComm que MRL de réagir lorsque la communication est coupé (Mrlcomm pourra par example arreter les moteurs ou tout élément pouvant etre dangereux lorsqu’il y a perte de controle et MRL tentera de rétablir la connection et faire en sorte que tout redeviennent fonctionnel). C’est en cours de réalisation/futur plan.

      Lorsque l’arduino fait un soft reset, la fonction servo.detach est lancé a l’intérieur de l’arduino.

      La fonction de communication par le port série entre 2 différents Arduino est nouvelle et l’intéraction est differente que lors d’une communication série par le port USB. Je vais investiguer plus ce que tu vois comme problemes des que j’aurai un peu de temps.

      Quel servos tu utilise?

    • #6744
      Dominique
      Participant

      Salut Christian,

      La surveillance de la com entre arduino et MRL est une très belle avancé. Bravo aux développeurs.

      Autrement, pas de problème pour le reste, je reset mon atmega avec un digital.write du mega maître.

      En tout cas, l’utilisation des ports séries à la place des ports USB permet de se passer de hub si le PC utilisé en contient suffisamment (minimum 3 USB).

      • This reply was modified 7 years, 2 months ago by Dominique.
Viewing 6 reply threads
  • You must be logged in to reply to this topic.