'jour a tous...
je voudrais savoir a quoi ressemble un 14 byte packet recu par processing;
je n'arrive pas voir comment les données sont reçues et ou elle vont ?
voici a nouveau l'extrait de mon source code :
void serialEvent(Serial port) { interval = millis(); while (port.available() > 0) { int ch = port.read(); print((char)ch); if (aligned < 4) { // make sure we are properly aligned on a 14-byte packet if (serialCount == 0) { if (ch == '$') aligned++; else aligned = 0; } else if (serialCount == 1) { if (ch == 2) aligned++; else aligned = 0; } else if (serialCount == 12) { if (ch == '\r') aligned++; else aligned = 0; } else if (serialCount == 13) { if (ch == '\n') aligned++; else aligned = 0; } //println(ch + " " + aligned + " " + serialCount); serialCount++; if (serialCount == 14) serialCount = 0; } else { if (serialCount > 0 || ch == '$') { teapotPacket[serialCount++] = (char)ch; if (serialCount == 14) { serialCount = 0; // restart packet byte position // get quaternion from data packet q[0] = ((teapotPacket[2] << 8) | teapotPacket[3]) / 16384.0f; q[1] = ((teapotPacket[4] << 8) | teapotPacket[5]) / 16384.0f; q[2] = ((teapotPacket[6] << 8) | teapotPacket[7]) / 16384.0f; q[3] = ((teapotPacket[8] << 8) | teapotPacket[9]) / 16384.0f; for (int i = 0; i < 4; i++) if (q[i] >= 2) q[i] = -4 + q[i]; // set our toxilibs quaternion to new data quat.set(q[0], q[1], q[2], q[3]);
pouvez-vous m'eclairer ?
Hors ligne
Bonsoir,
Il faut regarder dans le programme de l'arduino pour bien comprendre :
uint8_t teapotPacket[14] = { '$', 0x02, 0,0, 0,0, 0,0, 0,0, 0x00, 0x00, '\r', '\n' };
Les valeurs du MPU6050 sont transmise dans les octets 2 à 9.
Dans l'octet 11 c'est le nombre de packet déjà envoyé.
Les octets prédéfinis servent à reconnaître le début et la fin de la trame.
Hors ligne
dac dac..et alors, comment puis-je m'assurer que les valeurs des paquets modifient bien la "tolxilib quaternion" et
donc donnent une nouvelle position a la matrice graphique ??
j'sais pas si chui clair....??
Hors ligne
pas evident c'truc..
autrement dit , quelle valeur je peut changer pour voir au moins que mon image change de position ?
la dedans ?
// get quaternion from data packet q[0] = ((teapotPacket[2] << 8) | teapotPacket[3]) / 16384.0f; q[1] = ((teapotPacket[4] << 8) | teapotPacket[5]) / 16384.0f; q[2] = ((teapotPacket[6] << 8) | teapotPacket[7]) / 16384.0f; q[3] = ((teapotPacket[8] << 8) | teapotPacket[9]) / 16384.0f; for (int i = 0; i < 4; i++) if (q[i] >= 2) q[i] = -4 + q[i]; // set our toxilibs quaternion to new data quat.set(q[0], q[1], q[2], q[3]);
Hors ligne
Bonjour,
Tu modifies à la main les valeurs de du tableau teapotPacket[] pour voir si le rendu change.
Ensuite tu affiches dans la console les valeurs de teapotPAcket[] pour vérifier que se modifies bien en fonction de ton capteur.
J'ai l'impression que tu ne maîtrise pas la librairie toxilib, essaie d'abord des rendu plus basique pour vérifier la chaîne du capteur au rendu.
Hors ligne
en fait j'ai fait une grosse bourde dont j'ai honte !!
le programme de l'arduino inclu des options que je n'avait pas validé !! (le gueu !)
j'ai donc unmarqué l'option de lecture data pour l'option de compatibilité avec l'interface processing.....
et ça fonctionne a merveille...
je note cepandant qu'a l'init , comme en mode de lecture de données d'ailleurs, le yaw bouge tout seul pour se stabiliser....curieux....ça doit etre le graphite là dedans qui reagit a la basse tension de demarrage..
yo sais pas...
je recherche maintenant le meme programme en processing avec la vrai tasse de thé....
Hors ligne