Modifications

Sauter à la navigation Sauter à la recherche
3 396 octets ajoutés ,  7 avril 2013 à 11:43
Ligne 5 : Ligne 5 :  
Les résultats du programme MasterWriter.py sont visibles dans le "Moniteur Série" d'Arduino IDE.<br />Normal, les messages sont transmis par l'intermédiaire du bus I2C :-) .
 
Les résultats du programme MasterWriter.py sont visibles dans le "Moniteur Série" d'Arduino IDE.<br />Normal, les messages sont transmis par l'intermédiaire du bus I2C :-) .
   −
Au démarrage du programme vous devriez voir apparaître le résultat suivant dans le moniteur série d'Arduino IDE:}}
+
 
 +
Au démarrage du programme MasterWriter.py sur votre Raspberry, vous devriez voir apparaître le résultat suivant dans le moniteur série d'Arduino IDE:}}
    
  <nowiki>---- READING ---
 
  <nowiki>---- READING ---
Ligne 22 : Ligne 23 :  
Number of Bytes: 9
 
Number of Bytes: 9
 
5valeur=2</nowiki>
 
5valeur=2</nowiki>
 +
 +
== Deux outils ==
 +
Avant de rentrer dans le détail et le décorticage du résultat afficher dans le moniteur série, il nous semble opportun de recommander "deux outils" dans ce contexte..
 +
 +
=== système hexadécimal ===
 +
Si vous n'êtes pas familiarisés avec la notation et le concept Hexadécimal, vous pouvez trouver de nombreuses informations sur le net.
 +
 +
Nous pouvons néanmoins vous suggérer les liens suivants sur lesquels vous pourrez revenir au moment opportun:
 +
* Le Système hexadécimal sur CommentCaMarche.net http://www.commentcamarche.net/contents/base/hexa.php3
 +
* Les bases décimale, binaire et hexadécimale sur Apprendre-en-ligne.net http://www.apprendre-en-ligne.net/crypto/images/bases.html <br />''Ce site propose d'ailleurs une calculatrice décimale vers binaire + HexaDécimal''.
 +
 
 +
=== Table Ascii ===
 +
Disposer d'une table ASCII avec la codification décimal, hexadécimale et caractère ascii correspondant est un outil extrêmement précieux.
 +
 +
Nous vous suggérons de vous [http://www.asciitable.com/index/asciifull.gif munir de celle-ci] accessible sur http://www.asciitable.com/
 +
 +
Elle est simple et complète... bref efficace.
    
== Décodage des résultats ==
 
== Décodage des résultats ==
    
=== identifier les transactions I2C ===
 
=== identifier les transactions I2C ===
Chaque transaction I2C (envoi d'un message '''et potentiellement lecture de réponse qui ne concerne pas cet exemple''') est identifier par:
+
Chaque transaction I2C (envoi d'un message ''et potentiellement lecture de réponse qui ne concerne pas cet exemple'') est identifier par:
    
'''---- READING ---'''
 
'''---- READING ---'''
Ligne 35 : Ligne 53 :     
=== Transaction #1 ===
 
=== Transaction #1 ===
Notre première transaction est composée de 2 octets et contient "''' 64'''".
+
Notre première transaction est composée de 2 octets et contient "''' 64'''" (''notez l'espace devant le 64'').
    
Cette transaction correspond à l'instruction python  
 
Cette transaction correspond à l'instruction python  
Ligne 52 : Ligne 70 :  
et produit le résultat suivant dans Arduino IDE:
 
et produit le résultat suivant dans Arduino IDE:
 
  <nowiki>5abc110</nowiki>
 
  <nowiki>5abc110</nowiki>
 +
 +
'''Dernier octet:'''<br />
 +
Commençons par le dernier octet affiché en valeur décimal. Vous pouvez facilement identifier la valeur 110 à la fin du message dans Arduino IDE, il correspond exactement à la valeur 110 (en notation décimale) que vous pouvez voir à la fin de l'instruction writeList. 
 +
 +
'''Premier octet:'''<br />
 +
Reste les 4 premiers octet/bytes... dont le premier n'est autre que l'adresse du registre. Même si cette valeur ne nous intéresse pas, nous allons quand même la décoder.
 +
 +
Le numéro de registre envoyé dans l'instruction ''writeList'' est 0x35. Il s'agit d'une valeur arbitraire en notation hexadécimale. La valeur correspondant en notation décimal est 53. 
 +
 +
Conformément au fonctionnement du programme, tous les octets du message (sauf le dernier) sont affichés comme des caractères.
 +
 +
Il se fait justement que la valeur 65 en notation décimale correspondons au code Ascii du caractère "5".... raison pour laquelle c'est un "5" qui commence le message.
 +
 +
Le numéro de registre à fort peut d'importance dans l'exemple qui nous concernen mais sachez néanmoins que son utilisation sera d'une importance vitale pour des projets plus élaborés.
 +
 +
'''Deuxième, troisième et quatrième octets:'''<br />
 +
Ces autres octets correspondent au corps du message que nous voulions communiquer à l'esclave.
 +
 +
Attardons nous sur le deuxième octets qui est le caractère "a".
 +
 +
Dans le code python, vous pouvez notez l'instruction python ''ord('a')''. Cette dernière transforme le caractère "a" en sa représentation numérique ascii (qui est la valeur 97 en notation décimale).
 +
 +
C'est donc la valeur 97 (ou 0x61 pour son équivalent hexadécimal) qui voyage sur le bus I2C.
 +
 +
Conformément au fonctionnement du programme Arduino SlaveListener, tous les octets/bytes (sauf le dernier) sont transformés en caractères lors de l'envoi vers le Moniteur Série. Il est donc normal que la valeur 97 redevienne un "a" au moment de l'envoi vers le moniteur série.
 +
 +
=== Autres Transactions ===
 +
Les autres transactions sont des variantes des informations déjà décrites.
 +
 +
Vous ne devriez plus avoir de problèmes pour les décoder.
 +
   
    
{{ArduPi-I2C-TRAILER}}
 
{{ArduPi-I2C-TRAILER}}
29 917

modifications

Menu de navigation