free hardware for me!

I have com into possession of about 100 UCN5832A chips. I figured out what they are and am very excited about what I can do with them, I have one question before I set down this road of discovery - Is there a generic method of communicating with these chips or does it vary from model to model?

What are they? That part number is not found at mouser or digikey.

32Bit Serial Input Latched Driver, originally designed for thermal print heads and commonly used for controlling multiplexed LED's.
I'm still figuring it out but I believe one chip can turn a single serial pin into 32 i/o pins. They are older chips the device they came from was designed and built about 5 years ago

Not getting anyplace without a datasheet.

sorry I was getting it,

The device was originally controled with a BS2, I am pretty sure I have the original code somewhere on our server, If I can find it I am pretty sure I can figure out how to change it over for use with my Arduino


UCN5832A.pdf (257 KB)

I really don't care if its been discontinued, I got 100 of them to play with for free.

so, it appears to function like a shift register, may even be the same thing, I have tried the shift tutorial on the arduino page but no luck, I then tried to break down the basic logic sequence an control the pulses myself but still nothing, I wonder if it is possible this chip is not compatible with the Arduino or ATmega328?

Update, I got it working! there was one slight flaw in my wiring because I needed info not on the data sheet (or atleat not where I new how to find) AND the source code in the shift out tutorial doesn't match up to the descriptions provided.

The code still has me alittle confused though some of the examples have a shiftOut function where others use the built in command, I have the code working but I can't figure out the reason for doing this?

okay so i got everything figured out to an extent. I can use the chip and control all the lights and its great. BUT I have one more question, I borrowed this code from the shift out tutorial

void shiftOut(int myDataPin, int myClockPin, byte myDataOut) {
  // This shifts 8 bits out MSB first, 
  //on the rising edge of the clock,
  //clock idles low

  //internal function setup
  int i=0;
  int pinState;
  pinMode(myClockPin, OUTPUT);
  pinMode(myDataPin, OUTPUT);

  //clear everything out just in case to
  //prepare shift register for bit shifting
  digitalWrite(myDataPin, 0);
  digitalWrite(myClockPin, 0);

  //for each bit in the byte myDataOut?
  //This means that %00000001 or "1" will go through such
  //that it will be pin Q0 that lights. 
  for (i=7; i>=0; i--)  {
    digitalWrite(myClockPin, 0);

    //if the value passed to myDataOut and a bitmask result 
    // true then... so if we are at i=6 and our value is
    // %11010100 it would the code compares it to %01000000 
    // and proceeds to set pinState to 1.
    if ( myDataOut & (1<<i) ) {
      pinState= 1;
    else {  
      pinState= 0;

    //Sets the pin to HIGH or LOW depending on pinState
    digitalWrite(myDataPin, pinState);
    //register shifts bits on upstroke of clock pin  
    digitalWrite(myClockPin, 1);
    //zero the data pin after shift to prevent bleed through
    digitalWrite(myDataPin, 0);

  //stop shifting
  digitalWrite(myClockPin, 0);

I still don't understand why i need to have a shift out function when shift out is a built in command. also this function still only does 8 bits at a time so but the overall program doesn't work unless you have this. Whatever I can't know everything.

However it would seem to me that by changing the 7 to a 15 or 31 i should be able to output 16 or 32 bits at once but when the LEDS turn on they still turn on in groups of 8 (might be 16 but i am running low on LEDS). I think I know why but I would like some confermation... The datasheet for the UCN5832a says that INTERNALLY it has 2 - 16 bit shift registers therefore i am not dealing with a true 32 bit register and the delay I am seeing is because of that.