akoimeexx

RGB Cycler without sin()

Sep 7th, 2011
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.08 KB | None | 0 0
  1. /**
  2.  * Create our rgb structure and declare it below as a global
  3.  */
  4. typedef struct {
  5.     unsigned char red;
  6.     unsigned char green;
  7.     unsigned char blue;
  8. } rgb;
  9. rgb channels = { 255, 0, 0 };
  10.  
  11. /**
  12.  * RGB Rainbow sequencing function. 100% dependent on clock speed.
  13.  * Alternative to including math.h and using sin(), as doubles and floats
  14.  * increase the size of the compiled avr firmware.
  15.  */
  16. void rainbow_sequence(void) {
  17.     //Fade from blue to red
  18.     if(channels.blue > 0 && channels.red == 255 && channels.green == 0) {
  19.         channels.blue--;
  20.     }
  21.     if(channels.blue == 255 && channels.red < 255 && channels.green == 0) {
  22.         channels.red++;
  23.     }
  24.    
  25.     //Fade from green to blue
  26.     if(channels.green > 0 && channels.blue == 255 && channels.red == 0) {
  27.         channels.green--;
  28.     }
  29.     if(channels.green == 255 && channels.blue < 255 && channels.red == 0) {
  30.         channels.blue++;
  31.     }
  32.    
  33.     // Fade from red to green
  34.     if(channels.red > 0 && channels.green == 255 && channels.blue == 0) {
  35.         channels.red--;
  36.     }
  37.     if(channels.red == 255 && channels.green < 255 && channels.blue == 0) {
  38.         channels.green++;
  39.     }
  40. }
Advertisement
Add Comment
Please, Sign In to add comment