Gast
#4312886
Hallo,
kann mir jemand von euch sagen, warum bei den Schieberegistern folgender
Code funktioniert...
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, B11111111);
digitalWrite(latchPin, HIGH);
delay(1000);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, B00000000);
digitalWrite(latchPin, HIGH);
delay(1000);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, B01111110);
digitalWrite(latchPin, HIGH);
}
..dieser hier aber nicht
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, B11111111);
digitalWrite(latchPin, HIGH);
delay(1000);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, B01111110);
digitalWrite(latchPin, HIGH);
}
Es geht dabei um den direkten Wechsel der Bits von 11111111 zu 01111110
ohne vor das Register mit Nullen leeren zu müssen. Macht man dies nicht,
kommt bei meinen LED's ein 11111110 heraus. Überschreibt ein
Schieberegister nicht immer das komplette Byte? Muss ich tatsächlich bei
jedem Byte-Wechsel das Register leeren?!
Danke schonmal für hilfreiche Tipps von euch !
Liebe Grüße