Modifications

Sauter à la navigation Sauter à la recherche
5 078 octets ajoutés ,  10 mars 2013 à 17:09
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}}
29 917

modifications

Menu de navigation