/* * Multiplexer * * Driving a multiplexed 5X7 LED display. * 1 clock signal drives a decade counter * to select columns 1-5. 1 reset pin. * 7 data lines drive rows 1-7. */ int clockPin = 8; // CP input (pin 14) on 4017 decade counter. int resetPin = 9; // MR (pin 15) on 4017. boolean img[5*7] = { 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0 }; void setup() // run once, when the sketch starts { pinMode(clockPin, OUTPUT); pinMode(resetPin, OUTPUT); // set row pins to be outputs for(int j=0;j<7;j++) pinMode(j, OUTPUT); } void loop() { for (int col=0; col<5; col++) { for(int row=0;row<7;row++) digitalWrite(row, img[col+row*5]); delay(1); // send the next clock pulse // (to move the decade counter digitalWrite(clockPin, HIGH); digitalWrite(clockPin, LOW); }; delay(50); // reset the counter to the first column digitalWrite(resetPin, HIGH); digitalWrite(resetPin, LOW); }