Advertisement
Electgpl

ARDUINO - Arbolito de Navidad RGB

Dec 6th, 2016
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.78 KB | None | 0 0
  1. int led_R=9, led_G=10, led_B=11,
  2.     Mux_0=5, Mux_1=6, Mux_2=7;
  3. void setup(){
  4.    pinMode(led_R, OUTPUT);
  5.    pinMode(led_G, OUTPUT);
  6.    pinMode(led_B, OUTPUT);
  7.    pinMode(Mux_0, OUTPUT);
  8.    pinMode(Mux_1, OUTPUT);
  9.    pinMode(Mux_2, OUTPUT);
  10. }
  11. void pwm_duty(int r, int g, int b){
  12.    analogWrite(led_R, map(r,0,16,0,255));
  13.    delay(10);
  14.    analogWrite(led_G, map(g,0,16,0,255));
  15.    delay(10);
  16.    analogWrite(led_B, map(b,0,16,0,255));
  17.    delay(10);
  18. }
  19. void output_c(int valor){
  20.    switch(valor){
  21.    case 0:
  22.       digitalWrite(Mux_0, LOW);
  23.       digitalWrite(Mux_1, LOW);
  24.       digitalWrite(Mux_2, LOW);
  25.       break;  
  26.    case 1:
  27.       digitalWrite(Mux_0, HIGH);
  28.       digitalWrite(Mux_1, LOW);
  29.       digitalWrite(Mux_2, LOW);
  30.       break;  
  31.    case 2:
  32.       digitalWrite(Mux_0, LOW);
  33.       digitalWrite(Mux_1, HIGH);
  34.       digitalWrite(Mux_2, LOW);
  35.       break;  
  36.    case 3:
  37.       digitalWrite(Mux_0, HIGH);
  38.       digitalWrite(Mux_1, HIGH);
  39.       digitalWrite(Mux_2, LOW);
  40.       break;  
  41.    case 4:
  42.       digitalWrite(Mux_0, LOW);
  43.       digitalWrite(Mux_1, LOW);
  44.       digitalWrite(Mux_2, HIGH);
  45.       break;  
  46.    case 5:
  47.       digitalWrite(Mux_0, HIGH);
  48.       digitalWrite(Mux_1, LOW);
  49.       digitalWrite(Mux_2, HIGH);
  50.       break;  
  51.    case 6:
  52.       digitalWrite(Mux_0, LOW);
  53.       digitalWrite(Mux_1, HIGH);
  54.       digitalWrite(Mux_2, HIGH);
  55.       break;  
  56.    case 7:
  57.       digitalWrite(Mux_0, HIGH);
  58.       digitalWrite(Mux_1, HIGH);
  59.       digitalWrite(Mux_2, HIGH);
  60.       break;  
  61.    }
  62. }
  63. void fadeRGB(void){
  64.    int r, g, b, i;
  65.    for(b=0;b<16;b++){
  66.       pwm_duty(16,0,b);
  67.       for(i=0;i<8;i++){
  68.          output_c(i);
  69.          delay(1);
  70.       }
  71.    }
  72.    for(r=16;r>1;r--){
  73.       pwm_duty(r,0,16);
  74.       for(i=0;i<8;i++){
  75.          output_c(i);
  76.          delay(1);
  77.       }
  78.    }
  79.    for(g=0;g<16;g++){
  80.       pwm_duty(0,g,16);
  81.       for(i=0;i<8;i++){
  82.          output_c(i);
  83.          delay(1);
  84.       }
  85.    }
  86.    for(b=16;b>1;b--){
  87.       pwm_duty(0,16,b);
  88.       for(i=0;i<8;i++){
  89.          output_c(i);
  90.          delay(1);
  91.       }
  92.    }
  93.    for(r=0;r<16;r++){
  94.       pwm_duty(r,16,0);
  95.       for(i=0;i<8;i++){
  96.          output_c(i);
  97.          delay(1);
  98.       }
  99.    }
  100.    for(g=16;g>1;g--){
  101.       pwm_duty(16,g,0);
  102.       for(i=0;i<8;i++){
  103.          output_c(i);
  104.          delay(1);
  105.       }
  106.    }
  107. }
  108. void mixRGB(void){
  109.    pwm_duty(0,0,0);
  110.    output_c(0);
  111.    delay(1);
  112.    pwm_duty(0,0,16);
  113.    output_c(1);
  114.    delay(1);
  115.    pwm_duty(0,16,0);
  116.    output_c(2);
  117.    delay(1);
  118.    pwm_duty(0,16,16);
  119.    output_c(3);
  120.    delay(1);
  121.    pwm_duty(16,0,0);
  122.    output_c(4);
  123.    delay(1);
  124.    pwm_duty(16,0,16);
  125.    output_c(5);
  126.    delay(1);
  127.    pwm_duty(16,16,0);
  128.    output_c(6);
  129.    delay(1);
  130.    pwm_duty(16,16,16);
  131.    output_c(7);
  132.    delay(1);
  133. }
  134. void flashRGB(void){
  135.    pwm_duty(8,8,8);
  136.    output_c(0);
  137.    delay(100);
  138.    pwm_duty(0,0,16);
  139.    output_c(1);
  140.    delay(100);
  141.    pwm_duty(0,16,0);
  142.    output_c(2);
  143.    delay(100);
  144.    pwm_duty(0,16,16);
  145.    output_c(3);
  146.    delay(100);
  147.    pwm_duty(16,0,0);
  148.    output_c(4);
  149.    delay(100);
  150.    pwm_duty(16,0,16);
  151.    output_c(5);
  152.    delay(100);
  153.    pwm_duty(16,16,0);
  154.    output_c(6);
  155.    delay(100);
  156.    pwm_duty(16,16,16);
  157.    output_c(7);
  158.    delay(100);
  159. }
  160. void coloresRGB(int r, int g, int b){
  161.    int i;
  162.    for(i=0;i<8;i++){
  163.       pwm_duty(r,g,b);
  164.       for(i=0;i<8;i++){
  165.          output_c(i);
  166.          delay(1);
  167.       }
  168.    }
  169. }
  170. void loop(){
  171.    int i, r, g, b;
  172.    for(i=0;i<5;i++)
  173.       fadeRGB();
  174.    for(i=0;i<100;i++)
  175.       mixRGB();
  176.    for(i=0;i<10;i++)
  177.       flashRGB();
  178.    for(r=0;r<8;r++)
  179.       for(i=0;i<100;i++)
  180.          coloresRGB(b,g,r);
  181.    for(g=0;g<8;g++)
  182.       for(i=0;i<100;i++)
  183.          coloresRGB(b,g,r);
  184.    for(b=0;b<8;b++)
  185.       for(i=0;i<100;i++)
  186.          coloresRGB(b,g,r);
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement