Ligne 51 : |
Ligne 51 : |
| | | |
| Vous pouvez également utiliser la [[PI-Easy-Copy-Paste|méthode Pi-Copier/Pi-Coller]] pour copier/coller facilement le code dans '''MasterWriter.py''' | | Vous pouvez également utiliser la [[PI-Easy-Copy-Paste|méthode Pi-Copier/Pi-Coller]] pour copier/coller facilement le code dans '''MasterWriter.py''' |
| + | |
| + | === MasterWriter.py prêt? === |
| + | Voila, si tout est correctement préparé, la commande commande ls suivante: |
| + | <nowiki>ls ~/ArdPi-I2C/Pi/MasterWriter</nowiki> |
| + | |
| + | Affiche la liste des fichiers où les éléments suivants doivent être visible: |
| + | <nowiki>Adafruit_I2C.py MasterWriter.py</nowiki> |
| | | |
| == Programme MasterWriter.py == | | == Programme MasterWriter.py == |
| + | |
| + | === Support de l'adressage par registre === |
| + | |
| + | Pour commencer, la librairie AdaFruit_I2C supporte le mode d'adressage par Registre (voir [[Arduino I2C Intro|notre tutoriel d'intro à I2C]]). |
| + | |
| + | Si cela n'est pas utilise dans le cadre du présent exemple, cette fonctionnalité se montrera très pertinente dans de nombreuses implémentations. |
| + | |
| + | Le numéro de registre consiste en un byte/octet qui est envoyé en début de transmission I2C vers l'esclave. |
| + | |
| + | Plutôt que d'essayer de se battre pour éliminer cet octet gênant, nous allons simplement envoyer une valeur de registre quelconque que nous allons ignorer dans notre programme Arduino SlaveListener! |
| + | |
| + | === Fonctionnement en quelques mots === |
| + | Le programme MasterWriter.py établit une connexion avec l'esclave 0x04 (donc notre Arduino programmé avec SlaveListerner) et envoi une série de message. |
| + | |
| + | Le programme MasterWriter.py effectue les opérations d'envoi dans l'ordre suivant: |
| + | * write8( 0, 0x40 )<br />Envoi d'un seul octet (valeur 0x40 en hexa, 64 en décimal, correspond au caractère "@" en ascii) sur le registre 0. |
| + | * writeList( 0x35, [ord('a'),ord('b'),ord('c'),110] )<br />envoi une série d'octet correspond respectivement au code ascii de abc pour finallement envoyer la valeur numérique 110. Le tout est envoyé dans le registre 0x35 (valeur 0x35 en hexa, 53 en decimal, correspond au caractère "5" en ascii) |
| + | * Finalement, l'envoi de 3 messages distincts sur le registre 0x35 contenant les code ascii des caractères "valeur=" suivit d'une valeur numérique de 0 à 2. |
| + | |
| + | === Le programme === |
| | | |
| <nowiki>#!/usr/bin/env python | | <nowiki>#!/usr/bin/env python |
Ligne 105 : |
Ligne 132 : |
| i2c.writeList( 0x35, __liste ) | | i2c.writeList( 0x35, __liste ) |
| time.sleep(0.100)</nowiki> | | time.sleep(0.100)</nowiki> |
| + | |
| + | == Executer le programme == |
| + | |
| + | {{ambox-stop|text=Les résultats de ce programme sont visibles dans le "Moniteur Série" d'Arduino IDE.<br />N'oubliez donc pas de charger SlaverListerner sur votre Arduino et de démarrer le moniteur série.}} |
| + | |
| + | Le programme s'exécute simplement comme suit: |
| + | |
| + | <nowiki>cd ~/ArdPi-I2C/Pi/MasterWriter |
| + | sudo python MasterWriter.py</nowiki> |
| + | |
| + | {{ambox|text=Il est important d'utiliser <strong>sudo</strong> pour que Python puisse accéder librement au GPIO!}} |
| | | |
| {{ArduPi-I2C-TRAILER}} | | {{ArduPi-I2C-TRAILER}} |