En línea

Tenemos 26 invitados conectado

Redes Sociales

feedfacebookyoutube

picasa

You are here: Home Tutoriales Arduino Arduino avanzado T03AA - LCD 16x2 Menú
Arduino avanzado T03AA - LCD 16x2 Menú PDF Imprimir E-mail
Viernes, 30 de Diciembre de 2011 00:00
Menu_LCD_bb

Este tutorial tiene la finalidad de explicar la aplicación de una pantalla LCD en nuestros proyectos, además profundizaremos en la manipulación de datos en la LCD y crearemos un menú para ampliar el control!!!! y como practica vamos a realizar un menú para leer entradas, encender salidas e imprimir mensajes, Aspiramos que esta información te sirva para futuros proyectos :D

 

 

 

 

 

Adquiere los componentes para este proyecto en:


Tabla_LCD_Menu

 

 

 

 

Estructuras de programación

 

Para comprender este código es recomendable que estemos familiarizados con programación estructurada ya que nos facilita la organización del programa, este tipo de programación nos trae muchas ventajas en cuanto a depuración organización y comprensión de un código. El componente fundamental de la programación estructurada son las funciones, por ejemplo delay(); esta instrucción en realidad es una función en la cual podemos cargar valores a un contador dicho valor se carga dentro de los corchetes por ejemplo delay(500); cargamos 500 en el contador, en realidad esta función delay(valor del contador); esta estructurada así :

 

delay(contador) {

while (contador interno < contador) {

contador interno = cantador interno+1;

}

return;

}

 

y como puedes ver con la programación estructurada podemos omitir algunos detalles y acortar el programa principal (void loop). En  esencia es lo que vamos a explicar en este tutorial; por otro lado vamos a explorar más instrucciones que nos pueden servir para nuestros posteriores proyectos!!!!.

 

Recordemos además los tipos de datos char en los que podemos almacenar los caracteres ASCII así como cadenas de caracteres ASCII denominados String estos van directamente relacionados a los Arreglos; Los arreglos son variables con muchas posiciones una analogía seria un carro con sus asientos convirtiendo el carro en la variable y los puestos en las posiciones, todo con el fin de organizar y poder controlar datos con valores indispensables dentro del las instrucciones de la LCD.

 

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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*
 -------------------------------------- 
  LCD 16x2 - Menu
 --------------------------------------
 
 La LCD que vamos a utilizar es de caracteres (16x2) esto corresponde 
 a 16 columnas y 2 filas y funciona gracias a un Hitachi HD44780 driver.
 
 En este tutorial vamos a hacer un Menu para controlar salidas leer
entradas e imprimir Anuncios.
 
  El circuito:
 * LCD RS pin va conectado al digital pin 12
 * LCD Enable pin conectado al digital pin 11
 * LCD D4 pin conectado al digital pin 5
 * LCD D5 pin conectado al digital pin 4
 * LCD D6 pin conectado al digital pin 3
 * LCD D7 pin conectado al digital pin 2
 * LCD R/W pin conectado a ground
 * los dos ultimos a +5V and ground
 * El cable de la LCD VO va conectado a la referencia del potenciometro
 
*/
  int menu;              
  int salida;                         //Conexion led, buzzer.
  int fotocelda;                      //Conexion Fotocelda
  String AnuncioMenu;                 //Anuncio de impresion LCD 
 
  //Funciones
  void Estado();                      //Funcion Estado de las salidas
  void Anuncio();                     //Funcion para visualizar Mensaje
  void Menu ();                       //Funcion para visualizar el Menu
 
#include <LiquidCrystal.h>            //incluimos la libreria LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//inicializamos los pines 
 
//------------------------------------
//Funcion principal
//------------------------------------
 
void setup() {
 
  pinMode   (13,OUTPUT);              //Led como salida
  pinMode    (6,OUTPUT);              //Buzzer como salida
  lcd.begin     (16, 2);              //Configuramos el tamaño de la LCD
  digitalWrite(15,HIGH);              //Resistancia de PullUp A1 pulsador
}
 
//------------------------------------
//Funcion ciclicla
//------------------------------------
 
void loop() {
 
  menu = analogRead (0);              //iguardamos la posicion del potencio 
  menu = map(menu,0,1023,0,3);        //Escalamos el valor para que sea Menu
 
  switch (menu)  {                    //Valoramos el estadp del Menu
 
    case 0 :                          //si el valor de escala es igual a 0:
      AnuncioMenu = "LED";            //cargamos la impresion
      Menu();                         //Vamos al la funicion Menu
      salida = 13;                    //Seleccionamos al led como salida
      Estado ();                      //Vamos al la funicion Estado
    break;                            //Retorno
 
    case 1 :                          //si el valor de escala es igual a 1:
      AnuncioMenu = "Buzzer";         //cargamos la impresion
      Menu();                         //Vamos al la funicion Menu
      salida = 6;                     //Seleccionamos al buzzer como salida
      Estado ();                      //Vamos al la funicion Menu  
    break;                            //Retorno
 
    case 2 :                          //si el valor de escala es igual a 2:
      AnuncioMenu = "Fotocelda";      //cargamos la impresion
      Menu();                         //Vamos al la funicion Menu
      fotocelda = analogRead (2);     //Cargamos el valor de la fotocelda
      lcd.setCursor(0, 1);            //Asignamos la posicion de impresion
      lcd.print(fotocelda);           //imprimimos el valor de la fotocelda
    break;                            //Retorno
 
    case 3 :                          //si el valor de escala es igual a 3:
      AnuncioMenu =" Tutorial T03AA ";//cargamos la impresion
      Menu();                         //Vamos al la funicion Estado
      Anuncio();                      //Vamos al la funicion anincio
      break;                          //Retorno
  }
 
  delay(300);                         //Retardo entre impresiones
  lcd.clear();                        //Borramos todo de la pantalla
}
 
void Menu ()  {                       //Funcion de Impresion del Menu
 
  lcd.setCursor(0, 0);                //Asignamos la posicion de impresion
  lcd.print(AnuncioMenu);             //imprimimos el Menu
}
 
void Estado()  {                      //Funcion de valoracion ON/OFF salidas
 
  int buton = digitalRead(15);        //A1 como entada digital del pulsador 
 
  if (buton == HIGH) {                //Valoracion estado del pulsador
 
  digitalWrite(salida,HIGH);          //Encendemos la salida
  lcd.setCursor(5, 1);                //Asignamos la posicion de impresion
  lcd.print("ON");                    //Impresion del estado de la salida
  }
 
  else {
 
  digitalWrite(salida,LOW);           //Apagamos la salida  
  lcd.setCursor(0, 1);                //Asignamos la posicion de impresion
  lcd.print("OFF");                   //Impresion del estado de la salida
  } 
}
 
void Anuncio()  {
 
  lcd.setCursor(0, 1);                //Asignamos la posicion de impresion
  lcd.print("  Menu LCD  ;D");        //imprimimos en la LCD
}
 
//Fin programa

 


 

 


 

 

Comentarios
Buscar
¡Sólo los usuarios registrados pueden escribir comentarios!

!joomlacomment 4.0 Copyright (C) 2009 Compojoom.com . All rights reserved."

Última actualización el Jueves, 19 de Enero de 2012 08:17
 
Joomla! Template by Red Evolution - Joomla Web Design