#include <SoftwareSerial.h>
const int dataInPin = 4;
const int clockPin = 2;
const int latchPin = 3;
const int dataOutPin = 5;
int bit;
byte data = 0;
const int numBits = 8;
byte RAM[] = {0B00000001,0B00000010,0B00000100,0B00001000};
SoftwareSerial Serial(PB0, PB1);
void store(){
digitalWrite(clockPin, HIGH);
delayMicroseconds(10);
digitalWrite(clockPin, LOW);
delayMicroseconds(10);
}
void shiftWrite(int desiredPin, boolean desiredState){
bitWrite(data,desiredPin,desiredState);
shiftOut(dataOutPin, clockPin, MSBFIRST, data);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
}
void setup() {
Serial.begin(9600);
pinMode(dataInPin, INPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
}
void loop() {
digitalWrite(latchPin, LOW);
digitalWrite(latchPin, HIGH);
Serial.print("Bits: ");
for (int i = 0; i < numBits; i++) {
bit = digitalRead(dataInPin);
if (bit == HIGH) {
Serial.print("1");
} else {
Serial.print("0");
}
store();
}
Serial.println();
delay(1000);
if(bit == 00000001){
int index = RAM[0];
shiftWrite(index, 1);
}
bit = 0;
}