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(;
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);
}
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(;
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
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
Post a Comment