Arduino Tutorial 13: LCD + RGB

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. Es una mezcla del tutorial 3, el led RGB y el tutorial 10, la LCD.
 

Esquema

El esquema de esta práctica es el siguiente:
 esquema ldr+lcd
 

Código

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
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 Eloy, un amigo informático, el cual ha sido capaz de hacer este código:

Otro ejemplo:

#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

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *