The 74XX151 is a digital multiplexer with 8 inputs addresses with a 3-bit-port and latched through a strobe channel. The following code will do an iterative polling of the different multiplexer's inputs and read the values through a digital input. (The base device is an SN74HC151 or even any available SN74LS151 or an original F74151A.)
// This patch reads a 74HC151 8 inputs digital mux // Enrique Tomas, EMI project, Madrid, June 2006 // warholiano@yahoo.es // www.ultranoise.es //mux variables int input = 6; // digital input to arduino from mux int strobe=5; //digital outputs to control mux int c=4; int b=3; int a=2; // to store the values from mux int val[] = { 0,0,0,0,0,0,0,0}; // digital values to control 8 inputs int c_bin[]={LOW,LOW,LOW,LOW,HIGH,HIGH,HIGH,HIGH}; int b_bin[]={LOW,LOW,HIGH,HIGH,LOW,LOW,HIGH,HIGH}; int a_bin[]={LOW,HIGH,LOW,HIGH,LOW,HIGH,LOW,HIGH}; //aux int contador=0; int entrada=0; int a_val=0; int b_val=0; int c_val=0; void setup() { Serial.begin(9600); pinMode(input, INPUT); pinMode(strobe, OUTPUT); pinMode(c, OUTPUT); pinMode(b, OUTPUT); pinMode(a, OUTPUT); } void loop() { for(entrada=0;entrada<=7;entrada++) { //select mux input a_val=a_bin[entrada]; b_val=b_bin[entrada]; c_val=c_bin[entrada]; digitalWrite(a,a_val); digitalWrite(b,b_val); digitalWrite(c,c_val); //strobe LOW to read digitalWrite(strobe,LOW); //read value val[entrada] = digitalRead(input); // read input value //strobe HIGH to avoid jitters digitalWrite(strobe,HIGH); } //serial printing Serial.print('A'); delay(100); for(contador=0;contador<=7;contador++) { Serial.print(val[contador]); delay(100); } Serial.println(); }