int clockPin = 8;
int latchPin = 9;
int dataPin = 10;
#define REG_SL 2
#define REG_CK 3
#define REG_DI 5
byte n = 0;
byte x = 0;
bool ledState = false; // Menyimpan status LED
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(REG_SL, OUTPUT);
pinMode(REG_CK, OUTPUT);
pinMode(REG_DI, INPUT);
Serial.begin(9600);
}
void loop() {
// Acquire input ports
digitalWrite(REG_SL, HIGH);
delay(1);
digitalWrite(REG_SL, LOW);
delay(1);
digitalWrite(REG_SL, HIGH);
// Read input values
for (int i = 0; i < 8; i++) {
bitWrite(n, i, digitalRead(REG_DI));
digitalWrite(REG_CK, LOW);
delay(1);
digitalWrite(REG_CK, HIGH);
delay(1);
}
for (int i = 0; i < 8; i++) {
bitWrite(x, i, digitalRead(REG_DI));
digitalWrite(REG_CK, LOW);
delay(1);
digitalWrite(REG_CK, HIGH);
delay(1);
}
Serial.print("Input (n): ");
Serial.println(n, BIN);
Serial.print("Output (x): ");
Serial.println(x, BIN);
// Toggle LED state when button is pressed
if (n & B00000001) { // Change this condition based on your button state
if (!ledState) {
ledState = true;
digitalWrite(13, HIGH); // Assuming LED is connected to pin 13
}
} else {
ledState = false;
digitalWrite(13, LOW);
}
// Send output bytes to output ports
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, x);
shiftOut(dataPin, clockPin, LSBFIRST, n);
digitalWrite(latchPin, HIGH);
delay(1);
}