Aller au contenu


Photo
- - - - -

Multiwii avec PS2 controller (manette).


  • Veuillez vous connecter pour répondre
23 réponses à ce sujet

Sondage : Projet réalisable ou pas? (9 membre(s) ont voté)

Projet réalisable ou pas?

  1. Oui (3 vote(s) [33.33%] - Voir)

    Pourcentage des votes : 33.33%

  2. A voté Oui, mais tu vas transpirer ta race. (6 vote(s) [66.67%] - Voir)

    Pourcentage des votes : 66.67%

  3. Ne te creuse pas la tete, t y arrivera jamais (0 vote(s) [0.00%])

    Pourcentage des votes : 0.00%

Vote Les invités ne peuvent pas voter

#21 Mous

Mous

    Membre

  • Membres
  • 15 messages
  • Gender:Male

Posté 19 août 2012 - 03:59

J'en sais rien si c'est cohérent ou pas. Je ne sais pas de quel programme tu parles, ni ce que signifient les lignes que tu me montres, ni à quoi elles servent.

Bref, à toi de fouiller.
Bon courage, et tiens nous au courant.

Leon.

Pas de problème, je test et je reviens donner des news.

#22 SRWieZ

SRWieZ

    Membre

  • Membres
  • PipPip
  • 231 messages
  • Gender:Male
  • Location:Evreux, Haute-Normandie, France

Posté 19 août 2012 - 06:04

Tu as mal lu mon dernier post, la commande doit reçevoir les 8 channels en même temps et tu n'as absolument rien à modifier du code de la multiwii. De plus, si t'envoie un retour à la ligne à chaque fois ça ne risque pas de fonctionner, tu as encore des lacunes en programmations.
Donc :
1) Utiliser println qu'à la fin
2) Eviter d'en aligner pleins à la suite ça ne fera que ralentir pour rien.
3) Documente toi beaucoup plus sur la fréquence à la quel les messages doivent être envoyés.

Serial.print("$M<32200");
Serial.print("chan1"); // valeur de commande de 0 a 255 +1000
Serial.print("chan2"); // valeur de commande de 0 a 255 +1000
Serial.print("chan3"); // valeur de commande de 0 a 255 +1000
Serial.print("chan4"); // valeur de commande de 0 a 255 +1000
Serial.print("chan5"); // valeur de commande de 0 a 255 +1000
Serial.print("chan6"); // valeur de commande de 0 a 255 +1000
Serial.print("chan7"); // valeur de commande de 0 a 255 +1000
Serial.print("chan8"); // valeur de commande de 0 a 255 +1000
Serial.println("random"); //chiffre aléatoire en 0 et 9

Ce qui te reste à faire c'est d'envoyer dans le bon ordre.
Il faut donc que tu saches quel channel correspond à quel voie (Roll, Pitch, Throt, Yaw, aux1, aux2, aux3, aux4).

Et ça normalement c'est toi qui le configure, soit par le fichier config.h (dans la section 3), soit par le programme GUI (voir cette page : http://www.multiwii.com/software).

#23 Mous

Mous

    Membre

  • Membres
  • 15 messages
  • Gender:Male

Posté 19 août 2012 - 11:04

Tu as mal lu mon dernier post, la commande doit reçevoir les 8 channels en même temps et tu n'as absolument rien à modifier du code de la multiwii. De plus, si t'envoie un retour à la ligne à chaque fois ça ne risque pas de fonctionner, tu as encore des lacunes en programmations.
Donc :
1) Utiliser println qu'à la fin
2) Eviter d'en aligner pleins à la suite ça ne fera que ralentir pour rien.
3) Documente toi beaucoup plus sur la fréquence à la quel les messages doivent être envoyés.

Serial.print("$M<32200");
Serial.print("chan1"); // valeur de commande de 0 a 255 +1000
Serial.print("chan2"); // valeur de commande de 0 a 255 +1000
Serial.print("chan3"); // valeur de commande de 0 a 255 +1000
Serial.print("chan4"); // valeur de commande de 0 a 255 +1000
Serial.print("chan5"); // valeur de commande de 0 a 255 +1000
Serial.print("chan6"); // valeur de commande de 0 a 255 +1000
Serial.print("chan7"); // valeur de commande de 0 a 255 +1000
Serial.print("chan8"); // valeur de commande de 0 a 255 +1000
Serial.println("random"); //chiffre aléatoire en 0 et 9

Ce qui te reste à faire c'est d'envoyer dans le bon ordre.
Il faut donc que tu saches quel channel correspond à quel voie (Roll, Pitch, Throt, Yaw, aux1, aux2, aux3, aux4).

Et ça normalement c'est toi qui le configure, soit par le fichier config.h (dans la section 3), soit par le programme GUI (voir cette page : http://www.multiwii.com/software).

Effectivement le monde de la programmation je viens à peine d y mettre les pieds. C'est pour cette raison que je compte sur votre aide qui m'a été précieuse jus'que maintenant.

Cela dit, dans le lien que tu m'a passer il est question de :


$M>[data length][code][data][checksum]
1 octet '$'
1 octet 'M'
1 octet '<'
1 octet [data length]
1 octet [code]
several octets [data]
1 octet [checksum]

ce qui veut dire que je doit envoyer l'un après l'autre les symboles.

Ps: pour que je comprenne mieu mon erreur peux tu me dire pourquoi il ne faut pas de retour a la ligne langage arduino?

merci pour ton aide

#24 SRWieZ

SRWieZ

    Membre

  • Membres
  • PipPip
  • 231 messages
  • Gender:Male
  • Location:Evreux, Haute-Normandie, France

Posté 20 août 2012 - 12:06

Cela n'as rien avoir avec le langage Arduino.

Le fait est que le multiwii s'attend à ce que tu lui envoie une ligne comme ceci :
$M<[data length][code=auto:0][data][checksum]
Je dirais même que dans notre cas, elle ressemblera plus à un truc comme ça :
$M<3220015001500150015001500150015001500 (avec les "1500" qui varient entre 1000 et 2000)

Le retour à la ligne indique que tu as fini d'envoyer ce que tu avais à dire.
Comme cela la multiwii peut faire la différence entre ta commande qui lui dit de bouger et celle qui lui demande ou est-ce qu'il est par exemple.
Ou même tout simplement faire la différence entre les premières commande sou tu lui dit d'avancer et les suivantes où tu lui dit de reculer.

C'est pourquoi tu te doit de lui envoyé des ordres comme ceci :
$M<3220015001500150015001500150015001500
$M<3220015001500150015001500150015001500
$M<3220015001500150015001500150015001500
$M<3220015001500150015001500150015001500
....


Avec un retour à la ligne qu'à la fin de ta commande car le retour à la ligne est l'indicateur stop de ta commande.

Il faut que tu sache que Serial.print envoie les caractères tel que tu lui a dit alors que Serial.println rajoute un retour à la ligne à la fin.




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

0 members, 0 guests, 0 anonymous users