[Gelöst:]Problem mit "shiftIn"

Hallo zusammen,

ich bin noch sehr neu auf dem Gebiet der Microcontroller und C-Programmieren und experimentiere gerade an der Porterweiterung mit einem "74HC165". Die Artikel über "shiftIn" und über das "ShiftReg SN74HC165" habe ich durch und war der Meinung es zu verstehen...
Ich habe darauf hin versucht den Code mal ganz einfach zu gestalten. Leider funktioniert das nicht ganz so wie ich mir das vorgestellt habe.
Wenn die 8 Schalter am "HC165" die Zustände 0x00 bis 0x7F haben bekomme ich eine "0" als Ausgabe; im Falle, 0x80 bis 0xFF, wird b'1111 1111' ausgegeben.

Hier mal mein CODE:

int PLOADPIN = 13;
int CLOCKPIN = 12;
int DATAPIN = 11;
int VAR1;
void setup(){
  Serial.begin(9600);
  pinMode(PLOADPIN, OUTPUT);
  pinMode(CLOCKPIN, OUTPUT);
  pinMode(DATAPIN, INPUT);
}

void loop(){
  digitalWrite(PLOADPIN, HIGH);
  delayMicroseconds(20);
  digitalWrite(PLOADPIN, LOW);
 
  VAR1 = shiftIn(DATAPIN, CLOCKPIN, MSBFIRST);
  Serial.println(VAR1, BIN);
  Serial.println("--------");
  delay(2000);
 
}

Was ist an meiner Überlegung falsch?

Gruß
Philipp

Hallo nochmal,

bin gerade von der Arbeit heim gekommen und hatte tagsüber ein wenig Zeit mir nochmal Gedanken zu meinem CODE zu machen. Einen Fehler konnte ich nun schon mal lösen ...

// anfänglicher CODE
  digitalWrite(PLOADPIN, HIGH);
  delayMicroseconds(20);
  digitalWrite(PLOADPIN, LOW);

ist nicht richtig!

es muss so lauten:

// neuer CODE
  digitalWrite(PLOADPIN, LOW);
  delayMicroseconds(20);
  digitalWrite(PLOADPIN, HIGH);

Jetzt besteht nur noch ein Problem. Es sieht so aus als wären alle BITs eine stelle nach Links gerückt. Egal welche Schalterstellung ich am HC165 habe, ist der erste eingelesene Wert "LOW" und der Schalter 8 wird nicht mehr in meiner Schleife berücksichtigt....

Kann mir das bitte jemand erklären?
Wo liegt hier das Problem?

Cheers
File

Problem gelöst!

Das Shiftregister 74HC165 funktioniert nicht mit der shiftIn-Funkktion, da das Clock-Signal nicht die richtige polarität für den 165er hat.

Gruß
Philipp