const int dataPin = 2; /* DS */
const int clockPin = 3; /* SHCP */
const int latchPin = 4; /* STCP */
const int PL = 28; /*PL*/
const int s_clock = 27; /*CP*/
const int s_data = 26; /*Q7*/
byte setting = 0b00000000;
byte reading = 0b00000000;
byte master_list[5][2]={
{0b00000001, 0b00000001},
{0b00000010, 0b00000010},
{0b00000011, 0b00000011},
{0b00000100, 0b00000100},
{0b00000101, 0b00000101}
};
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(PL, OUTPUT);
digitalWrite(PL, LOW);
pinMode(s_clock, OUTPUT);
pinMode(s_data, OUTPUT);
Serial1.begin(115200);
}
void loop() {
for (int i=0; i<5; i++){
setting = master_list[i][0];
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, setting);
digitalWrite(latchPin, HIGH);
Serial1.print("Setting value to: ");
Serial1.println(int(setting));
delay(10);
reading = read165();
Serial1.print("Reading value is: ");
Serial1.println(read165());
if (reading==master_list[i][1])
Serial1.println("Setting and Reading Match");
else {
Serial1.println("Mismatch found!");
while(1){}
}
delay(100);
}
// pattern = ~pattern; // Invert the pattern
}
byte read165(){
digitalWrite(PL, HIGH);
byte reed = 0x00;
bool Q = 0;
for ( int i=7; i>=0; i--){
Q = digitalRead(s_data);
bitWrite(reed,i,Q);
digitalWrite(s_clock, HIGH);
digitalWrite(s_clock, LOW);
}
digitalWrite(PL, LOW);
return reed;
}