Modifications

Sauter à la navigation Sauter à la recherche
3 536 octets ajoutés ,  6 avril 2013 à 21:05
Page créée avec « {{ArduPi-I2C-NAV}} == Arduino == {{bloc-etroit | text = Commençons par le programme Arduino, c'est le plus simple. Comme déjà précisé, c'est un <strong>Slave Listene... »
{{ArduPi-I2C-NAV}}

== Arduino ==

{{bloc-etroit | text = Commençons par le programme Arduino, c'est le plus simple.

Comme déjà précisé, c'est un <strong>Slave Listener</strong> (esclave qui écoute). Il reçoit des informations en provenance du Raspberry-Pi sur le bus I2C.

Il se contente simplement de les 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>

== Compiler et Charger ==
Compiler le programme et charger le sur votre Arduino.

== Tester l'esclave ==
Le programme esclave utilise l'adresse #4 (0x04) sur le Bus I2C.

Il est assez simple de vérifier la présence de l'esclave sur le bus I2C depuis le Raspberry Pi.

En effet, il existe le programme '''i2cdetect''' qui permet de détecter la présence d'un périphérique I2C sur le bus.

<nowiki>sudo i2cdetect 1</nowiki>

Si votre Arduino est correctement raccordé et le programme en cours de fonctionnement, vous verrez le résultat suivant:

<nowiki>WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-1.
I will probe address range 0x03-0x77.
Continue? [Y/n] y
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- 04 -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- -- </nowiki>

Notez l'adresse 04 active qui correspond justement à notre Arduino :-)

{{ArduPi-I2C-TRAILER}}
29 917

modifications

Menu de navigation