Arduino TUTORIAL parte 12 : LCD + RGB

Publicado el 22 agosto 2013 por Guille

En esta práctica vamos a conectar el led rgb con la pantalla ldr. El color que vaya luciendo en el led, aparecerá escrito en la pantalla ldr. Le doy las gracias a Jenny y a Eloi por su trabajo.

El esquema de esta práctica es el siguiente:


Para el código, hemos juntado la práctica del led rgb y el la de la lcd:

#include <LiquidCrystal.h>
   //declaramos los pines de la ldr    LiquidCrystal lcd(12, 11, 10, 9, 8, 7);       //Declaramos los puertos de entradas y salidas y variables    int ledRojo = 1; //Declarar Pin LED Rojo    int ledVerde=3; //Declarar Pin LED Verde    int ledAzul=2;//Declarar Pin LED Azul       //------------------------------------    //Funcion principal    //------------------------------------    void setup() // Se ejecuta cada vez que el Arduino se inicia    {    pinMode(ledRojo,OUTPUT);//El LED Rojo como salida    pinMode(ledVerde,OUTPUT); //El LED Verde como salida    pinMode(ledAzul,OUTPUT);//El LED Azul como salida       }       //------------------------------------    //Funcion ciclicla    //------------------------------------    void loop() // Esta funcion se mantiene ejecutando    {   //cuando se da energia al Arduino       // Se llama a la funcion Color que recibe    // 1er posicion: Rojo    // 2da posición: Verde    // 3ra posición: Azul       lcd.print("Rojo");    color(255,0,0);   //Rojo       lcd.print("Verde");    color(0,255,0);   //Verde       lcd.print("Azul");    color(0,0,255);   //Azul          }       //------------------------------------    //Funcion color    //------------------------------------    void color(int rojo, int verde, int azul)    {       //Escritura del color Rojo    analogWrite(ledRojo, 255-rojo);       //Escritura del color Verde    analogWrite(ledVerde, 255-verde);       //Escritura del color Azul    analogWrite(ledAzul, 255-azul);         delay(1000);    lcd.clear();//limpia la pantalla ldr    lcd.setCursor(0, 1);//pone el cursor en el inicio de la pantalla ldr    }       //Fin programa
……………………………………………………………………………………………………………………………………………..
Aquí os dejo un vídeo de lo que hace la práctica:
Para los que sabéis un poco más de programación, aquí os dejo otro código más complicado, pero más profesional.
Debo dar las gracias a Eloi, un amigo informático, el cual ha sido capaz de hacer este código:
………………………………………………………………………………………………….
#include <LiquidCrystal.h>
#define SIZE_COLOR_ARRAY 3
   class COLOR_RGB {    public:    int red;    int green;    int blue;    char *name;    COLOR_RGB(char *_name, int _red, int _green, int _blue);    };       COLOR_RGB::COLOR_RGB(char *_name, int _red, int _green, int _blue)    {    name = _name;    red = _red;    green = _green;    blue = _blue;    }

   // initialize the library with the numbers of the interface pins    LiquidCrystal lcd(12, 11, 10, 9, 8, 7);    /*    ---------------------------------------------    LED RGB - Tabla de Colores    ---------------------------------------------    */       //--------------------------------------------------    //Declaramos los puertos de entradas y salidas y variables    //--------------------------------------------------    int ledRojo = 1; //Declarar Pin LED Rojo    int ledVerde=3; //Declarar Pin LED Verde    int ledAzul=2;//Declarar Pin LED Azul       COLOR_RGB colores[SIZE_COLOR_ARRAY] = {COLOR_RGB("Rojo",255,0,0),COLOR_RGB("Verde",0,255,0),COLOR_RGB("Azul",0,0,255)};       //------------------------------------    //Funcion principal    //------------------------------------    void setup() // Se ejecuta cada vez que el Arduino se inicia    {    pinMode(ledRojo,OUTPUT);//El LED Rojo como salida    pinMode(ledVerde,OUTPUT); //El LED Verde como salida    pinMode(ledAzul,OUTPUT);//El LED Azul como salida    }       //------------------------------------    //Funcion ciclicla    //------------------------------------    void loop() // Esta funcion se mantiene ejecutando    {   //cuando se da energia al Arduino       // Se llama a la funcion Color que recibe    // 1er posicion: Rojo    // 2da posición: Verde    // 3ra posición: Azul       while(1)    {    for(int i=0;i<SIZE_COLOR_ARRAY;i++)    {    setColor(i);    }    }    }       //------------------------------------    //Funcion color    //------------------------------------       void setColor(int i)    {    // Limpiar pantalla    lcd.clear();    //Escritura del color Rojo    analogWrite(ledRojo, 255-colores[i].red);       //Escritura del color Verde    analogWrite(ledVerde, 255-colores[i].green);       //Escritura del color Azul en el LED    analogWrite(ledAzul, 255-colores[i].blue);       // Escribir el nombre en la pantalla LCD    lcd.print(colores[i].name);       delay(1000);    } //Fin programa