Problème sur un tableau (Arduino)
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Problème sur un tableau (Arduino)



  1. #1
    titounet85

    Problème sur un tableau (Arduino)


    ------

    Bonjour,
    Dans mon projet, l'état logique de 5 capteurs sont traités pour être réutilisés dans un tableau de valeurs.
    Le problème c'est que cela ne marche pas, il semblerais que le tableau ne prenne pas en compte la valeur de la variable sauf si elle est déclarée au tout début du programme.

    voici le code :
    Code:
    int y0 = 2;
    int y1 = 3;
    int y2 = 4;
    int y3 = 5;
    int y4 = 6;
    
    int val0;
    int val1;
    int val2;
    int val3;
    int val4;
    
    int Y0;
    int Y1;
    int Y2;
    int Y3;
    int Y4;
    
    int dataPin = 9; 
    int latchPin = 11;
    int clockPin = 10;
    
    int clock = 8; 
    int Reset = 7; 
    int x;  
    int y;
    
    unsigned char tactile[][8][3] = {  
    
      {{val0,0,0},{0,val1,0},{0,0,val2},{0,val3,val3},{val4,val4,0},{0,0,0},{0,0,0},{0,0,0}}};
    
    
    void setup()
    {
      for (int i=2; i < 6; i++)
     { pinMode(i,INPUT);}
     
     Serial.begin(9600);
     pinMode(dataPin, OUTPUT);
    pinMode(latchPin, OUTPUT);
    pinMode(clockPin, OUTPUT); 
     
        
    pinMode(clock,OUTPUT);
    pinMode(Reset,OUTPUT);
    digitalWrite(Reset,HIGH); 
    delayMicroseconds(5);
    digitalWrite(Reset,LOW);
    
     int val0;
    int val1;
    int val2;
    int val3;
    int val4;
      
    }
    
     void run_animation(unsigned char frame_time,unsigned char frames[][8][3],unsigned char num_frames,unsigned char num_loops){ 
      
     for(int i=0;i<num_loops;i++){      
      for(x=0;x<num_frames;x++){       
       for(int z=0;z<frame_time;z++){
        for(y=0;y<8;y++){   
                 
                 digitalWrite(latchPin, LOW);
                  shiftOut(dataPin, clockPin,LSBFIRST,frames[x][y][2]);
                   shiftOut(dataPin, clockPin,LSBFIRST,frames[x][y][1]);
                  shiftOut(dataPin, clockPin,LSBFIRST,frames[x][y][0]);
                 
                 digitalWrite(latchPin, HIGH);
                 delayMicroseconds(200);
                 digitalWrite(latchPin, 0);
                 shiftOut(dataPin, clockPin,MSBFIRST,0);
                 shiftOut(dataPin, clockPin,MSBFIRST,0);
                 shiftOut(dataPin, clockPin,MSBFIRST,0);
                 digitalWrite(latchPin, 1);
     
                 digitalWrite(clock, 1);
                 digitalWrite(clock, 0);
    
               }
             digitalWrite(Reset, 1);
             digitalWrite(Reset, 0);
    
         }
      }
     }
    
    }
    
    void loop()
    {
      
     affectval();
    run_animation(1,tactile,1,1); 
     
      //delay(1000);
    }
    
    void affectval()
    {
        Y0 = digitalRead(y0);
      Y1 = digitalRead(y1);
      Y2 = digitalRead(y2);
      Y3 = digitalRead(y3);
      Y4 = digitalRead(y4);
    
        if (Y0 == 0){
          val0 = 255;}
      else{
        val0 = 0;}
        
        if (Y1 == 0){
          val1 = 255;}
      else{
        val1 = 0;}
        
        if (Y2 == 0){
          val2 = 255;}
      else{
        val2 = 0;}
        
        if (Y3 == 0){
          val3 = 255;}
      else{
        val3 = 0;}
        
        if (Y4 == 0){
          val4 = 255;}
      else{
        val4 = 0;}
    }


    Si j'utilise par exemple:

    unsigned char tactile[][8][3] = {

    {{255,0,0},{0,0,0},{0,0,0},{0, 0,0},{0,0,0},{0,0,0},{0,0,0},{ 0,0,0}}};

    Cela fonctionne.

    J’espère avoir été assez précis

    Merci

    -----
    Dernière modification par Jack ; 25/06/2013 à 22h21. Motif: Ajout balises code

  2. #2
    grosmatou75001

    Re : Problème sur un tableau (Arduino)

    Le formatage du code est à revoir de toute urgence: http://fr.wikipedia.org/wiki/Style_d%27indentation

    C'est quoi toutes ces redéfinitions de val0 à 4 dans setup()? D'ailleurs parlant de variables, des variables globales ne sont pas toujours la meilleure solution (mais j'avoue qu'ils peuvent être pratique)...

    Et pour le pb en soi: Effectivement cela ne marche pas comme tu as essayé, cela ne marche qu'avec des valeurs connues au moment de la compilation. À mon avis tu devrais virer val0 à 4 et écrire directement dans le tableau...

  3. #3
    titounet85

    Re : Problème sur un tableau (Arduino)

    Oups, les int val0-4 dans setup sont une regrettable erreur de "copier coller" sur le forum.

    et pour le style d'indentation c'est le forum qui a viré tout les espaces de mon code et je crois savoir que cela ne change rien pour le langage Arduino à part la lisibilité.

    ET justement, mettre les valeurs directement dans le tableau n'est pas une solution puisque les valeurs du tableau doivent varier. Je cherche donc d'autres solutions.

  4. #4
    titounet85

    Re : Problème sur un tableau (Arduino)

    En réalité ce code n'est qu'une esquisse et par la suite les valeurs de val0-4 varieront entre 0 et 255

  5. A voir en vidéo sur Futura
  6. #5
    grosmatou75001

    Re : Problème sur un tableau (Arduino)

    Citation Envoyé par titounet85 Voir le message
    Oups, les int val0-4 dans setup sont une regrettable erreur de "copier coller" sur le forum.
    ok.

    et pour le style d'indentation c'est le forum qui a viré tout les espaces de mon code
    Peut-être en mettant entre [ code] code... [/ code] la prochaine fois? Ou en PJ?

    et je crois savoir que cela ne change rien pour le langage Arduino à part la lisibilité.
    A part la lisibilité, comme tu dis...

    ET justement, mettre les valeurs directement dans le tableau n'est pas une solution puisque les valeurs du tableau doivent varier.
    Ben oui, on peut très bien modifier les valeurs d'un tableau...

    Code:
    //déclaration
    int tableau[3]={42, 46, 39};
    
    //modif:
    tableau[1]=36; // changer la deuxième(!) valeur du tableau en 36

  7. #6
    titounet85

    Re : Problème sur un tableau (Arduino)

    FORMIDABLE! je pense que ça pourrais marcher. je vais essayer ça tout se suite, mais je ne comprend pas pourquoi tableau[1] change la deuxième si les valeurs vont de 1 à 3?

    Mes excuses, je connais mal ces techniques de forums " /[code] etc.." Je saurais maintenant =)

  8. #7
    titounet85

    Re : Problème sur un tableau (Arduino)

    Ah non c'est bon j'ai trouvé pourquoi...

  9. #8
    titounet85

    Re : Problème sur un tableau (Arduino)

    ça marche comme sur des roulette et ça m'ouvre les portes pour la suite , merci beaucoup !

  10. #9
    Jack
    Modérateur

    Re : Problème sur un tableau (Arduino)

    et pour le style d'indentation c'est le forum qui a viré tout les espaces de mon code et je crois savoir que cela ne change rien pour le langage Arduino à part la lisibilité.
    Il suffit de se donner la peine de lire les post-it en tête du forum info ...

Discussions similaires

  1. Arduino : Probleme de tension sur une entrée d'interruption.
    Par pouic92 dans le forum Électronique
    Réponses: 9
    Dernier message: 29/04/2013, 21h25
  2. Problème arduino
    Par oniff dans le forum Électronique
    Réponses: 2
    Dernier message: 28/02/2013, 20h20
  3. Problème arduino
    Par darche_j dans le forum Électronique
    Réponses: 3
    Dernier message: 07/05/2011, 18h08
  4. Probleme Arduino Drone !
    Par invite1631615b dans le forum Électronique
    Réponses: 13
    Dernier message: 07/01/2011, 12h51
  5. [VHDL]problème sur tableau d'une seule valeur
    Par Phil1986 dans le forum Électronique
    Réponses: 1
    Dernier message: 04/03/2010, 08h11