Go Down

Topic: retranscription d'une code d'automate sur arduino (Read 294 times) previous topic - next topic

vtec35

je commence par mettre toute les encoche à false



ensuite, j'ai un interrupteur,si il est HIGH

encoche(1) devient true,

si LOW,

encoche(1) devient false

ensuite quand j appel gestionencoche()

on decale tout le tableau d'une ligne, la valeur qui etait dans encoche 1 passe a encoche 2, celle de encoche 2 passe a encoche 3 etc...

kamill

Le premier élément ce n'est pas encoche[1], mais encoche[0]
Il y a un problème dans gestionencoche(), ça écrit en dehors du tableau

dbrion06

Plutôt que de tenter de retire un à tous les indices d'un tableau de booleens (8 bits), sacrifiez le premier élement (qui ne sera jamais utilisé, d'où un gigantesque gaspillage), rajoutez un à la dimension du tableau, sur une ligne et laissez tous les autres indices tels qu'ils sont (c'est moins mauvais que d'oublier de corriger, quelque part dans un code -qui peut être touffu quoique fonctionnel- des dizaines d'indices de tableau)

kamill

En corrigeant les indices ça donne
Code: [Select]
#define entree_inter  9


bool encoche[5];
//#define base_pin 5 //pin choisie arbitrairement !

void vidage()
{
  for ( int i = 0; i < 5; i++)
  {
    encoche[i] = false;
  }
}
void gestionencoche()
{

  for ( int i = 4; i > 0; i--)
  {
    encoche[i] = encoche[i-1];
  }

}

/*void dumpencoche()
  {
  for( int i=0; i<5; i++)
  {
     //setmbbit 319+i,encoche(i);
     //ici par contre je ne connais pas l'instruction utilisée mais
     //vu son nom je pense qu'on positionne un bit dans un registre en
     //fonction de la valeur de encoche[i]
     digitalWrite(base_pin+i, encoche[i]);
  }
  }*/

void setup() {
  pinMode (entree_inter, INPUT);
  vidage();
  Serial.begin(115200);
}

void loop ()
{
  gestionencoche();
  if (digitalRead(entree_inter) == HIGH)
  {
    encoche[0] = true;
  }
  else
  {
    encoche[0] = false;
  }
  delay (1000);
  Serial.println ("mouvement table");
  Serial.print("encoche 0=");
  Serial.println(encoche[0]);
  Serial.print("encoche 1=");
  Serial.println(encoche[1]);
  Serial.print("encoche 2=");
  Serial.println(encoche[2]);
  Serial.print("encoche 3=");
  Serial.println(encoche[3]);
  Serial.print("encoche 4=");
  Serial.println(encoche[4]);
  delay (2000);
  Serial.println ("arret table");
}

vtec35

merci kamill, on va tester nos deux versions

Go Up