je viens trouver de l'aide auprès de vous car je sèche vraiment et je n'arrive pas a me dépatouille de ça
J'ai écrit un programme pour faire une télécommande nrf, ça fonctionne en émission réception etc sur ce point la c'est parfait.
en revanche il y as deux point qui ne fonctionne pas....
le premier mon écran LCD je n'ai rien qui s'affiche (le rétroéclairage fonctionne) mais j'ai utiliser les pin A0 à A5 je pense qu'il doit y avoir le type de sortie a déclarer
le deuxième c'est ma divergence en OU j'aimerai que le récepteur me renvoie un accusé de réception et que sur l’émetteur ça me disent si oui ou non le message est arrivé
de ce style la
if (digitalRead(PIN_AD2) == LOW) {
Serial.println("Signal AD !");
LCD.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
LCD.clear(); // on efface l'écran
LCD.print("commande AD2"); // on écrit un message
LCD.setCursor(0,1); //on passe à la ligne suivante
LCD.print("envoie en cours"); // on finit d'écrire
delay (1100);
byte message[8] = "VPCADD2";
Serial.println("Signal ADD2 !");
Mirf.send(message); // On envoie le message circuit AD2
Serial.println("envoie du message au recepteur !");
while(Mirf.isSending()); // On attend la fin de l'envoi
-------------------------------------------------------------------------------------fonction à rajouter
"si le recepteur renvoie le OK-ADD2 message on écrit sur le LCD message reçu"
"si le recepteur ne renvoie rien au bout d'un Temps donné on ecrit sur le LCD pas de message reçu et
on retourne au debut du programme"
-------------------------------------------------------------------------------------fonction à rajouter
LCD.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
LCD.clear(); // on efface l'écran
LCD.print("commande AD2"); // on écrit un message
LCD.setCursor(0,1); //on passe à la ligne suivante
LCD.print("fin d'envoie"); // on finit d'écrire
Serial.println("fin de l'envoie");
j'ai essayé de bricoler a base de if et else dans le programme mais j'ai systématiquement du orange ou du rouge donc je désespère....
Je met mon code en fin de topic et si quelqu'un peut m'aider je le remercie d'avance
[code]#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
#include <LiquidCrystal.h> // on importe la bibliothèque LCD
const byte PIN_P = 5;
const byte PIN_AD1 = 4;
const byte PIN_AD2 = 3;
const byte PIN_LEDRX = A0;
LiquidCrystal LCD(A0,A1,A2,A3,A4,A5); // on active l'ecran
void setup() {
Serial.begin(9600);
LCD.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
LCD.clear(); // on efface l'écran
LCD.print("bonjour"); // on écrit un message
LCD.clear(); // on efface l'écran
LCD.print("Valise 2019,"); // on écrit un message
LCD.setCursor(0,1); //on passe à la ligne suivante
LCD.print("PRET"); // on finit d'écrire
pinMode(PIN_P, INPUT_PULLUP);
pinMode(PIN_AD1, INPUT_PULLUP);
pinMode(PIN_AD2, INPUT_PULLUP);
pinMode(PIN_LEDRX, 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 = 1; // Choix du canal de communication (128 canaux disponibles, de 0 à 127)
Mirf.payload = 8; // 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("Testeur pret -");
}
void loop() {
// Lit l'état des boutons
if (digitalRead(PIN_Panto) == LOW) {
Serial.println("Signal Panto !");
LCD.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
LCD.clear(); // on efface l'écran
LCD.print("commande panto"); // on écrit un message
LCD.setCursor(0,1); //on passe à la ligne suivante
LCD.print("envoie en cours"); // on finit d'écrire
delay(1100);
byte message[8] = "VPCPMNT";
Serial.println("envoie du message au recepteur !");
Mirf.send(message); // On envoie le message d'action
while(Mirf.isSending()); // On attend la fin de l'envoi
LCD.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
LCD.clear(); // on efface l'écran
LCD.print("commande "); // on écrit un message
LCD.setCursor(0,1); //on passe à la ligne suivante
LCD.print("fin d'envoie"); // on finit d'écrire
Serial.println("fin de l'envoie");
delay(100);
Serial.println("en attente de relachement bouton");
LCD.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
LCD.clear(); // on efface l'écran
LCD.print("commande "); // on écrit un message
LCD.setCursor(0,1); //on passe à la ligne suivante
LCD.print("relacher BP"); // on finit d'écrire
while (digitalRead(PIN_P) == LOW)
delay(100);
LCD.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
LCD.clear(); // on efface l'écran
LCD.print("fin d'action,"); // on écrit un message
LCD.setCursor(0,1); //on passe à la ligne suivante
LCD.print("Valise prete"); // on finit d'écrire
Serial.println("emeteur pret -);
}
if (digitalRead(PIN_AD1) == LOW) {
Serial.println("Signal AD !");
LCD.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
LCD.clear(); // on efface l'écran
LCD.print("commande AD1"); // on écrit un message
LCD.setCursor(0,1); //on passe à la ligne suivante
LCD.print("envoie en cours"); // on finit d'écrire
delay (1100);
byte message[8] = "VPCAD1";
Serial.println("Signal AD1 !");
Mirf.send(message); // On envoie le message circuit AD1
Serial.println("envoie du message au recepteur !");
while(Mirf.isSending()); // On attend la fin de l'envoi
LCD.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
LCD.clear(); // on efface l'écran
LCD.print("commande AD1"); // on écrit un message
LCD.setCursor(0,1); //on passe à la ligne suivante
LCD.print("fin d'envoie"); // on finit d'écrire
Serial.println("fin de l'envoie");
delay(100);
Serial.println("en attente de relachement bouton");
LCD.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
LCD.clear(); // on efface l'écran
LCD.print("commande AD1"); // on écrit un message
LCD.setCursor(0,1); //on passe à la ligne suivante
LCD.print("relacher BP"); // on finit d'écrire
while (digitalRead(PIN_AD1) == LOW)
delay(100);
LCD.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
LCD.clear(); // on efface l'écran
LCD.print("fin d'action,"); // on écrit un message
LCD.setCursor(0,1); //on passe à la ligne suivante
LCD.print("Valise prete"); // on finit d'écrire
Serial.println("emeteur pret - ");
}
if (digitalRead(PIN_AD2) == LOW) {
Serial.println("Signal AD !");
LCD.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
LCD.clear(); // on efface l'écran
LCD.print("commande AD2"); // on écrit un message
LCD.setCursor(0,1); //on passe à la ligne suivante
LCD.print("envoie en cours"); // on finit d'écrire
delay (1100);
byte message[8] = "VPCADD2";
Serial.println("Signal ADD2 !");
Mirf.send(message); // On envoie le message circuit AD2
Serial.println("envoie du message au recepteur !");
while(Mirf.isSending()); // On attend la fin de l'envoi
LCD.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
LCD.clear(); // on efface l'écran
LCD.print("commande AD2"); // on écrit un message
LCD.setCursor(0,1); //on passe à la ligne suivante
LCD.print("fin d'envoie"); // on finit d'écrire
Serial.println("fin de l'envoie");
delay(100);
Serial.println("en attente de relachement bouton");
LCD.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
LCD.clear(); // on efface l'écran
LCD.print("commande AD2"); // on écrit un message
LCD.setCursor(0,1); //on passe à la ligne suivante
LCD.print("relacher BP"); // on finit d'écrire
while (digitalRead(PIN_AD2) == LOW)
delay(100);
LCD.begin(16,2); //on initialise la communication avec 16 colonnes et deux lignes
LCD.clear(); // on efface l'écran
LCD.print("fin d'action,"); // on écrit un message
LCD.setCursor(0,1); //on passe à la ligne suivante
LCD.print("Valise prete"); // on finit d'écrire
Serial.println("emeteur pret - ");
}
}