Advertisement
grist

Prototype #1 basic code

Jul 16th, 2012
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.15 KB | None | 0 0
  1. /*
  2.  
  3.   RGB2.pde
  4.  
  5.   Cycles through the colors of a RGB LED
  6.  
  7.   Adapted from SparkFun Arduino Inventor's Kit CIRC-RGB
  8.  
  9. */
  10.  
  11. // LED leads connected to PWM pins
  12. const int RED_LED_PIN = 9;
  13. const int GREEN_LED_PIN = 10;
  14. const int BLUE_LED_PIN = 11;
  15. // for use by the colour balance controls
  16. int RED_MAX = 255;
  17. int GREEN_MAX = 255;
  18. int BLUE_MAX = 255;
  19.  
  20. // Potentiometer for basic adjustment
  21. const byte POT_PIN = 0;
  22.  
  23. // an array to hold the brightness values
  24. int vals[3] = {0,0,0};
  25. // Length of time we spend showing each color
  26. const int DISPLAY_TIME = 5; // In milliseconds
  27. //a general purpose counter
  28. int i;
  29.  
  30. void setup() {
  31.     // blank the leds to start
  32.     showRGB(0,0,0);
  33.     Serial.begin(115200); // for debugging
  34. }
  35.  
  36. void loop() {
  37.  
  38.   // cycle through some patterns
  39.   noFade(5);
  40.   fadeAll(3);
  41.   fadeOne(3);
  42.   fadeTwo(3);
  43.   fadeThree(3);
  44.    //strobeOne(3600);
  45.  
  46. }
  47.  
  48. void strobeOne(int secs) {
  49.     // strobe all the leds for a varying on time based on the pot position
  50.     // all times apart from running time are in milliseconds
  51.     int off_time = 67; // not used
  52.     int on_time = 10;
  53.     double long end_time = millis() + (secs * 1000);
  54.     while (millis() < end_time) {
  55.         analogWrite(RED_LED_PIN, 255);
  56.         analogWrite(GREEN_LED_PIN, 255);
  57.         analogWrite(BLUE_LED_PIN, 255);
  58.  
  59.         delay(on_time);
  60.         analogWrite(RED_LED_PIN, 0);
  61.         analogWrite(GREEN_LED_PIN, 0);
  62.         analogWrite(BLUE_LED_PIN, 0);
  63.         //  getting the strobe timing from the pot
  64.         delay(analogRead(POT_PIN));
  65.     }
  66.    
  67. }
  68.  
  69. void noFade(int secs) {
  70.     // All on full for the duration
  71.     unsigned long end_time = millis() + secs * 1000;
  72.     while (millis() < end_time) {
  73.      showRGB(255,255,255);
  74.      delay(10);  // just because
  75.  
  76.     }
  77. }
  78.  
  79. void fadeAll(int reps) {
  80.   // fade all leds up and back down together 3 times
  81.   for (int x=0;x<reps;x++) {
  82.       for (i=0;i<255;i++) {
  83.           showRGB(i,i,i);
  84.           delay(DISPLAY_TIME);
  85.       }
  86.       for (i=255;i>-1;i--) {
  87.           showRGB(i,i,i);
  88.           delay(DISPLAY_TIME);
  89.       }
  90.   }
  91. }
  92.  
  93. void fadeOne(int reps) {
  94.   // fade up each colour in turn
  95.   for (int x=0;x<reps;x++) {
  96.       for (int led=0;led<3;led++) {
  97.           for (i=0;i<255;i++) {
  98.               vals[0] = i;
  99.               vals[1] = 0;
  100.               vals[2] = 0;
  101.               showRGB(vals[led],vals[(led+1)%3],vals[(led+2)%3]);
  102.               delay(DISPLAY_TIME);
  103.           }
  104.           for (i=255;i>-1;i--) {
  105.               vals[0] = i;
  106.               vals[1] = 0;
  107.               vals[2] = 0;
  108.               showRGB(vals[led],vals[(led+1)%3],vals[(led+2)%3]);
  109.               delay(DISPLAY_TIME);
  110.           }      
  111.       }
  112.   }
  113. }
  114.  
  115. void fadeTwo(int reps) {
  116.   // now fade up 1 while fading down another
  117.   for (int x=0;x<reps;x++) {
  118.       for (int led=0;led<3;led++) {
  119.           for (i=0;i<255;i++) {
  120.               vals[0] = i;
  121.               vals[1] = 255-i;
  122.               vals[2] = 0;
  123.               showRGB(vals[led],vals[(led+1)%3],vals[(led+2)%3]);
  124.               // delay twice as long because we're doing 2 things at once
  125.               delay(DISPLAY_TIME * 2);
  126.           }
  127.       }
  128.   }
  129. }
  130.  
  131. void fadeThree(int reps) {
  132.   // same, but with the third led lit this time.
  133.   for (int x=0;x<reps;x++) {
  134.       for (int led=2;led>-1;led--) {
  135.           for (i=0;i<255;i++) {
  136.               vals[0] = i;
  137.               vals[1] = 255-i;
  138.               vals[2] = 255;
  139.               showRGB(vals[led],vals[(led+1)%3],vals[(led+2)%3]);
  140.               delay(DISPLAY_TIME * 2);
  141.           }
  142.       }    
  143.   }
  144. }
  145.  
  146. void showRGB(byte red_value, byte green_value, byte blue_value) {
  147.   //red_value = constrain(red_value,0,RED_MAX);
  148.   //green_value = constrain(green_value,0,GREEN_MAX);
  149.   //blue_value = constrain(blue_value,0,BLUE_MAX);
  150.   // hacking a global brightness control in here for now
  151.   int led_max = map(analogRead(POT_PIN), 0, 1023, 0, 255);
  152.   RED_MAX = led_max;
  153.   GREEN_MAX = led_max;
  154.   BLUE_MAX = led_max;
  155.   analogWrite(RED_LED_PIN, constrain(red_value,0,RED_MAX));
  156.   analogWrite(GREEN_LED_PIN, constrain(green_value,0,GREEN_MAX));
  157.   analogWrite(BLUE_LED_PIN, constrain(blue_value,0,BLUE_MAX));
  158.    
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement