Basic Demux Sketch.

Hi All,
Glad your here.
I can do the CD4051BE tutorials but I need a demonstration of code for turning one or up to 4 of the leds on for 50ms and then off for another delay. I’ll be using this to control relays which I can do without demuxing.

Every tutorial that I’ve looked at and followed shows how to cycle repeatedly through the 8 instead of what I need to know.

I’ll post a sketch that I’m running with a bread boarded circuit that I’m sure could be altered to show what I need but, would appreciate a simple example of how it’s done. For just one of the 8 LEDs would be fine.

Many thanks,


int totalChannels = 8;

int addressA = 8;
int addressB = 9;
int addressC = 10;
int outputpin = 13;

int A = 0;      //Address pin A
int B = 0;      //Address pin B
int C = 0;      //Address pin C

void setup() {
  // Prepare address pins for output
  pinMode(addressA, OUTPUT);
  pinMode(addressB, OUTPUT);
  pinMode(addressC, OUTPUT);
  // Prepare write/output pin 
  pinMode(outputpin, OUTPUT);

void loop() {
  //Select each pin and read value
  for(int i=0; i<totalChannels; i++){
    A = bitRead(i,0); //Take first bit from binary value of i channel.
    B = bitRead(i,1); //Take second bit from binary value of i channel.
    C = bitRead(i,2); //Take third bit from value of i channel.

    //Write address to mux
    digitalWrite(addressA, A);
    digitalWrite(addressB, B);
    digitalWrite(addressC, C);

    //Write value
    digitalWrite(outputpin, 1);
    //Set delay to 1000 and then to 1 to see difference

Silent help?

From what I can tell in the datasheet, that chip will only hook you up to one thing at a time. Perhaps you could share these tutorials you said you looked at and give some context to your question. That might help you get more responses. Linking the datasheet too so people don't have to hunt it down with google like I did would probably help you get more responses as well.

Thank you Delta_G,

I assumed that there were many here that have used the device and knew how to address a single channel.

I stumbled onto a method that is functional, so I'll work with that and with hold my request for help for the time being.

thanks again,

bro d