Partage
  • Partager sur Facebook
  • Partager sur Twitter

Boucle tableau

    3 avril 2020 à 17:15:45

    Bonjour ! J'ai un peu de mal avec un programme utilisant majoritairement un tableau :

    int pinLed[10]={4,5,6,7,8,9,10,11,12,13}; 
    boolean blinking[10][10]={
      1,0,0,0,0,0,0,0,0,1,
      0,0,0,0,0,0,0,0,0,0,
      0,1,0,0,0,0,0,0,1,0,
      0,0,0,0,0,0,0,0,0,0,
      0,0,1,0,0,0,0,1,0,0,
      0,0,0,0,0,0,0,0,0,0,
      0,0,0,1,0,0,1,0,0,0,
      0,0,0,0,0,0,0,0,0,0,
      0,0,0,0,1,1,0,0,0,0,
      0,0,0,0,0,0,0,0,0,0};
    boolean light[6][10]={
      0,0,0,0,1,1,0,0,0,0,
      0,0,0,0,0,0,0,0,0,0,
      0,0,0,0,1,1,0,0,0,0,
      0,0,0,0,0,0,0,0,0,0,
      0,0,0,0,1,1,0,0,0,0,
      0,0,0,0,0,0,0,0,0,0};
    void setup() {
      for (int i = 0; i < 10;i = i+1)
      {
        pinMode(pinLed[i],OUTPUT);
        digitalWrite(pinLed[i],LOW);
      }
    }
    
    void loop() {
    
     for(int w = 12; w > 0; w = w - 2){
       boolean blinking[w][10];
       for (int w = 0; w < 10 ;w = w + 1) 
      {
        for (int l = 0 ; l < 10 ;l = l+1) 
        {
          boolean etat=blinking[w][l]; 
          digitalWrite(pinLed[l],etat); 
        }
        delay(1000); 
      }
     }
    
      for (int i = 0; i < 6 ; i = i +1) 
      {
        for (int p = 0 ;p < 10 ; p = p + 1) 
        {
          boolean etat=light[i][p]; 
          digitalWrite(pinLed[p],etat); 
        }
        delay(500);  
      }
    }



    il faudrait juste que le programme saute un certain nombre de booléens, 2 pour être plus précis donc voilà la boucle correspondante

    En gros  je définis dans une première boucle (int w) le nombre de booléens dans le tableau (10), puis je parcours ce tableau avec le reste de la boucle et à chaque reprise w = w - 2 autrement dit, le tableau perd 2 booléens et donc en saute 2.

    Mais quand je téléverse le programme sous Arduino, les LEDs ne s'allument pas et non dans l'ordre souhaité. Je galère c'est horrible.

    :

       for(int w = 12; w > 0; w = w - 2){
         boolean blinking[w][10];
         for (int w = 0; w < 10 ;w = w + 1) 
        {
          for (int l = 0 ; l < 10 ;l = l+1) 
          {
            boolean etat=blinking[w][l]; 
            digitalWrite(pinLed[l],etat); 
          }
          delay(1000); 
        }
       }
     



    Merci beaucoup de vos réponses !

    • Partager sur Facebook
    • Partager sur Twitter
      5 avril 2020 à 12:16:12

      A la ligne 31, tu viens définir une variable locale blinking qui vient temporairement remplacer ta variable globale blinking déclarée à la ligne 2.

      Cette variable locale n'est pas initialisée donc ce n'est pas étonnant que tu obtiennent un comportement complètement aléatoire.

      Supprime cette ligne 31 et cela devrait probablement marcher beaucoup mieux.

      Par contre, je reste un peu septique sur le fait que tu fasses 2 boucle for w...

      • Partager sur Facebook
      • Partager sur Twitter

      Boucle tableau

      × 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