Aller au contenu


Photo
- - - - -

programme parallele


6 réponses à ce sujet

#1 Gaets

Gaets

    Nouveau membre

  • Membres
  • 6 messages

Posté 24 mars 2014 - 09:23

bonjour,

je suis actuellement en licence robotique , est comme projet de fin d'etude nous devons realiser un robot capable de detecter des mines .

le robot est constitué de 3 roues motrices et d'un bras manipulable grace a un verin electrique.

nous avons utilisé une carte arduino mega pour pouvoir piloter le robot.

je debute en programmation donc ma question va peut etre vous paraitre idiote , mais j'aimerais savoir si il est possible de faire 2 programmes en parallele pour controler les roues et le bras en meme temps ?

faut-il une second carte ? ou un micro controlleur ?

#2 transistance

transistance

    Membre passionné

  • Membres
  • PipPipPip
  • 411 messages

Posté 24 mars 2014 - 10:51

Bonjour,

je suis actuellement en licence robotique

C'est plutôt toi qui devrait nous venir en aide alors ^^

Ce que tu cherches à faire c'est du multitâche. Alors là t'as le choix, soit tu te tournes vers le multitâche logiciel en ajoutant un OS temps réel à un µc lambda (pic, avr, 68hcxx etc.)ou en achetant un module ROVIN par exemple.

Soit tu te tournes vers le multitâche matériel en te procurant, par exemple, un propeller de chez parallax.

A toi de peser le pour et le contre.

Sinon, si le bras manipulateur n'as aucun lien avec les roues et vis et versa (c'est à dire si le bras n'attend et ne retourne aucun paramètre de la partie motrice et vis et versa) tu peut utiliser 2 cartes séparés avec 2 codes séparés.

N'oubliez jamais que "Ban Ki-moon n'attrape pas mousse"


#3 ChristianR

ChristianR

    Membre passionné

  • Membres
  • PipPipPip
  • 474 messages
  • Gender:Male
  • Location:Isère (38)
  • Interests:Arduino, programmation, électronique...

Posté 24 mars 2014 - 11:18

On fait du pseudo multitâche avec les cartes Arduino.
Un seul programme tourne, mais leur rapidité (16 MHz) permet de faire beaucoup de choses dans la même boucle principale.
En découpant ton programme en fonctions élémentaires qui s'enchaînent dans le code principal.
Christian

#4 Gaets

Gaets

    Nouveau membre

  • Membres
  • 6 messages

Posté 27 mars 2014 - 05:25

merci de vos reponses et oui je suis en robotique mais industriel xD donc je touche pas vraiment a arduino.

seconde question:

je voudrais connecter une manette de type joystick a mon ordinateur en usb, puis piloter le robot en bluetooh grace a cette manette, j'aimererais savoir comment connaitre les differentes commande de cette manette, c'est a dire : si j'appuie sur tel bouton , comment arduino va savoir que j'ai appuyé sur ce bouton, comme sur un emulateur quand on configure les boutons comment, le programme sait que tel bouton correspond a tel action ?

#5 olivthill

olivthill

    Membre occasionnel

  • Membres
  • Pip
  • 143 messages
  • Gender:Male
  • Location:Normandie
  • Interests:Robots humanoides.

Posté 27 mars 2014 - 10:38

Le joystick est équivalent à plusieurs boutons, disons 5 avec les 4 directions plus le bouton central.

Ce serait peut-être pratique de rassembler les informations concernant ces 5 (ou n) boutons dans un seul octet. Il peut y avoir un programme sur l'ordinateur qui fera ça, mais ce n'est pas obligatoire.

Pour la liaison Bluetooth du côté de l'ordinateur, j'ai une petite clé USB bluetooth, mais il est possible que votre ordinateur ait déjà un module bluetooth intégré.

Pour la liaison Bluetooth du côté de la Arduino, je recommande un petit module comme ceux de cette page : http://www.robotshop.com/eu/fr/bluetooth-telemetrie-donnees.html?___SID=U&dir=asc&order=price
Personnellement, j'ai utilisé un module qui ressemble à celui de Seedstudio à 18 euros TTC, mais je l'ai pris à Hong Kong alors il était moitié moins cher et il avait quatre broches déjà soudées, mais l'attente du colis fut longue.
C'est facile de le relier à une Arduino. Il faut +5V, la masse, RX vers le TX de la Arduino, et TX vers le RX de la Arduino (il faut croiser, je ne me trompe pas).

Vous ne dites pas si votre ordinateur est sous Windows, Unix, ou autre. Je vais supposer que c'est sous Windows.

Les périphériques bluetooth ont ce que j'appelle deux niveaux de connexion.

Quand un module bluetooth est allumé, il émet des ondes et les autres modules bluetooth sont capable alors de le détecter. Je ne me souviens plus très bien, mais je crois qu'un code est demandé, et peut-être aussi des drivers. C'est un premier niveau de connexion qui n'a besoin d'être fait qu'une seule fois, parce qu'après Windows se souvient d'avoir déjà vu ce type de module dans les environs.

Puis, à chaque fois que l'on met le module sous tension, Windows le voit et ne demande plus son code ni ses drivers. On peut vérifier que le module a bien été repéré en cliquant dans le panneau de configuration, ou plus simplement sur la petite icone bluetooth qui s'affiche près de l'heure en bas à droite. Petite astuce : Il faut que le "service Assistance IP" tourne sous Windows, ce qui est généralement le cas.

Mais, bien qu'il soit détecté, il faut tout de même ouvrir une liaison par le programme (c'est mon deuxième niveau de connexion), comme on ouvre un fichier, et écrire ou lire des données et fermer la liaison.
Personnellement, j'utilise :
hCommPort = CreateFile(szPortName,
            GENERIC_READ|GENERIC_WRITE,//access (read and write)
            0, //(share) 0:cannot share the COM port                        
            0, //security  (None)                
            OPEN_EXISTING, // creation : open_existing
            0, // FILE_FLAG_OVERLAPPED, // we want overlapped operation
            0 // no templates file for COM port...
            );
  if (hCommPort == INVALID_HANDLE_VALUE) { error... exit}

  Boucle
     ...
     iRet = WriteFile(hCommPort, data, dwSize, &dwBytesWritten, NULL);
     if (iRet == 0) { error.. }
     ...
  Fin de la boucle

  CloseHandle(hCommPort);

Donc, ça se fait par des envois d'octets comme sur une liaison série ordinaire.

Du côté de la Arduino, on lit les octets qui viennent du module bluetooth comme s'ils venaient d'une liaison série ordinaire.

#6 Pac

Pac

    Nouveau membre

  • Membres
  • 1 messages

Posté 08 mai 2014 - 12:07

bonjour,

j'explique brievement , nous avons un joystick qui est relié a un pc qui lui communique avec l'arduino via une interface graphique que mon binome etait actuellement entrein de programmer , j'ai bien compris qu'il va m'envoyer des données sous forme d'octet , mais j'aimerai savoir comment l'arduino va les interpreter .

par exemple:
si j'appuie sur un bouton quelconque du joystick , comment arduino va savoir que j'ai appuyé sur ce bouton ? est-ce que le bite que je vais recevoir va etre stocké dans une variable ? ci c'est le cas , comment peut il savoir que l'information doit etre stocké dans cette variable et pas une autre , j'avoue avoir du mal a comprendre le principe. quand chaque bouton correspond a un pin de l'arduino c'est facile mais quand on utilise le bluetooh sa devient flou pour moi , si vous pouviez m'aider ou me donner un tuto sa m'avancerai vraiment . merci d'avance

#7 ChristianR

ChristianR

    Membre passionné

  • Membres
  • PipPipPip
  • 474 messages
  • Gender:Male
  • Location:Isère (38)
  • Interests:Arduino, programmation, électronique...

Posté 08 mai 2014 - 12:43

L'Arduino va recevoir les données successives, en suite c'est toi qui dans ton propre programme lui fait faire tout ce que tu veux.
Christian



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users