Je me remet à la programmation après 20ans … bref
Mon projet avance bien en UART mais je rencontre un souci (sur la fin du projet) pour concatener 5 données en hexadécimal avant de les convertir en décimal et de faire apparaître sur le moniteur série.
EX :
5 hexadécimal : 3E AA 44 C4 F2
Deviendrait : 3EAA44C4F2
Puis convertit = ….
I don't have an exact answer, but remember that EVERYTHING in the computer/microcontroller is in binary.
By default the input, output, and display are converted to decimal.
If some byte(s) represent something other than a number, an alphanumeric character, a pixel in an image, a microprocessor instruction, etc., the software has to know the context so it knows what to do with the binary number.
Hex is popular with programmers because it's easy (for humans) to convert between hex and binary. Since every nybble represents exactly one hex digit, you can learn to convert numbers of any size in your head. And it's easier to read/write hex than a long string of ones & zeros.
J’ai tenté un serial.print() avec des , & +
Pareil avec une variable « tag » : tag = …
Je me suis souvenu d’un vieux cours qui parlait des bits faible et forts. Donc j’ai tenté de décaler les bits avec << (de 2, 4, 8 bits) mais la somme des 5 données hexagonales que je convertit n’est pas correcte car la valeur en DEC est fausse.
J’ai vérifié sur Excel et sur la calculatrice du PC.
Donc j’en conclue que j’ai un soucis pour regrouper les 5 donnes HEX et/ou pour le décalage.
Il faudrait connaitre le type de Tagmessage : int, char, String ???
Si c'est des int, tu peux en effet utiliser les décalages par paquets de 8
Exemple, si on a :
Tagmessage[0] = 3E
Tagmessage[1] = AA
Tagmessage[2] = 44
Tagmessage[3] = C4
Tagmessage[4] = F2
(en fait tu auras les valeurs binaires dans ces cases du tableau, j'écris ça pour reprendre ton exemple)
Les variables « Tagmessage[i] » et « tag » sont déclarées en uint32_t
J’ai essayé ta proposition de décalage, mais cela n’a pas fonctionné. Je retente demain car la fatigue a eu certainement raison de moi … 50h de programmation et de recherche, cette semaine
J’avais tenté la fonction inHexDec mais des messages d’erreur dans la compilation.
@J-M-L@vileroi merci pour vos attentions tardives.
Et quelle sympathie sur les forums.
Je vous extrait une partie du programme demain. Je ne vais pas rallumer ma station CAO maintenant et je vous répond depuis le téléphone.
Et oui je tourne sur un vieil IDE car c’est un souvenir de jeunesse qui est installé sur un EePC qui date de mes années d’étudiantes, sous xp 32. Ce n’est pas un foudre de guerre mais il a son utilité
Un peu de blabla, avant mes prochains posts sérieux !
L’électronique et l’informatique datent de 2000 à 2010 environ. Donc je ne suis pas un professionnel en la matière mais je ne débrouille pas trop mal en vba et arduino.
Je suis de l’autre côté de la branche technique mécanique/matériaux (composites, usinage, chaudronnerie, plasturgie) dans le secteur aéro…
Donc le petit … que je suis s’est lancé un défi ! Vingt ans après…
Vive le DIY !!
PROJET :
Réaliser un distributeur automatique de croquettes pour 2 chats, pucés, avec un rationnement différent.
Donc je vous sollicite pour finaliser une erreur dans mon sous module « RFID ».
Je pourrais m’arrêter à comparer des codes HEX d’identification du type « if is == AA {} » mais je suis à 95% de finir la partie névralgique du projet.
Besoin :
Je souhaiterais que 5 de mes données HEX (AA, BB, CC, DD, EE) stockées dans mon tableau, soient « concatener » ou « additionner sous la forme « AABBCCDDEE » avant la conversion en DEC
La question reste pourquoi voulez vous absolument fabriquer un entier et pourquoi du décimal ? Comme vous avez 5 octets vous ne pouvez pas utiliser un uint32_t qui n’en fait que 4. Il faut un uint64_t qui en fait 8, soit 3 octets de perdus… ça se fait simplement par décalage vous commencez a 0, vous ajoutez le premier octet, vous décalez de 8 bits, vous ajoutez le second octet, vous décalez de 8 bits, vous ajoutez le troisieme octet, vous décalez de 8 bits, vous ajoutez le quatrième octet, vous décalez de 8 bits, vous ajoutez le dernier octet, ça vous fait votre nombre. Si vous êtes sur un arduino 8 bits, print ne saura pas le gérer.
Une structure qui contient le tableau des 5 octets (qui pourrait être aussi une structure) par exemple ainsi que éventuellement d’autres attributs comme le nom du chat, ses horaires et quantité etc serait sans doute une meilleure façon de structurer vos données.
Moi, j'irais un poil plus loin, pourquoi vouloir concaténer les 5 octets?
La comparaison peut se faire octet par octet ce qui est quand même plus simple sur ces petites machines.
ok je note.
je t'avoue que j'ai des connaissances limités pour gagner en taille du fichier .ino
je ne suis pas encore au niveau de compétence me permettant d'optimiser.
J'arrive à faire fonctionner les fonctions principales et secondaires du projet, et je m'estime heureux