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:
(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.
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.
and keep data sending out in leds1 , leds2
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
Post a Comment