viernes, 27 de diciembre de 2013

Arduino funcion de alineación en un LCD

Esta tarde he estado practicando con los LCD via I2C, y he programado esta función que alinea el texto a la derecha, a la izquierda, lo centra, lo muestra aleatiramente en una fila especifica o muestra el texto aleatoriamnete por todo el display.




El codifo fuente es este:


Código:
/*
Autor: Aitor Martin
Fecha: 27-12-2013
Titulo: 007 Posicionar texto en el LCD
Placa: Arduino uno
Post: 

Código de dominio publico. Se puede distribuir y modificar  libremente, 
siempre y cuando se mencione al autor y se proporcione un enlace a su web.

--------------------------------------------------------------------------------------

LA funcion:
lcd_posiciona (16, 2, 1, 5, "Hola Mundo");
16 = Numero de columnas del LCD.
2  = Numero de filas del LCD.
1  = Fila en la que quieremos mostrar el texto (la primera es 1).
5  = Modo de alineacion.
"Hola Mundo" = El texto que vamos a mostrar.

Modos de alineacion:

1 = Izquierda
2 = Derecha
3 = Centro
4 = Aleatorio aciendo caso a la fila
5 = Aleatorio y no hace caso a la fila
*/


#include <Wire.h> //Para usar el I2C
#include <LiquidCrystal_I2C.h>//Para usar el display I2C

LiquidCrystal_I2C lcd(0x27,16,2); // 0x27 es la direccion del LCD 16x2
 
void setup()
    {
    lcd.init();        //Iniciamos LCD
    lcd.backlight();   //Enciende la iluminacion
    }
 
void loop()
  {
  lcd_posiciona (16, 2, 1, 1, "Alin. Derecha"); //Llamada a la funcion
  delay(2000);    //Espera 2 segundos
  lcd.clear();    //Borra el LCD
  
  lcd_posiciona (16, 2, 1, 2, "Alin. Izquierda"); //Llamada a la funcion
  delay(2000);    //Espera 2 segundos
  lcd.clear();    //Borra el LCD
  
  lcd_posiciona (16, 2, 1, 3, "Alin. Centro"); //Llamada a la funcion
  delay(2000);    //Espera 2 segundos
  lcd.clear();    //Borra el LCD

  for (int i=0; i<10; i++)
    {  
    lcd_posiciona (16, 2, 1, 4, "Alin. Aleatoria"); //Llamada a la funcion
    lcd_posiciona (16, 2, 2, 4, "Respeta fila"); //Llamada a la funcion
    delay(1000);    //Espera 2 segundos
    lcd.clear();    //Borra el LCD
    }
  
  for (int i=0; i<10; i++)
    {
    lcd_posiciona (16, 2, 1, 5, "Hola Mundo");
    delay(1000);
    lcd.clear();
    }
  }

void lcd_posiciona (int lcd_largo, int lcd_alto, int lcdy, int centrar, String texto)

  {
   int lcdx = 0;
   int largo = texto.length();
   int sobrante = lcd_largo - largo;
   int random_sobrante = random (0, (sobrante + 1));
   int random_y = random (0, lcd_alto);
   
   lcdy = lcdy - 1;
   
   switch (centrar)
     {
     case 1: lcdx = 0; break;
     case 2: lcdx = sobrante; break;
     case 3: lcdx = sobrante / 2; break;
     case 4: lcdx = random_sobrante; break;
     case 5:
             lcdx = random_sobrante;
             lcdy = random_y;
             break;
     default: 
     delay(0);// sentencias
     }

    lcd.setCursor(lcdx, lcdy);//Manda texto a las cordenadas calculadas
    lcd.print
(texto);
  } 


No hay comentarios:

Publicar un comentario