pues eso, mi display es de 16x2 y quiero que si el string ocupa 23 caracteres, que imprima los 16 primeros en la primera linea, y los restantes en la linea siguiente del display.
Ya sé que para cambiar de linea es Setcursosr(0,1) pero necesito que me digáis como partir el string en 16 caracteres y luego el resto a parte.
Esto podria andar aunque creo que tal vez haya que terminar tanto a como b con un ‘\0’
aclaro que el habla de un texto de 23 caracteres
en todo caso en lugar de tener fijo ese while(i<24) deberia reemplazarlo por un strlen(hola)
pero no debe superar 32 o sea la capacidad de las dos lineas del LCD 16x2
int i = -1;
char a[16], b[16];
while (i<24) {
i++;
if(i <16)
a[i] = hola[i];
else
b[i-16] = hola[i];
}
¿Qué tal esta otra opción? Está escrita al vuelo, aproximadamente:
uint8t *linea=hola;
vw_send(linea, 16); //para la primera línea
linea+=16; //Avanzamos puntero 16 posiciones
//aquí deberíamos mover cursor a línea 2
vw_send(linea); // Imprime hasta final
1- Cursor del LCD a 0,0
2- loop FOR que imprime de la posición cero hasta la 16 del string
3- salgo del FOR, cursor a 0,1.
4- Otro bucle FOR donde imprimo en la segunda linea ya de la posición 16 hasta la logintud del string (strlen(mensaje))
Ya descubrí a que librería pertenece vw_send(linea, 16); y es a virtualwire.
Ahora no entiendo? se supone que estamos con un LCD, como hace vw_send(linea, 16); para llegar al display? Ademas de tener que agregarla.
surbyte:
Ya descubrí a que librería pertenece vw_send(linea, 16); y es a virtualwire.
Ahora no entiendo? se supone que estamos con un LCD, como hace vw_send(linea, 16); para llegar al display? Ademas de tener que agregarla.
Almaceno lo que recibo en una variable y con un for voy imprimiendo carácter por carácter en el lcd