Página 1 de 1

GLCD,

MensagemEnviado: 05 Nov 2016 18:32
por Vonnilmam
Olá a todos os amigos, aqui é o veio vonnilmem, dinovo...rs

Estou defronte a um novo desafio, inventei de mexer com um GLCD de 128x64 monocromático.

Bom eu já aprendi a enviar imagem para ele, editar a imagem no paint e tal,

Entendi também como enviar um caracter para certa posição do GLCD, através das instruções do Mikroc, até ai tudo bem.

Agora eu queria entender como faço para criar uma tabela com varias strings, tipo: Nome, Rua, CEP, etc...e depois ir chamando esses textos e qual instrução eu usaria para jogar para o GLCD...minha cuca tá fervendo.

Obrigado pela ajuda.

Re: GLCD,

MensagemEnviado: 05 Nov 2016 18:47
por andre_luis
Não seria a função glcd_write_text ?

Re: GLCD,

MensagemEnviado: 05 Nov 2016 18:54
por Vonnilmam
Oi, Andre.

Sim essa instrução imprime um texto apenas no glcd,

Eu quero é ler uma tabela, onde terá varios nomes (textos) e eu queria ir lendo essa tabela e jogando no glcd, é isso que eu quero entender como fazer.

Re: GLCD,

MensagemEnviado: 05 Nov 2016 19:26
por andre_luis
Teria de fazer algo desse tipo:

cpp code
const char String1[] = "NOME        :" ; // linha n
const char String2[] = "CEP :" ; // linha n+1
const char String3[] = "ENDERECO :" ; // linha n+2
int Glcd_Write_Text(&String1[], 10, 1, 1);
int Glcd_Write_Text(&String2[], 10, 2, 1);
int Glcd_Write_Text(&String3[], 10, 3, 1);


É logico que pra fazer do modo como voce quer, teria de construir essa tabela a partir das strings acima, mas como isso seria implementado depende da estrutura do seu programa, mas o essencial tá aí ( detalhe, não foi testado... )

Re: GLCD,

MensagemEnviado: 05 Nov 2016 19:30
por eletroinf
Algo do tipo:

Código: Selecionar todos
 char myText[] = "Meu texto pra teste!";


(...)

Código: Selecionar todos
 glcd_write_text(my_Text);

Re: GLCD,

MensagemEnviado: 06 Nov 2016 09:52
por Vonnilmam
Então amigos, eu entendi e agradeço o esforço em ajudar-me.

A implementação do programa é bem simples, até agora fiz duas tabelas de imagens para apresentar na inicialização e depois fiz a inicialização básica do glcd, conforme exemplos no próprio mikroc.

O que andre sugeriu já existe no corpo inicial e faz parte da montagem da tela após a geração de imagens.

Agora a dica do eletroinf foi essencial, agora aprendi como fazer a instrução "glcd_write_text (MYTEXTO)" receber uma variável de texto.

Tenho que aprender agora como fazer uma tabela, onde irei colocar varios textos, tipo: Nome, local, data, etc...e como acessar essa tabela e puxar esses nomes para depois jogar dentro da variavel MYTEXTO ...ai é que tá pegando, não consigo visualizar o raciocinio...se fosse em assembler, eu montaria uma tabela com todos os dados de texto e depois faria a leitura de byte a byte e iria chutando um a um para o display, moleza, agora em C, tô penando com as instruções, qual usar, enfim, até eu assimilar as instruções de forma lógica é dose...tenham paciência comigo....rss

Segue a rotina que fiz ate´aqui com as dicas do andretpron e eletroinf

Obrigado

Re: GLCD,

MensagemEnviado: 06 Nov 2016 09:57
por Vonnilmam
Detalhe,

A minha tabela conterá, 220 textos, com 17 caracteres cada um, entenderam porque teóricamente teria que jogar tudo numa tabela.

Não sei se consegui postar corretamente o programinha, vou tentar dinovo...
GLCD_V2.c

Re: GLCD,

MensagemEnviado: 06 Nov 2016 10:01
por Vonnilmam
Uma pequena dúvida me surgiu agora.

