OBJETIVOS
- Crear un programa en C que pida al usuario texto y lo muestre por la pantalla LCD, pantalla a pantalla, mediante la librería WiringPi.
CONSTRUCCIÓN DEL CIRCUITO
Para trabajar con el circuito, podremos optar por trabajar con 4 u 8 pines de datos, permitiendo estos últimos lograr un mayor control de la pantalla.
Debido a que no hay gran diferencia de concepto entre una forma de trabajar y otra, se ha optado por 4 pines de datos ya que así queda el circuito más limpio.
A fin de simplificar el circuito, se ha seguido el convenio de colores rojo cuando se conecta el cable a la línea de + de 5v ( VDD y LED+ ) y azul, cuando se conecta a la línea – de tierra (VSS, LED-, V0, RW). Se han empleado los cables blandos para conectar las líneas de datos con pines programables (D4 a D7) y naranja para conectar a los pines CE0 y CE1 (E y RS). Además, tal y como se muestra en la figura la entrada V0 está puenteada al potenciómetro, aunque no es necesario para que funcione y directivamente se puede conectar a tierra.
Programa lcd.c
/****************************************************************
** **
** lcd.c **
** **
** Este programa captura un texto introducido por el usuario **
** y se muestra por pantalla, de tal manera que se ven dos **
** lineas del mismo y el usuario debe apretar una tecla para **
** ver las dos siguientes. Para la ejecución del mismo es **
** necesario que sea ejecutado como root **
** **
** Autor: M.Alvarez (miguelwarez@gmail.com) 2013 **
** Más ejemplos en http://rpiplus.sourceforge.net **
** **
** License GPLv3 http://www.gnu.org/licenses/gpl-3.0.html **
** **
** Para compilar: **
** gcc -o lcd -l wiringPi lcd.c **
** **
** Para ejecutar: **
** sudo ./lcd **
** **
****************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
#include <string.h> main(){
char cadena[200], letra, linea1[17],linea2[17];
int lon, pos, i, pant=0;
printf("Introduce la cadena para mostrar en pantalla LCD\n");
printf("pulsa cualquier tecla para avanzar\n");
gets(cadena);
lon=strlen(cadena);
pos=0;
if (wiringPiSetup () == -1)
exit (1) ;
//describir la pantalla
int fd1 = lcdInit (2, 16, 4, 11, 10, 6,5,4,1,0,0,0,0) ;
//limpiar pantalla
sleep (1) ;
lcdClear(fd1);
while(pos < lon){
i=0;
while(i<16 && pos < lon){
linea1[i]=cadena[pos];
i++;
pos++;
}
linea1[i]='\0';
i=0;
while(i<16 && pos < lon){
linea2[i]=cadena[pos];
i++;
pos++;
}
linea2[i]='\0';
printf("Pantalla %d\n",++pant);
printf("%s\n",linea1);
printf("%s\n",linea2);
sleep(1);
//sacamos la salida por la pantalla LCD
lcdPosition (fd1, 0, 0) ;
lcdPuts (fd1, linea1) ;
lcdPosition(fd1,0,1);
lcdPuts(fd1,linea2);
//esperamos a que el usuario pulse una tecla
fflush(stdin);
getchar();
}
printf("Saliendo\n");
//limpiar pantalla
sleep(1);
lcdClear(fd1); }
** **
** lcd.c **
** **
** Este programa captura un texto introducido por el usuario **
** y se muestra por pantalla, de tal manera que se ven dos **
** lineas del mismo y el usuario debe apretar una tecla para **
** ver las dos siguientes. Para la ejecución del mismo es **
** necesario que sea ejecutado como root **
** **
** Autor: M.Alvarez (miguelwarez@gmail.com) 2013 **
** Más ejemplos en http://rpiplus.sourceforge.net **
** **
** License GPLv3 http://www.gnu.org/licenses/gpl-3.0.html **
** **
** Para compilar: **
** gcc -o lcd -l wiringPi lcd.c **
** **
** Para ejecutar: **
** sudo ./lcd **
** **
****************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <wiringPi.h>
#include <string.h> main(){
char cadena[200], letra, linea1[17],linea2[17];
int lon, pos, i, pant=0;
printf("Introduce la cadena para mostrar en pantalla LCD\n");
printf("pulsa cualquier tecla para avanzar\n");
gets(cadena);
lon=strlen(cadena);
pos=0;
if (wiringPiSetup () == -1)
exit (1) ;
//describir la pantalla
int fd1 = lcdInit (2, 16, 4, 11, 10, 6,5,4,1,0,0,0,0) ;
//limpiar pantalla
sleep (1) ;
lcdClear(fd1);
while(pos < lon){
i=0;
while(i<16 && pos < lon){
linea1[i]=cadena[pos];
i++;
pos++;
}
linea1[i]='\0';
i=0;
while(i<16 && pos < lon){
linea2[i]=cadena[pos];
i++;
pos++;
}
linea2[i]='\0';
printf("Pantalla %d\n",++pant);
printf("%s\n",linea1);
printf("%s\n",linea2);
sleep(1);
//sacamos la salida por la pantalla LCD
lcdPosition (fd1, 0, 0) ;
lcdPuts (fd1, linea1) ;
lcdPosition(fd1,0,1);
lcdPuts(fd1,linea2);
//esperamos a que el usuario pulse una tecla
fflush(stdin);
getchar();
}
printf("Saliendo\n");
//limpiar pantalla
sleep(1);
lcdClear(fd1); }
No hay comentarios:
Publicar un comentario