Bon, j'ai commencé à faire quelques tests avec la lib arduino que je retirerai ensuite. Je pense que j'ai un problème de pull-up ou pull-down. Mais je commence à me prendre la tête...
- Dans un 1er programme j'ai ça :
int l = 12; //lecture entrées
int s = 4; //sortie
void setup() {
Serial.begin(115200); //DEBUG
pinMode(l, INPUT);
digitalWrite(l, HIGH); //pull-up
pinMode(s, OUTPUT);
delay(2000);
}
void loop(){
int res = 0;
digitalWrite(s, LOW);
res = digitalRead(l);
digitalWrite(s, HIGH);
Serial.print(!res);
Serial.println("");
delay(100);
}
J'ai connecté la pin 12 de l'arduino dans la broche 1 de la 1ère nappe et la pin 4 de l'arduino sur la broche 2 de la nappe.
Lorsque j'actionne la première note, j'obtiens bien 1 ou 0 quand je lâche.
- Je passe à l'intégration du 74HC165 pour les entrées (voir le schémas joint) :
Le programme de test :
int LATCH = 2;
int CLOCK = 3;
int DATA = 8;
void setup() {
Serial.begin(115200);
pinMode(LATCH, OUTPUT);
pinMode(CLOCK, OUTPUT);
pinMode(DATA, INPUT);
digitalWrite(CLOCK,LOW);
digitalWrite(LATCH,LOW);
//Sorties
int s = 4;
pinMode(s, OUTPUT);
digitalWrite(s, HIGH);
}
void loop() {
digitalWrite(LATCH,HIGH);
byte a_temp = shiftInFixed(DATA,CLOCK);
for (byte i = 0; i < 8; ++i) {
Serial.print(getBitLowF(a_temp, i));
}
//*/
Serial.println("");
delay(100);
}
byte shiftInFixed(byte dataPin, byte clockPin) {
byte value = 0;
for (byte i = 0; i < 8; ++i) {
value = value | (digitalRead(dataPin) << i);
digitalWrite(clockPin, HIGH);
digitalWrite(clockPin, LOW);
}
digitalWrite(LATCH,LOW);
return value;
}
// retourne la valeur de l'octet
byte getOctetValLowF(byte val, int pos)
{
return val & (1 << pos);
}
// retourne l'état du bit sous forme d'un boolean
byte getBitLowF(byte val, int pos)
{
return getOctetValLowF(val, pos) ? 1 : 0;
}
En branchant la pin 6 du 74HC165 sur la masse ou le 5v j'obtiens bien le bon résultat.. 01111111 ou 1111111
Par contre, si je branche cette même broche sur la pin2 de la nappe. J'obtiens quelque chose d'aléatoire ce qui me fait penser à un problème de patte folle.... J'ai essayé de voir où je pourrai mettre une resistance de pull-up ou pull-down, mais je n'arrive à rien.