Arduino I2C Intro-MasterReader

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche

Programme "Master Reader"

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 tel que décrit dans les concepts:

Arduino-I2C-Intro-MasterReader.jpg

Programme du Maître

Voici le programme issu de l'article "Arduino - MasterReader" sur Arduino.cc.

// 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.
}

Programme de l'esclave

Voici le programme issu de l'article "Arduino - MasterReader" sur Arduino.cc.

// 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.
}

Comment tester

Programmation

  • Brancher l'Arduino esclave et programmez le.
  • Brancher l'Arduino Maître et programmez le.
  • Débranchez le tout.

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.

  1. Raccordez les BROCHES GND des deux Arduino ensembles
  2. Effectuez les raccordement tels que précisés dans la section Montage
  3. Brancher le 5v du MAITRE -> Vin de l'ESCLAVE (permet à l'esclave d'être alimenté par le maître)

Résultats

  1. Branchez le cable USB sur le Maître.
  2. 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".

  1. Le Maître réclame 6 octets (bytes) à l'esclave sur le bus I2C
  2. L'esclave répond "hello " sur le bus I2C
  3. 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 "Arduino - MasterReader" sur Arduino.cc vous propose plus d'informations. Vous y trouverez en autre la description des fonctions:


Réalisé par Meurisse D. pour MCHobby.be.

Contient également quelques images et exemples d'Arduino.cc, droits et copyrights sur ces ressources restant bien évidement à Arduino.cc.

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.