IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

problèmes programme et retour


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    agent de maitrise
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : agent de maitrise

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Par défaut problèmes programme et retour
    bonjour a tous

    je viens chercher de l'aide auprès de vous car je n'arrive pas a solutionner.

    je fait un topo sur mon projet:

    Une télécommande basé sur des modules nrf24L01 qui fonctionne très bien sur le principe de "j'envoie un message, le récepteur le reçoit et allume la sortie correspondante" --> sur ce point la base fonctionne.

    maintenant le premier problème est le suivant:

    je cherche n'utilisé qu'un seul bouton poussoir pour faire une action (un HIGH et ensuite un LOW) sur une sortie j'ai donc écrit un petit bout de code de manière à faire fonctionner le systeme sur ce principe.

    tout se passe bien quand le récepteur reçois le message la sortie passe a 1.
    Lorsque j'appuie sur le bouton une nouvelle fois le récepteur s'aiguille bien vers la partie else du code mais valide d'elle même la phrase en rouge du programme sans que je n'appuie sur le BP et je ne comprend pas pourquoi....

    Code : 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    void loop() {
    
      byte message[8];
    
      if(Mirf.dataReady()){
        Mirf.getData(message); // Réception du paquet
    
      if (strcmp((char*) message, "VPCPMNT") == 0) {
          digitalWrite(LEDRX, HIGH);                                                     
          delay(1100);                                                                    
          digitalWrite(LEDRX, LOW);                                                       
          byte message[8] = "OK-MPAN";                                                   
          Serial.println("envoie du message au recepteur !");                             
          Mirf.send(message);                                                                              
          while(Mirf.isSending()); // On attend la fin de l'envoi
          digitalWrite(interne, HIGH); 
          delay(1100);
          digitalWrite(interne, LOW); 
          Serial.println("fin de l'envoie");                                              
          delay (1100);  
          int a;
          a = digitalRead(relaisp);
        if (a == 0)
        {
        digitalWrite(buzzer, HIGH);                                                     
          Serial.println("signalisation!");                                 
          delay(2100);                                                                    
          digitalWrite(buzzer, LOW);                                                      
          digitalWrite(relaisp, HIGH);                                              
          Serial.println("montée ");                                         
          Serial.println("pret - ");
          delay (2100);
        }
        else
        {
        digitalWrite(buzzer, HIGH);                                                                                                                      
            Serial.println("signalisation !");                                                                                                   
            delay(1100);                                                                                                                                        
            digitalWrite(buzzer, LOW);                                                                                                                          
            delay(2100);                                                                                                                                     
             if (strcmp((char*) message, "VPCPMNT") == 0) {                                                                                                                   
            }
            Serial.println("validation !");                                                                                                      
            delay(1100);                                                                                                                                        
            digitalWrite(buzzer, HIGH);                                                                                                                        
            delay(3000);                                                                                                                                       
            digitalWrite(buzzer, LOW);                                                                                                                          
            digitalWrite(relaisp, LOW);                                                                                                                     
            Serial.println("descente ");                                                                                                          
            delay(1100);                                                                                                                                      
            Serial.println("pret "); }
            delay (2100);
    
            } 
    } 
    }
    Mon deuxième soucis réside dans la création d'un accusé de réception (phrase en vers) qui devrait être renvoyé vers l’émetteur afin de me dire si oui ou non le message est arrivé au bout mais la aussi pour le moment l’émetteur me marque systématiquement message non reçu. pour la partie ELSE je souhaite aussi avoir une condition de temps à savoir par exemple 4 secondes pour etre sur d'avoir le temps de retour du message

    le code

    Code : 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
    void loop() {
     
      // Lit l'état des boutons
      if (digitalRead(PIN_P) == LOW) {
        Serial.println("Signal P !");
        LCD.begin(16,2); 
        LCD.clear(); 
        LCD.print("commande"); 
        LCD.setCursor(0,1); 
        LCD.print("envoie en cours"); 
        delay(1100);
        byte message[8] = "VPCPMNT";
        Serial.println("envoie du message au recepteur !");
        Mirf.send(message); 
        while(Mirf.isSending()); 
        delay (100);
        Mirf.getData(message); 
        if (strcmp((char*) message, "OK-MPAN")== 0 )
        {
        LCD.begin(16,2); 
        LCD.clear(); 
        LCD.print("commande "); 
        LCD.setCursor(0,1); 
        LCD.print("reception ok"); 
        Serial.println("message recu");
        }
        else
        {
        LCD.begin(16,2); 
        LCD.clear(); 
        LCD.print("commande "); 
        LCD.setCursor(0,1); 
        LCD.print("erreur reception"); 
        Serial.println("message non recu");
        }
        delay (100);

    est ce que quelqu'un peut me filer un bon coup de pouce?

    les cartes utilisées sont une UNO et une nano

    merci à tous

  2. #2
    Nouveau candidat au Club
    Homme Profil pro
    agent de maitrise
    Inscrit en
    Avril 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : agent de maitrise

    Informations forums :
    Inscription : Avril 2019
    Messages : 2
    Par défaut
    l'idée final en grafcet minimaliste c'est ca Nom : garfcet minimaliste.jpg
Affichages : 113
Taille : 65,1 Ko

Discussions similaires

  1. [DOM][Java] Problème avec le retour de getNodeName()
    Par anutka dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 11/04/2012, 21h38
  2. [Problème] Programme huit reines
    Par thegreatbato dans le forum C
    Réponses: 20
    Dernier message: 04/05/2006, 22h04
  3. Problème programmation : log
    Par rootsl dans le forum C
    Réponses: 4
    Dernier message: 29/03/2006, 11h26
  4. Problème programmation objet
    Par Contrec dans le forum MFC
    Réponses: 54
    Dernier message: 30/03/2005, 11h30
  5. Réponses: 4
    Dernier message: 10/06/2004, 18h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo