Paso 15: El código
Este código no escrito por mí aunque ligeramente modificado para adaptarse a este proyecto.
Agradecimiento especial a Joshin Arduino cosas más en techhelpblog.com
Copie el código desde aquí
/*
Actualizado Fade RGB LED suavemente a través de 7 colores se desvanece un RGB LED con PWM suavemente a través de 7 diferentes colores haciendo una pausa de 1 segundos en cada color. Re-autoría código bloqueo no programar mediante temporizadores. Conectar un LED de RGB cátodo común con resistencias apropiadas en cada ánodo a tu Arduino Uno; Rojo a pin 6 verde pin 5, azul a la clavija 3, cátodos a GND. desarrollado para Arduino Uno por Joshua David - TechHelpBlog.com por favor no dude en adaptar y utilizar este código en sus proyectos. En contacto conmigo en techhelpblog.com y quiero saber cómo lo has usado! */
#define GRN_PIN 11 #define RED_PIN 13 #define BLU_PIN 12
byte rojo, verde, azul; byte RED_A = 0; byte GREEN_A = 0; byte BLUE_A = 0; int led_delay = 0; byte colour_count = 1; Cuenta los colores a #define colour_count_max 7 //Set que esto al número máximo de colores definida #define colour_delay 4000 //Define la demora entre el cambio de colores en ms #define time_at_colour 1000 //Time quieres un color en ms
Algunos valores de tiempo sin firmar largo TIME_LED = 0; unsigned TIME_COLOUR largo = 0;
Definir colores aquí. Azul #define C1_R 0 #define C1_G 0 #define C1_B 255 //Red #define C2_R 255 #define C2_G 0 #define C2_B //White 0 #define C3_R #define 255 C3_G #define 255 C3_B 255 //Orange #define C4_R #define 255 C4_G #define 186 C4_B //Light 0 #define azul C5_R 0 #define C5_G 168 #define C5_B 255 //Purple #define C6_R 255 #define C6_G 0 #define C6_B 255 //Yellow # definir C7_R 255 #define C7_G 250 #define C7_B 0
void setup() {}
Asignar valores iniciales rojo = C1_R; VERDE = C1_G; AZUL = C1_B; Obtener la led_delay de velocidad led_delay = (colour_delay - time_at_colour) / 255;
analogWrite (GRN_PIN, 0); analogWrite (RED_PIN, 0); analogWrite (BLU_PIN, 0);
}
void loop() {}
Resto de su programa - evitar el uso de delay(); ¡ función!
if(Millis() - TIME_LED > = led_delay) {TIME_LED = millis();
Ejecutar la función de LED para comprobar y ajustar los valores de LED(); }
if(Millis() - TIME_COLOUR > = colour_delay) {TIME_COLOUR = millis();
Ejecutar la función de cambio de color COLOUR(); }
}
void LED() {}
Comprobar los valores y ajustar el valor "Activo" si (rojo! = RED_A) {if(RED_A > RED) RED_A = RED_A - 1; if(RED_A < RED) RED_A ++;} si (verde! = GREEN_A) {if(GREEN_A > GREEN) GREEN_A = GREEN_A - 1; if(GREEN_A < GREEN) GREEN_A ++;} si (azul! = BLUE_A) {if(BLUE_A > BLUE) BLUE_A = BLUE_A - 1; if(BLUE_A < BLUE) BLUE_A ++;}
Asignar valores modificados a las salidas de pwm para cada color led analogWrite (RED_PIN, RED_A); analogWrite (GRN_PIN, GREEN_A); analogWrite (BLU_PIN, BLUE_A);
}
void COLOUR() {}
Incrementar el color por uno o volver a 1 si al máximo if(colour_count < colour_count_max) colour_count ++; Else colour_count = 1;
if(colour_count == 1) {rojo = C1_R; VERDE = C1_G; AZUL = C1_B; } else if(colour_count == 2) {rojo = C2_R; VERDE = C2_G; AZUL = C2_B; } else if(colour_count == 3) {rojo = C3_R; VERDE = C3_G; AZUL = C3_B; } else if(colour_count == 4) {rojo = C4_R; VERDE = C4_G; AZUL = C4_B; } else if(colour_count == 5) {rojo = C5_R; VERDE = C5_G; AZUL = C5_B; } else if(colour_count == 6) {rojo = C6_R; VERDE = C6_G; AZUL = C6_B; } else if(colour_count == 7) {rojo = C7_R; VERDE = C7_G; AZUL = C7_B; } }