désolé pour le retard
voila le code complet
émetteur
#include <SPI.h> // Pour la communication via le port SPI
#include <Mirf.h> // Pour la gestion de la communication
#include <nRF24L01.h> // Pour les définitions des registres du nRF24L01
#include <MirfHardwareSpiDriver.h> // Pour la communication SPI
int CodeCommande = 0;
const int boutB = A3;
const int boutD = A5;
const int boutH = A1;
const int boutG = A4;
const int boutM = A2;
typedef struct {
int commande;
int valeur;
} MaStructure;
void setup() {
Serial.begin(9600);
pinMode(boutB, INPUT_PULLUP);//navigation menu bouton BAS
pinMode(boutD, INPUT_PULLUP);//Changement valeur
pinMode(boutH, INPUT_PULLUP);// bouton Haut
pinMode(boutG, INPUT_PULLUP);
pinMode(boutM, INPUT_PULLUP);
Mirf.cePin = 9; // Broche CE sur D9
Mirf.csnPin = 10; // Broche CSN sur D10
Mirf.spi = &MirfHardwareSpi; // On veut utiliser le port SPI hardware
Mirf.init(); // Initialise la bibliothèque
Mirf.channel = 116; // Choix du canal de communication (128 canaux disponibles, de 0 à 127)
Mirf.payload = sizeof(MaStructure); // Taille d'un message (maximum 32 octets)
Mirf.config(); // Sauvegarde la configuration dans le module radio
Mirf.setTADDR((byte *) "nrf02"); // Adresse de transmission
Mirf.setRADDR((byte *) "nrf01"); // Adresse de réception
Serial.println("Go !");
}
void EnvoiCommande(int TypeCommande) {
MaStructure message;
message.commande = TypeCommande;
message.valeur = 116;
Mirf.send((byte*) &message); // On envoie le message
while (Mirf.isSending()); // On attend la fin de l'envoi
}
void loop() {
if (digitalRead(boutB)== LOW){ EnvoiCommande(1);} // ou ne serait-ce pas if (digitalRead(boutB) == LOW) EnvoiCommande(1); puisqu'en input pullup?
if (digitalRead(boutD)== LOW){ EnvoiCommande(2);}
if (digitalRead(boutH)== LOW) {EnvoiCommande(3);}
if (digitalRead(boutG)== LOW) {EnvoiCommande(4);}
if (digitalRead(boutM)== LOW) {EnvoiCommande(5);}
}
et le récepteur
/**
Exemple de code pour la bibliothèque Mirf – Sonnette DIY (récepteur)
*/
#include <SPI.h> // Pour la communication via le port SPI
#include <Mirf.h> // Pour la gestion de la communication
#include <nRF24L01.h> // Pour les définitions des registres du nRF24L01
#include <MirfHardwareSpiDriver.h> // Pour la communication SPI
int DS_pin = 3;
int STCP_pin = 4;
int SHCP_pin = 5;
typedef struct {
int commande;
int valeur;
} MaStructure;
int desplay[10][7] = {
{1, 1, 1, 1, 1, 1, 0}, //0
{0, 1, 1, 0, 0, 0, 0}, //1
{1, 1, 0, 1, 1, 0, 1}, //2
{1, 1, 1, 1, 0, 0, 1}, //3
{0, 1, 1, 0, 0, 1, 1}, //4
{1, 0, 1, 1, 0, 1, 1}, //5
{1, 0, 1, 1, 1, 1, 1}, //6
{1, 1, 1, 0, 0, 0, 0}, //7
{1, 1, 1, 1, 1, 1, 1}, //8
{1, 1, 1, 1, 0, 1, 1} //9
};
void setup() {
Serial.begin(9600);
pinMode(DS_pin, OUTPUT);
pinMode(STCP_pin, OUTPUT);
pinMode(SHCP_pin, OUTPUT);
Mirf.cePin = 9; // Broche CE sur D9
Mirf.csnPin = 10; // Broche CSN sur D10
Mirf.spi = &MirfHardwareSpi; // On veut utiliser le port SPI hardware
Mirf.init(); // Initialise la bibliothèque
Mirf.channel = 116; // Choix du canal de communication (128 canaux disponibles, de 0 à 127)
Mirf.payload = sizeof(MaStructure); // Taille d'un message (maximum 32 octets)
Mirf.config(); // Sauvegarde la configuration dans le module radio
Mirf.setTADDR((byte *) "nrf01"); // Adresse de transmission
Mirf.setRADDR((byte *) "nrf02"); // Adresse de réception
Serial.println("Go !");
}
boolean registers[8];
void writereg()
{
digitalWrite(STCP_pin, LOW);
for (int i = 7; i >= 0; i--)
{
digitalWrite(SHCP_pin, LOW);
digitalWrite(DS_pin, registers[i] );
digitalWrite(SHCP_pin, HIGH);
}
digitalWrite(STCP_pin, HIGH);
}
void loop() {
MaStructure message;
// for (int j = 0; j< 9 ; j++){
// for (int i = 0; i < 7; i++) {
//registers[i] = desplay[j][i];
// }
// delay(1000); writereg();
// }
if (Mirf.dataReady()) {
Mirf.getData((byte*) &message);
switch (message.commande) {
case 1:
{
for (int i = 0; i < 7; i++) {
registers[i] = desplay[1][i];
}
delay(1000); writereg();
break;
}
case 2:
{
for (int i = 0; i < 7; i++) {
registers[i] = desplay[2][i];
}
delay(1000); writereg();
break;
}
case 3:
{
for (int i = 0; i < 7; i++) {
registers[i] = desplay[3][i];
}
delay(1000); writereg();
break;
}
case 4:
{
for (int i = 0; i < 7; i++) {
registers[i] = desplay[4][i];
}
delay(1000); writereg();
break;
}
case 5:
{
for (int i = 0; i < 7; i++) {
registers[i] = desplay[5][i];
}
delay(1000); writereg();
//break;
}
case 6:
{
for (int i = 0; i < 7; i++) {
registers[i] = desplay[6][i];
}
delay(1000); writereg();
break;
}
case 7:
{
for (int i = 0; i < 7; i++) {
registers[i] = desplay[7][i];
}
delay(1000); writereg();
break;
}
}
}
}
et ca ne marche toujours pas