Como eu sei se estou armazenando uma variável na RAM ou na Memória de programa, como eu identifico isso.

Obrigado

Re: GLCD,

MensagemEnviado: 06 Nov 2016 15:20
por Vonnilmam
Boa tarde, amigos


Pelo menos de tanto eu xeretar, acabei encontrando uma instrução STRCPY que faz a cópia de um TEXTO para uma variavel "ARRAY", bom estou conseguindo,
Fazer a rotina funcionar,

O principio é o seguinte:

Tenho vários textos que serão incluidos numa determinada área do glcd, porém esses textos devem seguir a orientação de escrita de uma variável que serviria como indexador, a idéia inicial que tinha exposto aos amigos do forum, era como eu poderia fazer isso através de uma tabela, nessa tabela estaria os textos com tamanho FIXO.
no meu caso 17 caracteres.

Minha dúvida era como ler essa tabela de forma que pude-se ler um texto inteiro num determinado endereço da tabela e transferir para uma array.

Até o momento resolvi parcialmente o problema, fazendo assim:

Ao invés da tabela, criamos uma variável "DATAIN" e um array "TXT"[17], através da instrução SWITCH carreguamos vários textos com 17 caracteres máximo e fizemos a atribuição com o STRCPY, assim que coincide o numeral contido em DATAIN com o CASE em sí, desvia para a rotina GLCD_WRITE_TEXT (TXT)....

Funciona legal. Mas o foco desse post, é entender como fazer isso através de uma tabela, onde conteria os textos referidos...

Obrigado

Re: GLCD,

MensagemEnviado: 06 Nov 2016 18:41
por andre_luis
Vonnilmam escreveu:Mas o foco desse post, é entender como fazer isso através de uma tabela, onde conteria os textos referidos...


Bom, como mencionei mais acima, isso dependeria de como voce quer estruturar essa tabela, podendo ser desde linear ( ou seja, tudo no mesmo array ) ou aumentando a dimensão do array, mas eu particulamente faria do primeiro modo, algo do tipo ( também, não testado ):

cpp code
#define STRING1 = "NOME        :" ; 
#define STRING2 = "CEP :" ;
#define STRING3 = "ENDERECO :" ;

const char *Tabela[3] = { STRING1 , STRING2 , STRING3 } ;

// Acessando desse modo:
Tabela[0] = "NOME :" ;
Tabela[1] = "CEP :" ;
Tabela[2] = "ENDERECO :" ;


Se pensasse um pouco mais poderia fazer algo mais estruturado, com um array de 2 dimensões, mas do modo acima poderia ser a 1a tentativa.

Re: GLCD,

MensagemEnviado: 06 Nov 2016 21:25
por Vonnilmam
Tprom, tô tentando digerir sua idéia...

Uma dúvida:

Qual instrução eu uso para converter um número (correspondente a tabela ASCII) para uma string, tipo o número 99 corresponde na tabela ASCII a letra C.

Como eu faça para fazer essa conversão...

Há, eu tentei fazer com o SWITCH como havia mencionado, porém eu preciso de 220 textos na tabela, daí notei que a instrução SWITCH come memória RAM e só consegui ir até 72 textos (lembrando que cada texto é fixo com 17 caracteres)...

Re: GLCD,

MensagemEnviado: 07 Nov 2016 15:38
por ze
hi von
Certa feita indexei assim
Código: Selecionar todos
const char* dsem[] = "Domingo","Segunda","Terca  ","Quarta ","Quinta ","Sexta  ","Sabado ";

e pra imprimir num display lcd usei função personalizada que não vem ao caso te explicar... Mas vc pode tentar algo como
Código: Selecionar todos
for (i=0;i<7;i++) printf(%s, dsem[i]);

Só pra vc ver o conceito. Perceba que não precisa fazer com switch case desde que vc saiba a posição i do texto desejado
Algo como
Código: Selecionar todos
printf(%s,dsem[5]);//"sexta"
printf(%s,"feira");//urrul!!
O bacana é que não usa as gulosas funções semiprontas
Depende 1 pouco do compilador. Espero que funcione no teu