Modifications

Sauter à la navigation Sauter à la recherche
4 950 octets ajoutés ,  4 avril 2013 à 21:03
aucun résumé de modification
Ligne 1 : Ligne 1 :  
{{Arduino-I2C-Intro-NAV}}
 
{{Arduino-I2C-Intro-NAV}}
   −
== Programme "Master Reader" ==
+
== Programme "Master Writer" ==
    
{{bloc-etroit | text = Comme précisé plus avant dans la documentation, en "Master Writer", le Maître envoi un message à esclave et n'attend aucune réponse en retour.}}
 
{{bloc-etroit | text = Comme précisé plus avant dans la documentation, en "Master Writer", le Maître envoi un message à esclave et n'attend aucune réponse en retour.}}
Ligne 11 : Ligne 11 :  
== Programme du Maître ==
 
== Programme du Maître ==
 
Voici le programme issu de l'article [http://arduino.cc/en/Tutorial/MasterWriter "Arduino - MasterReader" sur Arduino.cc].
 
Voici le programme issu de l'article [http://arduino.cc/en/Tutorial/MasterWriter "Arduino - MasterReader" sur Arduino.cc].
   
+
 
 +
  <nowiki>// Librairie Wire - Master Writer (Maitre ecrit)
 +
// 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.
 +
// Ecrit des données vers un périphérique esclave I2C/TWI
 +
//
 +
// 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)
 +
}
 +
 
 +
byte x = 0;
 +
 
 +
void loop()
 +
{
 +
  Wire.beginTransmission(4); // Commencer transmission vers l'esclave  #4
 +
  Wire.write("x is ");      // Envoi de 5 octets (5 bytes)
 +
  Wire.write(x);            // envoi d'un byte/octet (valeur numérique) 
 +
  Wire.endTransmission();    // fin transmission
 +
 
 +
  x++;
 +
  delay(500); // delay de 500 ms
 +
}</nowiki>
 +
 
 +
== Programme de l'esclave ==
 +
Et voici le programme correspondant provenant de l'exemple.
 +
 
 +
<nowiki>// Librairie Wire - Master Writer (Maitre ecrit)
 +
// 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.
 +
// Ecrit des données vers un périphérique esclave I2C/TWI
 +
//
 +
// 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(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)
 +
{
 +
  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>
 +
 
 +
== Comment tester ==
 +
{{ambox-stop | text = ATTENTION!!! le raccordement d'alimentation est modifié par rapport à '''Master Reader'''!!!}}
 +
 
 +
=== Programmation ===
 +
* Brancher l'Arduino Maître et programmez le.
 +
* Brancher l'Arduino Esclave 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. '''cette fois, ce sera l'esclave qui sera alimenté par le câble USB et le Maître qui sera alimenté par l'esclave'''.
 +
 
 +
# Raccordez les BROCHES GND des deux Arduino ensembles
 +
# Effectuez les raccordement tels que précisés dans la section Montage
 +
# <font color="red">Brancher le 5v de l'ESCLAVE -> Vin du maitre</font> (''permet au maître d'être alimenté par l'esclave'')
 +
 
 +
=== Résultats ===
 +
# Branchez le cable USB sur l'esclave (''cette fois ci, c'est lui qui renvoi les ordres reçu du maître'').
 +
# Ouvrez le moniteur Serie d'Arduino (9600 bauds).
 +
 
 +
Vous devriez voir arriver les ordres suivant reçu par l'ESCLAVE apparaître sur le port série
 +
 
 +
<nowiki>x is 0
 +
...
 +
x is 14
 +
x is 15
 +
x is 16
 +
x is 17
 +
x is 18
 +
x is 19
 +
... </nowiki>
 +
 
 +
=== Fonctionnement en quelques mots ===
 +
Le fonctionnement est relativement simple mais démontre très bien le concept "Master Reader".
 +
 
 +
# Le Maître envoi un message/commande de 6 octets (bytes, 5 octets/bytes de texte + 1 valeur numérique codée sur 1 octet/bytes) à l'esclave sur le bus I2C
 +
# L'esclave reçoit l'ordre sur le bus I2C
 +
# L'esclave relaye l'ordre reçu 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/WireBeginTransmission Wire.beginTransmission()]
 +
* [http://arduino.cc/en/Reference/WireEndTransmission Wire.endTransmission()]
 +
* [http://arduino.cc/en/Reference/WireSend Wire.send()] '''maintenant nommée write()'''
 +
* [http://arduino.cc/en/Reference/WireOnReceive Wire.OnReceive()]
 +
* [http://arduino.cc/en/Reference/WireAvailable Wire.available()]
    
{{Arduino-I2C-Intro-TRAILER}}
 
{{Arduino-I2C-Intro-TRAILER}}
29 917

modifications

Menu de navigation