/* * Ejemplo de control de Neopixels con botones para la placa KitMaker de FANIOT. * Este programa enciende una tira de Neopixels conectada al pin 27 y cambia los colores entre rojo, verde y azul * según el botón presionado (izquierdo, central o derecho). * * Para usar este código, debes instalar la librería Adafruit NeoPixel: * En el Arduino IDE, ve a Sketch -> Incluir Librería -> Administrar Bibliotecas... * Busca "Adafruit NeoPixel" y haz clic en instalar. */ #define NEO 27 // Definimos el pin del Neopixel, en este caso es el 27. #define NUM 4 // Definimos el número de Neopixels, en este caso es 4. #define B_IZQ 13 // Definimos el Pin del botón Izquierdo, en este caso es el 13. #define B_ENTER 15 // Definimos el Pin del botón Central, en este caso es el 15. #define B_DER 23 // Definimos el Pin del botón Derecho, en este caso es el 23. #include // Incluimos la librería Neopixel int B_IZQ_EST = 0; // Variable para leer el estado del botón Izquierdo int B_ENTER_EST = 0; // Variable para leer el estado del botón Central int B_DER_EST = 0; // Variable para leer el estado del botón Derecho // Creamos un objeto de tipo Adafruit_NeoPixel Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUM, NEO, NEO_GRB + NEO_KHZ800); /* * La función setup() se ejecuta una vez al encender o resetear la placa. */ void setup() { // Inicializamos la librería Neopixel pixels.begin(); // Ajustamos el nivel de brillo en un 20% (0-64) pixels.setBrightness(5); // Inicializamos los pines digitales de los tres botones como entrada. pinMode(B_IZQ, INPUT); pinMode(B_ENTER, INPUT); pinMode(B_DER, INPUT); } /* * La función loop() se ejecuta continuamente en un ciclo. */ void loop() { // Leemos el estado de los botones B_IZQ_EST = digitalRead(B_IZQ); // Estado del botón Izquierdo B_ENTER_EST = digitalRead(B_ENTER); // Estado del botón Central B_DER_EST = digitalRead(B_DER); // Estado del botón Derecho // Comprobamos si se presiona el botón Izquierdo if (B_IZQ_EST == LOW) { // Cambiamos el color de los Neopixels a rojo setColor(255, 0, 0); // Rojo } // Comprobamos si se presiona el botón Central else if (B_ENTER_EST == LOW) { // Cambiamos el color de los Neopixels a verde setColor(0, 255, 0); // Verde } // Comprobamos si se presiona el botón Derecho else if (B_DER_EST == LOW) { // Cambiamos el color de los Neopixels a azul setColor(0, 0, 255); // Azul } } /* * Función para establecer el color de todos los Neopixels * * Parámetros: * - int r: valor de rojo (0-255) * - int g: valor de verde (0-255) * - int b: valor de azul (0-255) */ void setColor(int r, int g, int b) { // Iteramos sobre cada Neopixel for (int i = 0; i < NUM; i++) { // Establecemos el color RGB en el Neopixel actual pixels.setPixelColor(i, pixels.Color(r, g, b)); } // Enviamos la actualización de color a todos los Neopixels pixels.show(); }