Shift registers


hi project based on http://www.arduino.cc/en/tutorial/shiftout , https://learn.adafruit.com/adafruit-arduino-lesson-4-eight-leds/overview.

what have board set in shift out tutorial 7 led's per shift register instead of 8 shown in tutorial.


as code have is:
code: [select]
int latchpin = 8;
int clockpin = 12;
int datapin = 11;

byte leds = 0;


int firstset = 1;

int secondset = 2;

void setup()
{
  pinmode(latchpin, output);
  pinmode(datapin, output); 
  pinmode(clockpin, output);
}

void loop()
{
  leds = 0; 
//for first set of (red) leds / first shift register
if(firstset==1)
{
disleds0();
}
else if(firstset==2)
{
  disleds1();
}
else if(firstset==3)
{
  disleds2();
}

//for second set of (green) leds / second shift register
if(secondset==1)
{
disleds0ss();
}
else if(secondset==2)
{
  disleds1ss();
}
else if(secondset==3)
{
  disleds2ss();
}

}

void updateshiftregister()
{
   digitalwrite(latchpin, low);
   shiftout(datapin, clockpin, lsbfirst, leds);
   digitalwrite(latchpin, high);
}



void disleds0()
{
  bitset(leds, 0);  //if firstset == 1 light first led
    updateshiftregister();
}
void disleds1()
{
  bitset(leds, 1); //if firstset == 2 light second led
    updateshiftregister();
}
void disleds2()
{
  bitset(leds, 2); //if firstset == 3 light third led
    updateshiftregister();
}



void disleds0ss()
{
  bitset(leds, 0); //if secondset == 1 light first led on second shift register
    updateshiftregister();
}
void disleds1ss()
{
  bitset(leds, 1); //if secondset == 2 light second led on second shift register
    updateshiftregister();
}
void disleds2ss()
{
  bitset(leds, 2); //if secondset == 3 light third led on second shift register
    updateshiftregister();
}


(i left out of repeating code make code easier read.)

so problem when run code firstset = 1 , secondset = 2 first 2 led's both sets of led's lighting when in case want first led light on first set of led's / shift register , second led on second set of led's / second shift register.

in more straight forward way how send specific data each shift register.
(as far know have send second shift out, think, don't know how it. )

thanks in advance.

1. rid of cap.
2. put 0.1uf cap each device's vcc pin gnd.
3. fix code output 2 bytes every time want output updated.
code: [select]

void updateshiftregister()
{
   digitalwrite(latchpin, low);
   shiftout(datapin, clockpin, lsbfirst, leds1);
   shiftout(datapin, clockpin, lsbfirst, leds2);
   digitalwrite(latchpin, high);
}

and keep data sending out in leds1 , leds2


Arduino Forum > Using Arduino > LEDs and Multiplexing > Shift registers


arduino

Comments

Popular posts from this blog

VIDIOC_S_FMT error 16, Device or resource busy - Raspberry Pi Forums

using a laptop skeleton to build a pi laptop - Raspberry Pi Forums

Forum for Joomla? - Joomla! Forum - community, help and support