Ligne 10 : |
Ligne 10 : |
| Dans cet exemple, le programme Arduino se content d'envoyer les informations reçues vers le Moniteur Série... ce qui permet d'espionner le processus de communication I2C. | | Dans cet exemple, le programme Arduino se content d'envoyer les informations reçues vers le Moniteur Série... ce qui permet d'espionner le processus de communication I2C. |
| | | |
− | == Arduino == | + | == Montage == |
− | Commençons par le programme Arduino, c'est le plus simple.
| + | Nous utilisons ici le [[ArduPi-I2C-Montage|montage général]] décrit dans ce tutoriel. |
| | | |
− | Comme déjà précisé, il reçoit des informations en provenance du Raspberry-Pi sur le bus I2C.
| |
− |
| |
− | Il se contente simplement de le renvoyer vers le Moniteur Série d'Arduino. Nous pourrons par la suite analyser le contenu de l'information et ainsi parfaire notre connaissance.
| |
− |
| |
− | === Programme SlaveListener ===
| |
− | Voici le contenu du programme Arduino. N'oubliez pas d'ouvrir le moniteur série d'Arduino pour voir ce qui passe sur le bus ;-)
| |
− |
| |
− | <nowiki>// === ArduPi-I2C ================================================
| |
− | // Communication entre Arduino et Raspberry Pi via le BUS I2C
| |
− | // ===============================================================
| |
− | // Tutoriel: http://mchobby.be/wiki/index.php?title=ArduPi-I2C
| |
− | //
| |
− | // Programme Esclave qui Recoit les données données envoyées par Raspberry Pi
| |
− | // S'utilise avec le programme Arduino MasterWriter.py
| |
− | //
| |
− | // Ecrit par D. Meurisse pour MCHobby.be
| |
− | // www.mchobby.be - Vente de kit et composant Arduino et Raspberry Pi
| |
− | // Licence CC-BY-SA
| |
− | //
| |
− | // Basé sur l'exemple de Nicholas Zambetti <http://www.zambetti.com>
| |
− | //
| |
− | #include <Wire.h>
| |
− |
| |
− | void setup()
| |
− | {
| |
− | Wire.begin(4); // Joindre le Bus I2C avec adresse #4
| |
− | Wire.onReceive(receiveEvent); // enregistrer l'événement (lorsqu'une demande arrive)
| |
− | Serial.begin(9600); // Démarrer une communication série
| |
− | }
| |
− |
| |
− | void loop()
| |
− | {
| |
− | delay(100);
| |
− | }
| |
− |
| |
− | // Fonction qui est exécutée lorsque des données sont envoyées par le Maître.
| |
− | // Cette fonction est enregistrée comme une événement ("event" en anglais), voir la fonction setup()
| |
− | void receiveEvent(int howMany)
| |
− | {
| |
− | Serial.println("---- READING ---");
| |
− | Serial.print("Number of Bytes: ");
| |
− | Serial.println( howMany );
| |
− | while(1 < Wire.available()) // Lire tous les octets sauf le dernier
| |
− | {
| |
− | char c = Wire.read(); // lecture de l'octet/byte comme caractère
| |
− | Serial.print(c); // afficher le caractère
| |
− | }
| |
− | int x = Wire.read(); // lecture de l'octet/byte ignoré comme un entier
| |
− | Serial.println(x); // Afficher la valeur numérique
| |
− | }
| |
− | </nowiki>
| |
| {{ArduPi-I2C-TRAILER}} | | {{ArduPi-I2C-TRAILER}} |