Go Down

Topic: demande d'aide sur LCD et fonction OU (Read 304 times) previous topic - next topic

DD91

bonjour a tous

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

Code: [Select]
 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

DD91



DD91

#1
Mar 24, 2019, 02:57 pm Last Edit: Mar 24, 2019, 03:06 pm by DD91
Code: [Select]
[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 - ");
   
    }
}

 
[/code]

Go Up