const int PL_165_Pin_01 = 18; /* PL */
const int CP_165_Pin_02 = 19; /* CP */
const int Q7_165_Pin_09 = 21; /* Q7 */
const int numBits = 16; /* Set to 8 * number of shift registers */
void setup() {
Serial.begin(115200);
}
void getSample_74HC165(){
pinMode(Q7_165_Pin_09, INPUT);
pinMode(CP_165_Pin_02, OUTPUT);
pinMode(PL_165_Pin_01, OUTPUT);
digitalWrite(PL_165_Pin_01, LOW);
digitalWrite(PL_165_Pin_01, HIGH);
}
void shiftOut_74HC165(){
digitalWrite(CP_165_Pin_02, LOW);
digitalWrite(CP_165_Pin_02, HIGH); // Shift out the next bit
}
String getInComingStringFrom74HC165()
{
String incoming = "";
// Step 1: Sample
getSample_74HC165();
// Step 2: Shift
for (int i = 0; i < numBits; i++)
{
incoming = incoming + (digitalRead(Q7_165_Pin_09) == HIGH ? "1" : "0");
shiftOut_74HC165();
}
return incoming;
}
int binToDec(String bin)
{
int l = bin.length();
int dec = 0;
for (int i = numBits - 1; i >= 0; i--)
{
if (bin.substring(l - i - 1, l - i) == "1")
{
dec += pow(2, i);
}
}
return dec;
}
void showIncomingInfo(String incoming)
{
int value = binToDec(incoming);
if (
// value != 65535 &&
value != 255 &&
// // value != 4351 &&
value != 0
)
{
// if (value != remainValue)
// {
// remainValue = value;
Serial.print("incoming: ");
Serial.println(incoming);
Serial.print("value: ");
Serial.println(value);
// buttonName = returnButtonNameFrom74HC165_16led_16button(getInComingStringFrom74HC165());
// if (buttonName != "")
// {
// Serial.print("button name: ");
// Serial.println(btnName);
// Serial.println();
// }
// }
}
}
void loop() {
showIncomingInfo(getInComingStringFrom74HC165());
// int value = binToDec(incoming);
// // Step 1: Sample
// digitalWrite(latchPin, LOW);
// digitalWrite(latchPin, HIGH);
// // Step 2: Shift
// Serial.print("Bits: ");
// for (int i = 0; i < numBits; i++) {
// int bit = digitalRead(dataPin);
// if (bit == HIGH) {
// Serial.print("1");
// } else {
// Serial.print("0");
// }
// digitalWrite(clockPin, HIGH); // Shift out the next bit
// digitalWrite(clockPin, LOW);
// }
// Serial.println();
// delay(100);
}