Bonjour,

J'ai un petit pb de compréhension.

J'utilise deux arduino en liaison serie.
ARDUINO MEGA (maitre)

Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 #include <Wire.h>
 
#include <IRremote.h>
int RECV_PIN = 2; // pin de communication IR
IRrecv irrecv(RECV_PIN);
decode_results results;
 
void setup()
{
Wire.begin(); // Rejoindre le bus I2C (Pas besoin d adresse pour le maitre)
}
 
void loop()
{
Wire.beginTransmission(9); // Envoyer vers device #9
Wire.write(1); // Envoi un 1
Wire.endTransmission(); // Arreter la transmission
delay(1000); // Attendre 1s
 
Wire.beginTransmission(9); // Envoyer vers device #9
Wire.write(0); // Envoi un 0
Wire.endTransmission(); // Arreter la transmission
delay(5000); // Attendre 2s
}

et ARDUINO UNO (esclave)


Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <Wire.h>                                   // BUS I2C
const int Monter = 2;                               // Pin 2: pilote pour monter TV
const int Descendre = 3;                            // Pin 3: pilote pour descendre TV
 
void setup()
{
Wire.begin(9);                                      // Bus de l'eclave 1 (adresse 9)
Wire.onReceive(receiveEvent);                       // Preparer une fonction spécifique a la reception de donnee
Serial.begin(9600);                                 // Demarrer la liaison serie avec le PC
pinMode(Monter,OUTPUT);                             // la sortie pin 2 pour monter
pinMode(Descendre,OUTPUT);                          // la sortie pin 3 pour descendre
}
 
void loop()
{
  delay(100);
}
 
void receiveEvent(int howMany)                      // Fonction qui s execute si quelque chose est present sur l interface
 
{
  int x = Wire.read();                              // recevoir un chiffre
  Serial.println(x);                                // afficher ce chiffre sur l'interface serie
 
  if(x == 1)                                        // si x est equivalent a la donnée recu, c'est a dire 1
 
      {
          digitalWrite(Monter,HIGH);                // allumer L1
          digitalWrite(Descendre,LOW);              // allumer L1
      }
 
  if(x == 0)                                        //si x est equivalent a la donnée recu, c'est a dire 0
 
      {
          digitalWrite(Monter,LOW);                 // eteindre L1
          digitalWrite(Descendre,HIGH);             // eteindre L1
      }
}
dont voila les programmes.
Je veux utiliser une telecommande IR avec son recepteur et tout ca est connecté sur la mega (maitre) afin de piloté a travers la liaison serie la UNO.
j'ai les code de chaque touche de la telecommande mais je ne sais pas comment faire pour dire:
appui touche 1 = envoie wire.write(1);
appui touche 2 = envoie wire.write(0);
ainsi de suite...

merci pour votre aide
Cordialement