I wrote a simple test sketch for Arduino to run through the values of the 16 channel analog mux sold by Sparkfun. (or just the chip if you are making your own PCB) This may be redundant information, but I thought I would post it for anyone looking. (If some is good, and more is better, then too much should be just enough.
At the very least, others can copy/paste the out pin call values if they like.) For the test circuit, connect all outs of the mux to LEDs and ground the LEDs. (I like to use header pins for these breakout boards so that I can test them on breadboard and easily add them to a proto later. This makes it easy to create this test circuit with some jumpers, LEDs and a breadboard.) Connect power, ground, and the five needed digital pins, I used 2 - 6. There are five pins including the enable pin. Copy the sketch and watch it go. Delete uneeded code and just use the calls if you like. - Definately check the pins on your board, I too had to repair one on mine. THE MAIN INPUT PIN!!!! :o
//assign digital pins
int EN = 2;
int S0 = 3;
int S1 = 4;
int S2 = 5;
int S3 = 6;
//create output number calls
void out0()
{
digitalWrite (EN, LOW);
digitalWrite (S0, LOW);
digitalWrite (S1, LOW);
digitalWrite (S2, LOW);
digitalWrite (S3, LOW);
}
void out1()
{
digitalWrite (EN, LOW);
digitalWrite (S0, HIGH);
digitalWrite (S1, LOW);
digitalWrite (S2, LOW);
digitalWrite (S3, LOW);
}
void out2()
{
digitalWrite (EN, LOW);
digitalWrite (S0, LOW);
digitalWrite (S1, HIGH);
digitalWrite (S2, LOW);
digitalWrite (S3, LOW);
}
void out3()
{
digitalWrite (EN, LOW);
digitalWrite (S0, HIGH);
digitalWrite (S1, HIGH);
digitalWrite (S2, LOW);
digitalWrite (S3, LOW);
}
void out4()
{
digitalWrite (EN, LOW);
digitalWrite (S0, LOW);
digitalWrite (S1, LOW);
digitalWrite (S2, HIGH);
digitalWrite (S3, LOW);
}
void out5()
{
digitalWrite (EN, LOW);
digitalWrite (S0, HIGH);
digitalWrite (S1, LOW);
digitalWrite (S2, HIGH);
digitalWrite (S3, LOW);
}
void out6()
{
digitalWrite (EN, LOW);
digitalWrite (S0, LOW);
digitalWrite (S1, HIGH);
digitalWrite (S2, HIGH);
digitalWrite (S3, LOW);
}
void out7()
{
digitalWrite (EN, LOW);
digitalWrite (S0, HIGH);
digitalWrite (S1, HIGH);
digitalWrite (S2, HIGH);
digitalWrite (S3, LOW);
}
void out8()
{
digitalWrite (EN, LOW);
digitalWrite (S0, LOW);
digitalWrite (S1, LOW);
digitalWrite (S2, LOW);
digitalWrite (S3, HIGH);
}
void out9()
{
digitalWrite (EN, LOW);
digitalWrite (S0, HIGH);
digitalWrite (S1, LOW);
digitalWrite (S2, LOW);
digitalWrite (S3, HIGH);
}
void out10()
{
digitalWrite (EN, LOW);
digitalWrite (S0, LOW);
digitalWrite (S1, HIGH);
digitalWrite (S2, LOW);
digitalWrite (S3, HIGH);
}
void out11()
{
digitalWrite (EN, LOW);
digitalWrite (S0, HIGH);
digitalWrite (S1, HIGH);
digitalWrite (S2, LOW);
digitalWrite (S3, HIGH);
}
void out12()
{
digitalWrite (EN, LOW);
digitalWrite (S0, LOW);
digitalWrite (S1, LOW);
digitalWrite (S2, HIGH);
digitalWrite (S3, HIGH);
}
void out13()
{
digitalWrite (EN, LOW);
digitalWrite (S0, HIGH);
digitalWrite (S1, LOW);
digitalWrite (S2, HIGH);
digitalWrite (S3, HIGH);
}
void out14()
{
digitalWrite (EN, LOW);
digitalWrite (S0, LOW);
digitalWrite (S1, HIGH);
digitalWrite (S2, HIGH);
digitalWrite (S3, HIGH);
}
void out15()
{
digitalWrite (EN, LOW);
digitalWrite (S0, HIGH);
digitalWrite (S1, HIGH);
digitalWrite (S2, HIGH);
digitalWrite (S3, HIGH);
}
//bypass mux
void bypass()
{
digitalWrite (EN, HIGH);
}
//test mux
int pinCount;
//
void setup()
{
//open serial for monitor, set pinMode
Serial.begin (9600);
pinMode (EN, OUTPUT);
pinMode (S0, OUTPUT);
pinMode (S1, OUTPUT);
pinMode (S2, OUTPUT);
pinMode (S3, OUTPUT);
}
//
void loop()
{
//loop to iterate over all 16 pins
delay (250); //delay for light on, comment out to see variation
bypass(); //turns off all lights for delay time, comment out to see variation
delay (250); //comment this and all above out for super fast light show
if (pinCount == 0)
{
out0();
pinCount = (pinCount + 1);
Serial.println ("out 0");
}
else if (pinCount == 1)
{
out1();
pinCount = (pinCount + 1);
Serial.println ("out 1");
}
else if (pinCount == 2)
{
out2();
pinCount = (pinCount + 1);
Serial.println ("out 2");
}
else if (pinCount == 3)
{
out3();
pinCount = (pinCount + 1);
Serial.println ("out 3");
}
else if (pinCount == 4)
{
out4();
pinCount = (pinCount + 1);
Serial.println ("out 4");
}
else if (pinCount == 5)
{
out5();
pinCount = (pinCount + 1);
Serial.println ("out 5");
}
else if (pinCount == 6)
{
out6();
pinCount = (pinCount + 1);
Serial.println ("out 6");
}
else if (pinCount == 7)
{
out7();
pinCount = (pinCount + 1);
Serial.println ("out 7");
}
else if (pinCount == 8)
{
out8();
pinCount = (pinCount + 1);
Serial.println ("out 8");
}
else if (pinCount == 9)
{
out9();
pinCount = (pinCount + 1);
Serial.println ("out 9");
}
else if (pinCount == 10)
{
out10();
pinCount = (pinCount + 1);
Serial.println ("out 10");
}
else if (pinCount == 11)
{
out11();
pinCount = (pinCount + 1);
Serial.println ("out 11");
}
else if (pinCount == 12)
{
out12();
pinCount = (pinCount + 1);
Serial.println ("out 12");
}
else if (pinCount == 13)
{
out13();
pinCount = (pinCount + 1);
Serial.println ("out 13");
}
else if (pinCount == 14)
{
out14();
pinCount = (pinCount + 1);
Serial.println ("out 14");
}
else if (pinCount == 15)
{
out15();
pinCount = 0;
Serial.println ("out 15");
}
![]()