Go Down

Topic: Light up RGB Led with 74hc595 (Read 1 time) previous topic - next topic

dehlen

Hey, i got a shift register (74hc595) and i'd like to light up my rgb led. Everything is connected but i have problems with the code.
Say my rgb led is connected to Q0,Q1 and Q2 of my shift register (Pin 15,1,2). How can i light up the rgb led (i want to switch between the color blue, green and red). I got this example which is working, but i don't know how to go on and how to achieve the thing mentioned above.

Code: [Select]

//**************************************************************//
//  Name    : shiftOutCode, Hello World                               
//  Author  : Carlyn Maw,Tom Igoe, David A. Mellis
//  Date    : 25 Oct, 2006   
//  Modified: 23 Mar 2010                                 
//  Version : 2.0                                             
//  Notes   : Code for using a 74HC595 Shift Register           //
//          : to count from 0 to 255                           
//****************************************************************

//Pin connected to ST_CP of 74HC595
int latchPin = 8;
//Pin connected to SH_CP of 74HC595
int clockPin = 12;
////Pin connected to DS of 74HC595
int dataPin = 11;



void setup() {
  //set pins to output so you can control the shift register
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
}

void loop() {
  // count from 0 to 255 and display the number
  // on the LEDs

    // take the latchPin low so
    // the LEDs don't change while you're sending in bits:
    digitalWrite(latchPin, LOW);
    // shift out the bits:
    shiftOut(dataPin, clockPin, MSBFIRST, 255);

    //take the latch pin high so the LEDs will light up:
    digitalWrite(latchPin, HIGH);
    // pause before next value:
    delay(500);
 
}


This lights up my rgb led which is has the color white-blue with this code.
Please help me out and give me hints how to change the code so i can control whether my rgb led lights up green, red or blue.

Thanks ! :smiley-roll-sweat:

Grumpy_Mike

Code: [Select]
shiftOut(dataPin, clockPin, MSBFIRST, 255);
See that 255, that is saying make all the outputs a one. That is light up all the LEDs. If you only want to light up one then use a number that has only one bit with a one in it.
Numbers like 1, 2, 4, 8, 16, 32, 64, or 128

dehlen


Code: [Select]
shiftOut(dataPin, clockPin, MSBFIRST, 255);
See that 255, that is saying make all the outputs a one. That is light up all the LEDs. If you only want to light up one then use a number that has only one bit with a one in it.
Numbers like 1, 2, 4, 8, 16, 32, 64, or 128

How do you mean that ?
How can i get the right number to my led or how can i assign a number to one of my led's ?

Grumpy_Mike

Quote
How do you mean that ?

Just like I said, replace that 255 with the number you want. Replace it with a variable output it, delay a time, increment the variable and output it again. Do this in a loop.

Every bit in that number corresponds to one bit on your shift register. You output the number / bit pattern corresponding to what light you want lit.

dhenry

Fairly easy:

Code: [Select]

#define Q0  (1<<0)
#define Q1  (1<<1)
...
#define Q7  (1<<7)

#define LED_R Q0 //red led connects to Q0
#define LED_G Q1 //green led to Q1
#define LED_B Q2 //blue to Q2

...
 shiftOut(dataPin, clockPin, MSBFIRST, LED_R); //turns on red led
 delay(); //waste some time
 shiftOut(dataPin, clockPin, MSBFIRST, LED_R | LED_G); //turn on red + green leds
 delay(); //waste some time
...


Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy