Connection in/out analog entre deux arduino uno


j'ai un arduino uno qui affiche le compte de piece à usiner  et un autre arduino uno qui lui envoie le nombre de piece faire.

la maniere dont je voudrait que ca marche : si mon bouton pour incrémenter mon nombre de pièces est à high et que celui pour décrémenter est à low alors mon nombre de piece +1 .... je suis pas sure comment relier deux arduino ensemble ... par exemple si mon nombre de piece est de 20 et que on programme dit que analogwrite(a0 , nombre de piece)  est-ce que l'autre arduino lirait 20 si j'y dit analogread(a4) ?


arduino 1 :
boolean start, start, ok, mg, md,jog_up,aucune_piece_restant_a_usiner, jog_down, haut, down, up, bas, monte, descend, piece_plus,piece_moins, man_auto;
boolean reset = 0;
int nombre_de_piece_a_usiner;
int piece_usiner;
int piece_restant_a_usiner;

void setup(){
  pinmode(0, input); // man /auto
  pinmode(1, input); // jog monte
  pinmode(2, input); // jog descend
  pinmode(3, input); // start
  pinmode(4, input); // bouton main gauche
  pinmode(5, input); // bouton  main droit
  pinmode(6, input); // limit switch haut
  pinmode(7, input); // limit switch bas
  pinmode(8, input); // ok pour le nbre de piece
  pinmode(9, input); // nbre de piece usiner ++
  pinmode(10, input); // nbre de piece usiner --
  pinmode(11, output); // pl pu de piece faire
  pinmode(12, output); // monte
  pinmode(13, output); // descend
  pinmode(a4, output); // indique le nbre de piece faire lautre arduino
}

void loop(){
man_auto = digitalread(0);
jog_up = digitalread(1);
jog_down = digitalread(2);
start = digitalread(3);
mg = digitalread(4);
md = digitalread(5);
haut = digitalread(6);
bas = digitalread(7);
ok = digitalread(8);
piece_plus = digitalread(9);
piece_moins = digitalread(10);
piece_restant_a_usiner = nombre_de_piece_a_usiner - piece_usiner;
monte =! descend;

if(haut == 1 && mg==0 && md == 0 && start == 0){
 
  if(piece_plus == 1 && piece_moins == 0){
     nombre_de_piece_a_usiner = nombre_de_piece_a_usiner + 1 ;
  }
 
   if(piece_plus == 0 && piece_moins == 1 && nombre_de_piece_a_usiner >= 1 ){
     nombre_de_piece_a_usiner = nombre_de_piece_a_usiner - 1 ;
  }
} // on sait maintenant comment de piece on veut usiner

if(man_auto == 1){
 
 if(jog_up == 1 && jog_down == 0){
    monte = 1;
    }
 
 if(jog_up == 0 && jog_down == 1){
    descend = 1;
    }
 if(jog_up == 1 && jog_down == 1){
   reset = 1;
 }
}// mode manuel

if(start == 1){
  start = 1;
}
 
 if(start == 1 && mg==1 && md == 1 && man_auto == 0 ){
 
  if(piece_restant_a_usiner > 0){
   
   if(haut == 1) {
      down = 1; // memoire que ca descend
     }
 
   if(down == 1 && bas == 0){
      descend = 1;
      = 0;
      }
 
   if(bas == 1){
      descend = 0;
      piece_usiner = piece_usiner + 1;
      = 1; // memoire que ca monte
     }

   if(up ==1 && haut == 0){
      monte = 1;
      down = 0;
     }
  }//nombre_de_piece_a_usiner > piece_usiner
 
 if(piece_restant_a_usiner == 0){
   aucune_piece_restant_a_usiner = 1;
   reset = 1;
 }
 }// mg et md == 1
 
if(reset == 1){
  start = 0;
  piece_restant_a_usiner = 0;
  nombre_de_piece_a_usiner = 0;
  piece_usiner = 0;
  = 0;
  down =0;
  }



  digitalwrite(11, aucune_piece_restant_a_usiner); // pl pu de piece faire
  digitalwrite(12, monte); // monte
  digitalwrite(13, descend); // descend
  analogwrite(a4, piece_restant_a_usiner);
 
}



arduino 2 :

boolean a,b,c,d,e,f,g,a2,b2,c2,d2,e2,f2,g2;
float chiffre;
int dix_exp_un;
int dix_exp_zero;

void setup(){
  pinmode(0,output);
  pinmode(1,output);
  pinmode(2,output);
  pinmode(3,output);
  pinmode(4,output);
  pinmode(5,output);
  pinmode(6,output);
  pinmode(7,output);
  pinmode(8,output);
  pinmode(9,output);
  pinmode(10,output);
  pinmode(11,output);
  pinmode(12,output);
  pinmode(13,output);
  pinmode(a2, input); // lautre arduino indique le nbre de piece qui reste usiner
}

