Tengo un CD4021BE configurado de manera muy similar al Tutorial de Arduino ShiftIn (la principal diferencia es que yo no Actualmente no tengo 8 botones, por lo que acabo de conectar PI-5 a PI-7 a tierra con una resistencia, me sale el mismo mal comportamiento si se dejan flotando).
Todos los valores que estoy obteniendo están siendo cambiados 1 bit, por lo que con 5 botones conectados de PI-1 a 4 y PI-8), al presionar el que está conectado a PI-1 me da el valor 00000010
, al presionar PI-2 me da 00000100
y PI-8 solo me da 00000000
.
Tengo mi pin de datos conectado a Q8, que, por lo que puedo ver en la Hoja de datos es el lugar correcto. Solo para ver qué sucedió, lo conecté a la Q6 y obtuve 00001000
de PI-1 y así sucesivamente.
Obtuve 5 de estos chips cuando los ordené y he probado 3 hasta el momento y todos funcionan de la misma manera, lo que realmente sugiere que estoy haciendo algo estúpido.
Este es el código que estoy usando actualmente:
#define CLK 10
#define LATCH 9
#define DATA 8
int data;
void setup() {
Serial.begin(9600);
pinMode(DATA, INPUT);
pinMode(CLK, OUTPUT);
pinMode(LATCH, OUTPUT);
Serial.println("Begin...");
}
void loop() {
digitalWrite(LATCH, HIGH);
digitalWrite(LATCH, LOW);
data = shiftIn(DATA, CLK, MSBFIRST);
Serial.println(data, BIN);
delay(500);
}
CLK
está conectado a CLOCK
en el chip, y LATCH
es PARALLEL/SERIAL CONTROL
.
¿Por qué sucede esto?