Go Down

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

vtec35

bonjour tout le monde

je suis en train de faire une nouvelle machine, et je voulais lui mettre un arduino en guise d'automate

j'ai une fonction a retranscrire

Code: [Select]


dim encoche(5)
dim i is an integer


sub vidage()

for i=1 to 5
encoche(i) = 0
next i
end sub



donnerais

Code: [Select]


dim encoche(5) // là je suis pas sur du tout
int dim i    // là je suis pas sur du tout

void vidage()

for i=1 to 5
encoche(i) = 0;
next i;




ensuite

Code: [Select]

sub gestionencoche()

for i = 1 to 5
encoche (6-i) = encoche(5-i)
next i
dumpencoche()
end sub


donnerais

Code: [Select]

void gestionencoche()

for i = 1 to 5
encoche (6-i) = encoche(5-i);
next i;
dumpencoche();


ensuite

Code: [Select]

sub dumpencoche()
for i=1 to 5
setmbbit 319+i, encoche(i)
next i
end sub


donnerais

Code: [Select]

dumpencoche()
for i=1 to 5
setmbbit 319+i, encoche(i);  // là on memorise les encoche(i) sur l arduino, et je ne sais pas faire cela
next i;






en fait ces fonctions servent à creer une tableau de memorisation des etats d'encoche sur une table tournante, soit l encoche est plein 1 ou vide 0

et la table tourne d'un cran, donc on doit decaler le tableau de une ligne, mettre à 0 la derniere encoche qui sort du tableau, et decider ce que va devenir la premiere encoche du tableau



cela fait appel a des fonctions que je ne maitrise pas sous arduino, j ai mis 3 stagiaires crsa dessus qui seche




kamill

Bonjour,

Qu'est ce que tu veux faire?
Traduire une programme basic en C++ pour le faire tourner sur un arduino?


bricofoy

un truc dans ce genre ?

Code: [Select]

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=0; i<5; i++)
    {
     encoche[5-i] = encoche[4-i];
    }
    dumpencoche();
}

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]);
 }
}



en revanche rien ne rempli le tableau encoche[] dans ce code. il sera donc toujours à false partout
-tu savais que si tu passe le CD de windows à l'envers, tu entends une chanson satanique ?
-non, mais il y a pire : à l'endroit, ça l'installe !

vtec35

alors, en fait le tableau se rempli à l encoche 1, on met une sonde, si quelque chose est present, on rempli à true

sinon on laisse a false


on est en train de faire un petit montage simple avec bouton et relais pour simuler la table



du coup, je suis pas persuader que le dumpencoche serve vraiment a quelque chose

il semblerait que c est une memorisation du tableau, en cas de coupure de courant, ce qui dans notre cas ne sert a rien

vous confirmez?

vtec35

un truc dans ce genre ?

Code: [Select]

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=0; i<5; i++)
    {
     encoche[5-i] = encoche[4-i];
    }
    dumpencoche();
}

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]);
 }
}



en revanche rien ne rempli le tableau encoche[] dans ce code. il sera donc toujours à false partout
merci et lol ta signature

vtec35

comment on fait pour printer encoche(i)?


Serial.print(encoche(1)); ne marche pas

dbrion06

Serial.print(encoche(1)); ne marche pas
Essayez
Serial.print(encoche[1]);

( .. )  servent à appeler des fonctions, entre autres, et à garder des expressions lisibles
[ .. ] servent à indicer des tableaux...

Au fait: quels sont les défauts de mouvement (ça ne se compile pas -j'espère- ou ça fait n'importe quoi?)

bidouilleelec


vtec35


bidouilleelec

qu apel tu defaut de mouvement?
"Serial.print(encoche(1)); ne marche pas"

ne marche pas ==>  défaut de mouvement  :smiley-fat:


vtec35

a ok, ça ne se compile pas


sinon voici notre code de test

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=0; i<5; i++)
  {
    encoche[5-i] = encoche[4-i];
  }

}

 /*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 ()
{
if (entree_inter == HIGH)
{
encoche[1]= true;
}
else
{
  encoche[1]= false;
}
delay (1000);
Serial.println ("mouvement table");
gestionencoche();
    Serial.println("encoche 1=");
    Serial.println(encoche[1]);
    Serial.println("encoche 2=");
    Serial.println(encoche[2]);
    Serial.println("encoche 3=");
    Serial.println(encoche[3]);
    Serial.println("encoche 4=");
    Serial.println(encoche[4]);
    Serial.println("encoche 5=");
    Serial.println(encoche[5]);
delay (2000);
Serial.println ("arret table");







}




ça marche...en partie

l'encoche 5 fait n'importe quoi, un coup 3 , un coup 6, alors que devrais avoir 0 ou 1

et l'inter ne fait aucun effet sur l encoche 1, elle devrait la mettre a true ou false




le montage est simple pour l essai, un inter sur l entrée 9 et voila

kamill

Il faut que tu lises l'entrée
au lieu de
Code: [Select]
 if (entree_inter == HIGH)
c'est
Code: [Select]
 if (digitalRead(entree_inter) == HIGH)

vtec35

ok bon c est sur....


et pour le encoche  [5] qui donne 3 ou 6? tu vois quelques choses?

kamill


Go Up