Bonjour,
J'ai un Arduino Pro micro pour créer un projet de clavier,
Voici le tutoriel que j'ai suivis en anglais j'ai fait exactement la même chose mais ca ne fonctionne pas chez moi.
Chez moi ils indiquent que j'ai toujours les boutons appuié , quand j'appuie dessus ca ne fait rien et quand je le débranche non plus.
Pouvez vous m'expliquer mon erreur avec les photos et le programme en dessous ?
Certaines plaques d'essais sont partgées en deux zones pour les 4 lignes horizontales utilisées en général pour l'alimentation -> Absence de continuité d'une zone à l'autre
(En observant la face inférieure on peut parfois observer la discontinuité des barres conductrices horizontales)
OK, bon à savoir pour ce repérage par marquage
(J'ai quelques breadboard à rails fractionnés mais sans marquage de couleur sur la face supérieure, d'où le reflexe du rertournement de la plaque !!))
Voici les essaye que j'ai effectué:
J'ai changer de carte (Arduino Uno) meme resultat
J'ai débrancher les 3 fils en 2- 3 - 4
Même résulta, je pense donc que mon problème est au niveau du code
à moins que:
je viens de verifier, ta boucle mets 21millisecondes pour se faire
puis elle attends 5 secondes pour refaire un tour
autrement dit:
chaque bouton n'est scruté qu'une fois toutes les 5021 millisecondes
peux tu refaire tes tests en virant la tempo de 5 secondes
ton prog avec l'affichage du temps de boucle ( j'ai laissé ta tempo, a toi de la virer)
int ioSelect = 2;
int clockPulse = 3;
int dataOut = 4;
int j;
int value;
byte switchVar =0;
unsigned long deb=0;
void setup() {
// put your setup code here, to run once:
pinMode(ioSelect, OUTPUT);
pinMode(clockPulse, OUTPUT);
pinMode(dataOut, INPUT);
Serial.begin(115200);
}
void loop() {
deb=millis();
byte dataIn = 0;
digitalWrite(ioSelect, 0);
digitalWrite(clockPulse, 0);
digitalWrite(clockPulse, 1);
digitalWrite(ioSelect, 1);
for(j = 0; j < 8; j++){
value = digitalRead(dataOut);
value = 1;
Serial.print("Boutton Position: ");
Serial.println(j);
Serial.print("Boutton Value: ");
Serial.println(value);
if(value){
int a = (1 << j);
dataIn = dataIn | a;
}
digitalWrite(clockPulse, LOW);
digitalWrite(clockPulse, HIGH);
}
if(switchVar != dataIn){
switchVar = dataIn;
Serial.print("dataIn DEC: ");
Serial.print(dataIn, DEC);
Serial.println();
Serial.print("dataIn BIN: ");
Serial.print(dataIn, BIN);
Serial.println();
}
Serial.print("temps de boucle = ");
Serial.print(millis()-deb);
Serial.print(" milli-secondes ");
delay(5000);
}
peu importe ...
ce qu'il faudrait faire comme test, c'est le débrancher côté 74hc166 pour le mettre tantôt au gnd, tantôt au + 5v, et voire si on rentre bien que des 0 ou que des 1 (ou 255)
le dernier prg que j'ai posté, comprend une ligne pour forcer la lecture de valeur à 1
cette ligne m'a été utile pour debogage
j'ai oublié de la virer et notre ami à testé avec cette ligne
donc il reponds que la lecture ne se fait pas ( et pour cause)
je le lui ai fait remarquer, et nous attendons son retour