I2C mega(maitre) uno(esclave) + IR
Bonjour,
J'ai un petit pb de compréhension.
J'utilise deux arduino en liaison serie.
ARDUINO MEGA (maitre)
Code:
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:
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