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)
dont voila les programmes.
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 } }
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
Partager