Created
September 15, 2014 10:09
-
-
Save phardy/b4de7675a80fd7c5e835 to your computer and use it in GitHub Desktop.
Revisions
-
phardy created this gist
Sep 15, 2014 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal 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; }