Go Down

Topic: roues codeuses - arduino mega (Read 904 times) previous topic - next topic

zener57

bonjour à tous
Comment faire pour lire une info binaire (codage binaire 4 bits, roues codeuses ou autres ) sur un port digital et effectuer une sortie binaire ( afficheurs codés sur 4 bits ou leds )
car j'avoue planer un peu sur ce type de materiel (arduino mega )
ayant utilisé d'autres matos ,j'ai franchement des difficultés au niveau prog ( toute une éducation à refaire  ;D ;D ;D ;D )
comme je sais qu'il y a des maitriseurs ,j'espere avoir des réponses .j'essaye d'avoir un maximum d'infos pour me lancer dans 2 ou 3 projets.
merci à l'avance ,cordialement
William

zener57

re-bonjour
Pas de chance ,aucune réponse, pas grave  :'(
j'ai trouvé cette solution ,(ça fonctionne )mais certainement pas la meilleur, voici ce que j'ai fait.

int val;

void setup()
{
// definition des ports pour codeur en entree
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10,INPUT);
pinMode(11,INPUT);

// definition des ports pour aff en sortie
pinMode(32, OUTPUT);
pinMode(33, OUTPUT);
pinMode(34, OUTPUT);
pinMode(35, OUTPUT);

}
void loop()
{
int y;
for (y=0; y<4; y++)
{
val=digitalRead(y+8);
digitalWrite(y+32, val);
}
}

ce qui m'embete un peu ,c'est que je n'arrive pas à mettre la valeur binaire (digitalread) pour m'en servir avec ( switch-case ) ,
exemple :
si roue = 0 (execution programme x) si roue= D (exec prog n ) etc...

avez-vous une solution car je patoge  :-/ :-[
cordialement
William

Oliv4945

pour avoir une valeur numérique de la roue il faut faire un décalage.
En supposant que pin8 soit le poid fort et pin11 le poids faible
Code: [Select]

int val;

void setup()
{
// definition des ports pour codeur en entree
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(10,INPUT);
pinMode(11,INPUT);

// definition des ports pour aff en sortie
pinMode(32, OUTPUT);
pinMode(33, OUTPUT);
pinMode(34, OUTPUT);
pinMode(35, OUTPUT);

}
void loop()
{
   val=digitalRead(8);
   val << 1;
   val+=digitalRead(9);
   val << 1;
   val+=digitalRead(10);
   val << 1;
   val+=digitalRead(11);
}

Attention se code est pour te donner le principe je ne l'ai pas testé. Si tu ne le comprends pas cherche des tutoriels sur le décalage des bits.Sinon dis le  :P

zener57

bonsoir OLIV4945
désolé pour le retard (probleme fournisseur d'acces) bref.
j'ai essayé ton bout de prog ,en mettant Serial.println(val); hélas ( que 0 ou 1 ) merci d'avoir répondu ,j'avais essayé un truc dans le meme genre ,avec le mm resultat.
comme tu es plus balaise que moi tu va certainement trouver le bugg .
cordialement
William  ;) ;)


Go Up