interrupt, 74hc165 et shiftIn

Bonjour,

Quelqu’un aurait-il déjà eu l’idée d’utiliser un interrupt avec une 74hc165?

Sur mon interface de contrôle, j’ai 6 boutons reliés à ma 74hc165. Je récupère sans problème la valeur des 6 (façon serial, comme indiqué dans le tuto). ça fonctionne bien quand tout ça est dans loop().

Je voulais attacher mes contrôles à un interrupt et faire en sorte que lorsqu’un des boutons est pressé, l’ISR (IRQroutine) se met en route et fait ce qu’elle a à faire.
Mais voilà, pour tester:

#include <LiquidCrystal.h>//LCD
//definition

const int latchPin= 4;
const int dataPin= 3;
const int clockPin= 2;

LiquidCrystal lcd(9, 8, 10, 11, 12, 13);

volatile int interact=0;

//prototype
void UserAction();

void setup () {
  lcd.begin(16,2);
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT); 
  pinMode(dataPin, INPUT);
 
  attachInterrupt(1,UserAction,CHANGE);

}

void loop (){
   if(interact==1)
      {
        lcd.clear();
        lcd.print("ok");
        delay(500);
        interact=0;
      }
    else
      {
        lcd.print("nope");
      }
}

void UserAction(){
interact=1;
}

Rien de compliqué, me semble-t-il.

Où: Q7 (dataPin) de la 74hc165 est connecté sur DP3 (alias interrupt 1)

Résultat: il ne m’affiche “ok” que lorsque je pousse sur le bouton ayant l’adresse 0x80.

Si quelqu’un l’a déjà fait… je veux bien l’info, ou tout autre avis
:-?

Merci

Si ça intéresse quelqu'un j'ai résolu mon problème en installant un porte OU (fait main avec des diodes) à laquelle son reliés les boutons. La porte OU est reliée à la pin 3 (interrupt 1). Dès qu'un bouton des 6 boutons est pressé, l'ISR se met en route.

Salut, je serais vraiment intéressé par un petit schema du montage. tu peux mettre ça ?