void loop(){

chiffre = analogread(a2/10.24);
dix_exp_un = int(chiffre/10); // si on avait 79 comme chiffre alors base_dix = 7
dix_exp_zero = chiffre-(dix_exp_un)*10;


     
    if (dix_exp_zero==9 ){
     // 9
    g = 1;
    f = 1; 
    e = 0;
    d = 1;
    c = 1;
    b = 1;
    = 1;
    }
   if (dix_exp_un==9 ){
     // 9
    g2 = 1;
    f2 = 1; 
    e2 = 0;
    d2 = 1;
    c2 = 1;
    b2 = 1;
    a2 = 1;
    }
   
   
    if (dix_exp_zero==8 ){
     // 8
    g = 1;
    f = 1; 
    e = 1;
    d = 1;
    c = 1;
    b = 1;
    = 1;
    }
   
     if (dix_exp_un==8 ){
     // 8
    g2 = 1;
    f2 = 1; 
    e2 = 1;
    d2 = 1;
    c2 = 1;
    b2 = 1;
    a2 = 1;
    }

    if (dix_exp_zero==7 ){
     // 7
    g = 0;
    f = 0; 
    e = 0;
    d = 0;
    c = 1;
    b = 1;
    = 1;
    }
   
    if (dix_exp_un==7 ){
     // 7
    g2 = 0;
    f2 = 0; 
    e2 = 0;
    d2 = 0;
    c2 = 1;
    b2 = 1;
    a2 = 1;
    }
     
    if (dix_exp_zero==6 ){
     // 6
    g = 1;
    f = 1; 
    e = 1;
    d = 1;
    c = 1;
    b = 0;
    = 1;
    }
   
    if (dix_exp_un==6 ){
     // 6
    g2 = 1;
    f2 = 1; 
    e2 = 1;
    d2 = 1;
    c2 = 1;
    b2 = 0;
    a2 = 1;
    }
 
    if (dix_exp_zero==5 ){
     // 5
    g = 1;
    f = 1; 
    e = 0;
    d = 1;
    c = 1;
    b = 0;
    = 1;
    }
   
    if (dix_exp_un==5 ){
     // 5
    g2 = 1;
    f2 = 1; 
    e2 = 0;
    d2 = 1;
    c2 = 1;
    b2 = 0;
    a2 = 1;
    }
   
    if (dix_exp_zero==4 ){ 
     // 4
    g = 1;
    f = 1; 
    e = 0;
    d = 0;
    c = 1;
    b = 1;
    = 0;
    }
   
    if (dix_exp_un==4 ){ 
     // 4
    g2 = 1;
    f2 = 1; 
    e2 = 0;
    d2 = 0;
    c2 = 1;
    b2 = 1;
    a2 = 0;
    }
   
    if (dix_exp_zero==3 ){ 
     // 3
    g = 1;
    f = 0; 
    e = 0;
    d = 1;
    c = 1;
    b = 1;
    = 1; 
    }
   
    if (dix_exp_un==3 ){ 
     // 3
    g2 = 1;
    f2 = 0; 
    e2 = 0;
    d2 = 1;
    c2 = 1;
    b2 = 1;
    a2 = 1; 
    }
   
    if (dix_exp_zero==2 ){
     // 2
    g = 1;
    f = 0; 
    e = 1;
    d = 1;
    c = 0;
    b = 1;
    = 1;
    }
   
    if (dix_exp_un==2 ){
     // 2
    g2 = 1;
    f2 = 0; 
    e2 = 1;
    d2 = 1;
    c2 = 0;
    b2 = 1;
    a2 = 1;
    }
   
    if (dix_exp_zero==1 ){ 
     // 1
    g = 0;
    f = 0; 
    e = 0;
    d = 0;
    c = 1;
    b = 1;
    = 0;
    }
   
    if (dix_exp_un==1 ){ 
     // 1
    g2 = 0;
    f2 = 0; 
    e2 = 0;
    d2 = 0;
    c2 = 1;
    b2 = 1;
    a2 = 0;
    }
   
    if (dix_exp_zero==0 ){ 
     // 0
    g = 0;
    f = 1; 
    e = 1;
    d = 1;
    c = 1;
    b = 1;
    = 1;
    }
   
    if (dix_exp_un==0 ){ 
     // 0
    g2 = 0;
    f2 = 1; 
    e2 = 1;
    d2 = 1;
    c2 = 1;
    b2 = 1;
    a2 = 1;
    }




// fin du scan
    digitalwrite(0,g); 
    digitalwrite(1,f );
    digitalwrite(2,a); 
    digitalwrite(4,c );
    digitalwrite(5,d);
    digitalwrite(6,e);
    digitalwrite(3,b);
    digitalwrite(7,c2 );
    digitalwrite(8,d2 );
    digitalwrite(9,e2);
    digitalwrite(10,g2);
    digitalwrite(11,f2);
    digitalwrite(12,b2);
    digitalwrite(13,a2);

}




bonjour,

peux-tu mettre ton code entre balise (l'icône avec <>), ce sera plus lisible.

je n'ai jamais expérimenté la connexion de deux arduino par voie analogique. je me méfierais beaucoup des résultats, il me semble fort probable qu'il y ait des différences de valeurs plus ou moins importante, d'autant plus avec des valeurs flottantes.
l'option la plus sûr consisterait à utiliser des broches digitales comme un compteur binaire par exemple.



avec 4 broches, on peut simuler 16 pièces par exemple, etc.

les spécialistes du forum en électronique diront peut être d'utiliser tel ou tel composant, je pense au compteur binaire 4020. mais je n'ai aucune idée de comment l'interfacer à l'instant.

si les 2 arduinos ne sont pas trop éloignés l'un de l'autre, tu peux aussi envisager une communication en i2c.

@+

zoroastre


Arduino Forum > International > Français (Moderators: jfs, Snootlab) > Connection in/out analog entre deux arduino uno


arduino

Comments

Popular posts from this blog

invalid use of void expresion in FlexiTimer2 library

error: a function-definition is not allowed here before '{' token

LED Strip Code