Skip to content

Instantly share code, notes, and snippets.

@phardy
Created September 15, 2014 10:09
Show Gist options
  • Save phardy/b4de7675a80fd7c5e835 to your computer and use it in GitHub Desktop.
Save phardy/b4de7675a80fd7c5e835 to your computer and use it in GitHub Desktop.
uint16_t MuxShield::digitalReadBank(int mux)
{
digitalWrite(_OUTMD,LOW);
digitalWrite(_S0, LOW);
digitalWrite(_S1, LOW);
digitalWrite(_S2, LOW);
digitalWrite(_S3, LOW);
uint16_t val = 0;
switch (mux) {
case 1:
if (digitalRead(_IO1)) { val = val | 1; } // 0000: 0th bit
digitalWrite(_S0, HIGH); // 1000: 1st bit
if (digitalRead(_IO1) == HIGH) { val = val | 2; }
digitalWrite(_S1, HIGH); // 1100: 3rd bit
if (digitalRead(_IO1) == HIGH) { val = val | 8; }
digitalWrite(_S0, LOW); // 0100: 2nd bit
if (digitalRead(_IO1) == HIGH) { val = val | 4; }
digitalWrite(_S2, HIGH); // 0110: 6th bit
if (digitalRead(_IO1) == HIGH) { val = val | 64; }
digitalWrite(_S1, LOW); // 0010: 4th bit
if (digitalRead(_IO1) == HIGH) { val = val | 16; }
digitalWrite(_S0, HIGH); // 1010: 5th bit
if (digitalRead(_IO1) == HIGH) { val = val | 32; }
digitalWrite(_S1, HIGH); // 1110: 7th bit
if (digitalRead(_IO1) == HIGH) { val = val | 128; }
digitalWrite(_S3, HIGH); // 1111: 15th bit
if (digitalRead(_IO1) == HIGH) { val = val | 32516; }
digitalWrite(_S0, LOW); // 0111: 14th bit
if (digitalRead(_IO1) == HIGH) { val = val | 16258; }
digitalWrite(_S1, LOW); // 0011: 12th bit
if (digitalRead(_IO1) == HIGH) { val = val | 4096; }
digitalWrite(_S0, HIGH); // 1011: 13th bit
if (digitalRead(_IO1) == HIGH) { val = val | 8192; }
digitalWrite(_S2, LOW); // 1001: 9th bit
if (digitalRead(_IO1) == HIGH) { val = val | 512; }
digitalWrite(_S1, HIGH); // 1101: 11th bit
if (digitalRead(_IO1) == HIGH) { val = val | 2048; }
digitalWrite(_S0, LOW); // 0101: 10th bit
if (digitalRead(_IO1) == HIGH) { val = val | 1024; }
digitalWrite(_S1, LOW); // 0001: 8th bit
if (digitalRead(_IO1) == HIGH) { val = val | 256; }
digitalWrite(_S3, LOW); // 0000, back to where we started
break;
default:
break;
}
return val;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment