En ese segundo ejemplo de cómo usar los módulos del kit de Arduino voy a mostrar como hacer funcionar el modulo LED RGB.
En el montaje solo se usa ese modulo, habría sido interesante usar tres potenciómetros para ajustar la intensidad de cada color manualmente pero el kit solo incluye uno para el LCD :/
Por ello para cambiar de color se usa una funcion que genera números aleatorios y dependiendo del número se encienden 1, 2 o 3 diodos del LED a determinada intensidad para generar el color deseado. Para variar la intensidad es necesario usar pines PWM que en el caso del Arduino Mega son todos los pines del 0 al 13, el ajuste de la intensidad se ha de hacer con analogWrite() en vez de digitalWrite()
En cuanto al montaje del circuito es muy simple también, basta con unir el pin GND del modulo con GND del Arduino y después los pines R, G y B del modulo con los pines digitales del Arduino que en este ejemplo son 9, 10 y 11
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
/* Author: Alberto Gil Tesa WebSite: http://giltesa.com/?p=14367 License: CC BY-NC-SA 3.0 Description: Ejemplo de uso de un modulo de LED RGB. Cambia el color cada 1 segundo entre 7 colores posibles. http://giltesa.com/wp-content/uploads/2013/07/dealextreme-ejemplo-rgb.png */ #define ledRojo 9 #define ledVerde 10 #define ledAzul 11 #define pause 1000 void setup() { // Configura tres pines como salida, uno para cada pin del Led: pinMode(ledRojo, OUTPUT); pinMode(ledVerde, OUTPUT); pinMode(ledAzul, OUTPUT); // Genera una semilla para crear numeros "aleatorios" a partir de una lectura del pin analogico: randomSeed(analogRead(0)); } void loop() { // Genera un numero aleatorio del 0 al 6, dependiendo del numero se // enciende uno/unos leds a un brillo especifico para generar el color deseado: int numAleatorio = random(7); switch( numAleatorio ) { // Rojo case 0: analogWrite(ledRojo, 204); break; // Verde: case 1: analogWrite(ledVerde, 255); break; // Azul: case 2: analogWrite(ledAzul, 255); break; // Amarillo: case 3: analogWrite(ledRojo, 160); analogWrite(ledVerde, 255); break; // Cian: case 4: analogWrite(ledRojo, 168); analogWrite(ledAzul, 255); break; // Magenta: case 5: analogWrite(ledVerde, 255); analogWrite(ledAzul, 255); break; // Blanco: case 6: analogWrite(ledRojo, 100); analogWrite(ledVerde, 255); analogWrite(ledAzul, 255); break; } // Realiza una pausa y apaga todos los Leds: delay(pause); analogWrite(ledRojo, 0); analogWrite(ledVerde, 0); analogWrite(ledAzul, 0); } |