Ligne 1 : |
Ligne 1 : |
| {{Arduino-I2C-Intro-NAV}} | | {{Arduino-I2C-Intro-NAV}} |
| + | |
| + | == Programme "Master Reader" == |
| + | |
| + | {{bloc-etroit | text = Comme précisé plus avant dans la documentation en "Master Reader", le Maître interroge un esclave (réclame des octets) et attend une réponse de la part de ce dernier.}} |
| + | |
| + | Petit rappel en image [[Arduino I2C Intro-Maître et esclave|tel que décrit dans les concepts]]: |
| + | |
| + | [[Fichier:Arduino-I2C-Intro-MasterReader.jpg|640px]] |
| + | |
| + | == Programme du Maître == |
| + | Voici le programme issu de l'article [http://arduino.cc/en/Tutorial/MasterReader "Arduino - MasterReader" sur Arduino.cc]. |
| + | |
| + | <nowiki>// Librairie Wire - Master Reader (Maitre Lit) |
| + | // *** Programme pour le Maître - Le maître Lit *** |
| + | // |
| + | // par Nicholas Zambetti <http://www.zambetti.com> |
| + | // Traduction par MCHobby.be <http://www.mchobby.be> |
| + | // Montage & tutoriel détaillé disponibles sur |
| + | // http://mchobby.be/wiki/index.php?title=Arduino_I2C_Intro-Montage |
| + | // |
| + | // Démontre l'usage de la librairie Wire. |
| + | // Lectures de données depuis un périphérique I2C/TWI esclave. |
| + | // |
| + | // A utiliser avec le programme esclave de cet exemple. |
| + | // |
| + | // Crée le 29 mars 2006 |
| + | // Traduit le 9 mars 2013 (MCHobby) |
| + | // |
| + | // This example code is in the public domain. |
| + | // Ce code d'exemple fait partie du domaine public. |
| + | |
| + | #include <Wire.h> |
| + | |
| + | void setup() |
| + | { |
| + | Wire.begin(); // joindre le bus i2c (adresse est optionnelle pour un maître) |
| + | Serial.begin(9600); // démarré une communication série |
| + | } |
| + | |
| + | void loop() |
| + | { |
| + | Wire.requestFrom(2, 6); // lecture de 6 octets (bytes) depuis l'esclave #2 |
| + | |
| + | while(Wire.available()) // l'esclave pourrait envoyer moins de données qu'attendu |
| + | { |
| + | char c = Wire.read(); // Reception de l'octet (byte) comme caractère |
| + | Serial.print(c); // Affichage du caractère. |
| + | } |
| + | |
| + | delay(500); // Attendre une demi seconde. |
| + | }</nowiki> |
| + | |
| + | == Programme de l'esclave == |
| + | Voici le programme issu de l'article [http://arduino.cc/en/Tutorial/MasterReader "Arduino - MasterReader" sur Arduino.cc]. |
| + | |
| + | <nowiki>// Librairie Wire - Master Reader (Maitre Lit) |
| + | // *** Programme pour l' Esclave - L'esclave écrit *** |
| + | // |
| + | // par Nicholas Zambetti <http://www.zambetti.com> |
| + | // Traduction par MCHobby.be <http://www.mchobby.be> |
| + | // Montage & tutoriel détaillé disponibles sur |
| + | // http://mchobby.be/wiki/index.php?title=Arduino_I2C_Intro-Montage |
| + | // |
| + | // Démontre l'usage de la librairie Wire. |
| + | // Envoi des données sur le bus i2c en tant qu'esclave. |
| + | // |
| + | // A utiliser avec le programme Maître de cet exemple. |
| + | // |
| + | // Crée le 29 mars 2006 |
| + | // Traduit le 9 mars 2013 (MCHobby) |
| + | // |
| + | // This example code is in the public domain. |
| + | // Ce code d'exemple fait partie du domaine public. |
| + | |
| + | |
| + | #include <Wire.h> |
| + | |
| + | void setup() |
| + | { |
| + | Wire.begin(2); // Joindre le bus i2c avec l'adresse #2 |
| + | Wire.onRequest(requestEvent); // enregistrer l'événement (lorsqu'une demande arrive) |
| + | } |
| + | |
| + | void loop() |
| + | { |
| + | delay(100); // Attendre 100ms |
| + | } |
| + | |
| + | // Fonction qui est exécutée lorsque des données sont demandées par le Maître. |
| + | // Cette fonction est enregistrée comme une événement ("event" en anglais), voir la fonction setup() |
| + | void requestEvent() |
| + | { |
| + | Wire.write("hello "); // Répondre avec un message de 6 octets (bytes) |
| + | // comme attendu par le maître. |
| + | }</nowiki> |
| + | |
| + | == Comment tester == |
| + | === Programmation === |
| + | * Brancher l'Arduino esclave et programmez le. |
| + | * Brancher l'Arduino Maître et programmez le. |
| + | * Débranchez le tout. |
| + | |
| + | {{ambox-stop | text = Débranchez les Arduino des prises USB! Ils ne doivent pas être alimentés durant les raccordements}} |
| + | |
| + | === Raccordements === |
| + | Nous partirons du principe que vous ne disposez que d'une seule alimentation pour vos deux Arduino. |
| + | |
| + | Le Maître sera alimenté par le câble USB et le Maître alimentera l'Esclave. |
| + | |
| + | # Raccordez les BROCHES GND des deux Arduino ensembles |
| + | # Effectuez les raccordement tels que précisés dans la section Montage |
| + | # Brancher le 5v du MAITRE -> Vin de l'ESCLAVE (''permet à l'esclave d'être alimenté par le maître'') |
| + | |
| + | === Résultats === |
| + | # Branchez le cable USB sur le Maître. |
| + | # Ouvrez le moniteur Serie d'Arduino (9600 bauds). |
| + | |
| + | Vous devriez voir arriver les messages suivant envoyés par le Maître sur le port série |
| + | |
| + | hello hello hello ... |
| + | |
| + | === Fonctionnement en quelques mots === |
| + | Le fonctionnement est relativement simple mais démontre très bien le concept "Master Reader". |
| + | |
| + | # Le Maître réclame 6 octets (bytes) à l'esclave sur le bus I2C |
| + | # L'esclave répond "hello " sur le bus I2C |
| + | # Le Maître renvoi les caractères (byte/octet) reçu sur le bus I2C vers le port série. |
| + | |
| + | == En savoir plus == |
| + | L'article [http://arduino.cc/en/Tutorial/MasterReader "Arduino - MasterReader" sur Arduino.cc] vous propose plus d'informations. |
| + | Vous y trouverez en autre la description des fonctions: |
| + | * [http://arduino.cc/en/Reference/WireBegin Wire.begin()] |
| + | * [http://arduino.cc/en/Reference/WireRequestFrom Wire.RequestFrom()] |
| + | * [http://arduino.cc/en/Reference/WireReceive Wire.receive()] '''maintenant nommée write()''' |
| + | * [http://arduino.cc/en/Reference/WireSend Wire.send()] '''maintenant nommée read()''' |
| + | * [http://arduino.cc/en/Reference/WireOnRequest Wire.onRequest()] |
| | | |
| {{Arduino-I2C-Intro-TRAILER}} | | {{Arduino-I2C-Intro-TRAILER}} |