Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème utilisation Serial.println() avec Mirf

    20 janvier 2018 à 18:43:25

    Bonjour,

    J'essaye de faire communiquer entre elles 2 arduino. Pour l'instant, mon programme ne fonctionne pas encore donc j'essaye de le débuguer en utilisant Serial.println(). Seulement, j'ai l'impression que Mirf et Serial.println() ne s'aiment pas. Voici mon code :

    byte** bouton=NULL;
    int nbBoutons=5;
    byte* tab=NULL;
    byte** temp=NULL;
    
    void setup() {
      
      Serial.begin(9600);
      
      Mirf.cePin = 9; // Broche CE sur D9
      Mirf.csnPin = 10; // Broche CSN sur D10
      Mirf.spi = &MirfHardwareSpi; // On veut utiliser le port SPI hardware //pb ici
      Mirf.init(); // Initialise la bibliothèque
      Mirf.channel = 90; // Choix du canal de communication (128 canaux disponibles, de 0 à 127)
      Mirf.payload = sizeof(byte); // Taille d'un message (maximum 32 octets)
      Mirf.config(); // Sauvegarde la configuration dans le module radio
      Mirf.setTADDR((byte *) "adr01"); // Adresse de transmission
      Mirf.setRADDR((byte *) "adr02"); // Adresse de réception
      Serial.println("je passe ici");
    
      for (byte i=0;i<nbBoutons;i++) {
        bouton[i][0]=i+2; 
    }
    }
    void loop(){
    }

    Lorsque je commente la derniere ligne ( bouton[i][0]=i+2), le message "je passe ici" dans le moniteur s'affiche bien mais lorsque je la décommente, seulement "je" s'affiche dans le moniteur. J'ai mis là un exemple de bug dans le moniteur mais il y en a pleins d'autres selon que je commente ou décommente certaines lignes de mon programme. C'est la première fois que je rencontre un problème de ce type avec Serial.println et c'est la première fois que j'utilise Mirf donc je présume que le problème vient de là mais je ne vois pas du tout sa cause. Pourriez vous m'aider s'ils vous plaît ?

    -
    Edité par gundertaker 20 janvier 2018 à 21:25:00

    • Partager sur Facebook
    • Partager sur Twitter
      20 janvier 2018 à 21:13:39

      Bonsoir,

      1. Le programme indiqué n'est pas celui qui a été utilisé, il ne compile pas.

      2. déclarer des pointeurs sur des variables non dimensionnées, m'amène à penser que bouton[i][0]=i+2  écrit n'importe où, avec des effets de bord à la clé.

      • Partager sur Facebook
      • Partager sur Twitter
        20 janvier 2018 à 21:19:49

        Bonsoir,

        Désolé il manque juste un crochet fermant à la fin.

        Qu'entendez-vous par 'non dimensionnées' ?

        edit : ah vous voulez dire que le problème vient du fait que j'initialise mes pointeurs à NULL ? Si oui, pourquoi est-ce un problème ?

        -
        Edité par gundertaker 20 janvier 2018 à 21:22:20

        • Partager sur Facebook
        • Partager sur Twitter
          21 janvier 2018 à 7:45:33

          gundertaker a écrit:

          edit : ah vous voulez dire que le problème vient du fait que j'initialise mes pointeurs à NULL ? Si oui, pourquoi est-ce un problème ?-

          Initialiser un pointeur à Null, n'est pas un problème. Il faut, avant de l'utiliser, affecter ce pointeur sur une zone mémoire dont la dimension est en adéquation avec ce que l'on va utiliser. Ici je n'en voit pas.


          on ce serait attendu à avoir quelque chose de plus habituel comme :

          #define NBBOUTONS 5
          byte boutons[NBBOUTONS];
          
          ...
          
          


          Là au moins on a réservé une zone mémoire de 6 octets. On peut y affecter un pointeur si l'on veut ou encore mieux utiliser la variable tableau directement.


          -
          Edité par clgbzh 21 janvier 2018 à 7:52:25

          • Partager sur Facebook
          • Partager sur Twitter
            1 février 2018 à 17:05:09

            Merci de votre aide, mon problème est résolu.
            • Partager sur Facebook
            • Partager sur Twitter

            Problème utilisation Serial.println() avec Mirf

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown