int latchPin = 3;
int clockPin = 4;
int dataPin = 2;
int load = 5;
int latchpin2 = 7;
int dataPin2 = 8;
int clkin = 6;
int no_of_pins = 32;
int loop_iter = no_of_pins + 1;
int led_green = 9;
unsigned long out_data[33] = {0, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536,
131072, 262144, 524288, 1048576, 2097152, 4194304, 8388608, 16777216, 33554432, 67108864,
134217728, 268435456, 536870912, 1073741824, 2147483648};
uint16_t data = 2147483648; //1110001100101110
byte A = 0;
byte B = 0;
byte C = 0;
byte D = 0;
unsigned long b_map[] = {0};
void setup() {
Serial.begin(9600);
// put your setup code here, to run once:
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(load, OUTPUT);
pinMode(latchpin2, OUTPUT);
pinMode(clkin, OUTPUT);
pinMode(dataPin2, INPUT_PULLUP);
pinMode(led_green, OUTPUT);
}
void loop() {
for(int j = 0; j < loop_iter; j++)
{
digitalWrite(latchPin, LOW);
for (int n = 24; n >= 0; n-=8)
{
shiftOut(dataPin, clockPin, MSBFIRST, (data >> n));
}
digitalWrite(latchPin, HIGH);
// Write pulse to load pin
digitalWrite(load, LOW);
delayMicroseconds(5);
digitalWrite(load, HIGH);
delayMicroseconds(5);
unsigned long incoming = 0;
digitalWrite(clkin, HIGH);
digitalWrite(latchpin2, LOW);
// for( int i=0; i<=16; i+=8)
// {
A = shiftIn (dataPin2, clkin, LSBFIRST);
B = shiftIn (dataPin2, clkin, LSBFIRST);
C = shiftIn (dataPin2, clkin, LSBFIRST);
D = shiftIn (dataPin2, clkin, LSBFIRST);
incoming = D;
incoming = (incoming << 8) | C;
incoming = (incoming << 8) | B;
incoming = (incoming << 8) | A;
//incoming = (uint32_t)(C << 16) | (uint32_t)(B << 8) | (uint32_t)(A);
//}
digitalWrite(latchpin2, HIGH);
// long x1 = (long)incoming1<<8;
// long x0 = (long)incoming2;
// incoming = (x1<<8) | (x0);
//Print to serial monitor
Serial.print("Sending :");
Serial.println(data);
Serial.print("Receving:");
Serial.println(incoming);
delay(200);
}
}