GLCD,

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

GLCD,

Mensagempor Vonnilmam » 05 Nov 2016 18:32

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.
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Re: GLCD,

Mensagempor andre_luis » 05 Nov 2016 18:47

Não seria a função glcd_write_text ?
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: GLCD,

Mensagempor Vonnilmam » 05 Nov 2016 18:54

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.
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Re: GLCD,

Mensagempor andre_luis » 05 Nov 2016 19:26

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... )
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: GLCD,

Mensagempor eletroinf » 05 Nov 2016 19:30

Algo do tipo:

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


(...)

Código: Selecionar todos
 glcd_write_text(my_Text);
"De cada um segundo sua capacidade a cada um segundo sua necessidade."
Avatar do usuário
eletroinf
Word
 
Mensagens: 948
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Re: GLCD,

Mensagempor Vonnilmam » 06 Nov 2016 09:52

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
Você não está autorizado a ver ou baixar esse anexo.
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Re: GLCD,

Mensagempor Vonnilmam » 06 Nov 2016 09:57

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
Você não está autorizado a ver ou baixar esse anexo.
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Re: GLCD,

Mensagempor Vonnilmam » 06 Nov 2016 10:01

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
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Re: GLCD,

Mensagempor Vonnilmam » 06 Nov 2016 15:20

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
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Re: GLCD,

Mensagempor andre_luis » 06 Nov 2016 18:41

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.
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Re: GLCD,

Mensagempor Vonnilmam » 06 Nov 2016 21:25

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)...
VonNilmam "Assembler" e agora "C"
Avatar do usuário
Vonnilmam
Byte
 
Mensagens: 446
Registrado em: 19 Out 2006 14:25
Localização: espacial

Re: GLCD,

Mensagempor ze » 07 Nov 2016 15:38

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
Avatar do usuário
ze
Dword
 
Mensagens: 1655
Registrado em: 05 Jun 2007 14:32


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x