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.

Revisions

  1. phardy created this gist Sep 15, 2014.
    48 changes: 48 additions & 0 deletions gistfile1.ino
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,48 @@
    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;
    }