Ir ao conteúdo
  • Cadastre-se

Botao capacitivo (toush) para pic


cesarlg

Posts recomendados

A maioria das telas para embarcados são resistivas,que são muito barato mas em compensação devem se 'calibradas',

 

 

As capacitivas são usadas em Smart Phones,Tablets etc,são mais precisas e não precisam de calibração,mas são caras.

 

 

Para saber se o Touch é resistivo ou capacitivo é simples,se a tela responde ao toque usando um objeto,ela é resistiva,

 

Não usam contato metálico.

 

Comunicação SPI,na grande maioria.

 

Estou tentando terminar um,inclusive um tutorial de como é arquivado uma imagem GIF,BMP para os menus junto com um programa que fiz e uso para capturar os bytes de imagen e ja converter para .C,.H ou BIN.

Segue o link da primeira experiencia;

http://forum.clubedohardware.com.br/forums/topic/1057156-glcd-320x240-touchscreen/

 

Vou ver se monto um Hardware para usar um PIC 18F,mas pode ser que não seja viável pois no vídeo é usado um ARM de 90MIPS,mas mesmo assim a teoria vai ser a mesma.

Primeiramente obrigado pelas explicações...

 

Ah entendi, o lance de ser resistiva ou capacitiva.... Mas então as resistivas, como elas "sentem" o toque, o que ela envia para o pic no momento do toque?

 

Caramba carregar uma imagem bmp ou gif?? wow... e como são "desenhados " os menus botões etc??

 

Só mais uma coisa, porque você precisará de 90mips?? os pics chegam a quanto no MAX.?? se não for usar imagem bmp ou gif o processamento pode ser mais "fraco" ??

 

vou lá ler o topico.. 

Link para o comentário
Compartilhar em outros sites

 

Ah entendi, o lance de ser resistiva ou capacitiva.... Mas então as resistivas, como elas "sentem" o toque, o que ela envia para o pic no momento do toque?

Na verdade são duas membranas 'prensadas' e transparente que exercem uma resistência entre elas que depende do ponto pressionado.

Elas ficam em cima da tela LCD,mas não é perceptível a olho nu.

 

 

Caramba carregar uma imagem bmp ou gif?? wow... e como são "desenhados " os menus botões etc??

São desenhadas em qualquer programa de imagem,eu uso o GIMP pois ele converte para 16 Bits,economizando memoria do Hardware.

No tutorial eu mostro como recortar e transformar a imagem.

 

 

Só mais uma coisa, porque você precisará de 90mips?? os pics chegam a quanto no MAX.?? se não for usar imagem bmp ou gif o processamento pode ser mais "fraco" ??

Olhando os videos do link,não da para perceber que toda a imagem gerada é produzida ponto a ponto na tela toda,isso porque o Micro processa 90MIPS.

Um PIC 18F chega a 12MIPS e tem um vídeo na pagina do link usando um PIC 18F e da para perceber  a 'força' que o PIC fez para gerar texto com movimento.

Imagem BMP,usa o menor processamento possivel na geração de uma imagem pois na verdade é uma sequencia de bytes da imagem.

JPG exige muito processamento para decodificar os bytes do arquivo e gerar uma imagem.

Link para o comentário
Compartilhar em outros sites

Caramba vi seu video, show... fica perfeito a imagem.. 

 

@vtrx digamos que eu não queira imagens coloridas e tal.. somente menus como se fosse usar um teclado com botões, tudo estático, só haveria movimento na troca de um menu para o outro somente.

 

algo mais ou menos igual a isso:

 

como é a criação desses botões?? precisa de algum programa especial para desenhar os botões, ou é via software mesmo??  acho que isso o pic roda né, pois no video o cara usou um...  

 

Editando: A propósito, lendo o referido tópico vi que a o @MatheusLPS teve a mesma duvida que eu... portanto vamos debater lá.. vou ler e se tiver duvidas vou postar lá ok..

Link para o comentário
Compartilhar em outros sites

 

precisa de algum programa especial para desenhar os botões, ou é via software mesmo??

É via Software.

Para quem ja trabalha a muito tempo na área,conhece a função PRINT do BASIC que plota caracteres na tela,caracteres texto.

Ele usou GUI.

Plotou quadrados e texto de tamanho ampliado,tipo [] _____.

Deste modo o processamento é o mesmo de um texto.

Observe que quando o PIC carrega uma tela ou desenha letras,vai existir uma 'lentidão' que depende dos MIPS do microcontrolador.

No vídeo que postou, não vemos a abertura da tela,logo imagino que seja lenta por isso ele não mostrou.

Mas nada disso impede de continuar fazendo as rotinas pensando em futuramente usar o micro mais potente.

Link para o comentário
Compartilhar em outros sites

Desabafo meu pois ficava programando joguinhos em Basic do TK para depois ver a lerdeza que ficava para gerar movimento na imagem...

Ahhhh então voce era do tempo do velho e bom Sinclair ZX-81 ??? Eu fiz o diabo com um desse, depois migrei pro Tk-85... Acho que eu me dou bem com o Basic por causa desses micros.... Eu fiz até um gerador de caracteres programável, com uma Sram dentro dele, e alguns jogos usavam ela, parecia que era alta resolução... Bons tempos esses, Z-80 na veia em casa e no trabalho, eu comia assembler, bebia assembler... Sempre sonhei que um dia alguém ia inventar um Pic compatível com ele na linguagem de programação, e que já integrasse os periféricos que existiam para o Z-80, como a PIO, o CTC, o USART, ia ser fantástico... Quando surgiu o 8051 eu juro que fui pesquisar pra ver se era aquilo que eu sonhava, mas foi só mais um sonho de verão que passou.

Mas olha, aquele assembler dele era fantástico, fazia chover....cada instrução poderosa que tinha, nunca pensei que um dia depois de 40 anos veria que os PICs e AVRs seriam mais rápidos, mas que para isso teriam de ter um set de instruções tão fraquinho .....

Paulo

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 2 meses depois...

@rodrigocirilo

 

Quando chegar em casa eu posto aqui.

 

Falou

OK..

 

A propósito alguem poderia comentar se este fragmento de codigo funciona, pois vi exemplos usando pic 16f84A e o 16F628A ( que não tem canais AD).

 

 

link: http://www.bytecraft.com/Touch_Sensitive_Switch

void touch_switch_init (void){     /* Set port a to output and port b to input */    pa_direction = output;    pb_direction = input;} char touch_switch (void){    pa.0 = 0;    // Discharge the pin    delay_Ms(1); // Wait    pa.0 = 1;    // Turn on the Constant current source    delay_Us(5); // Wait for 5 u_seconds    if (pb.0 == 1)        return (0);   // No touch detected    else        return (1);   // Touch detected} 

Seguindo este principio postado acima, consegui controlar on off de um led, sem usar canal AD... ( testes foram feitos na protoboard) assim que tiver mais material vou postar aqui para conhecimento da galera.. E para os mais sabidos opinarem a respeito..

 

abrs

Link para o comentário
Compartilhar em outros sites

 

A propósito alguem poderia comentar se este fragmento de codigo funciona, pois vi exemplos usando pic 16f84A e o 16F628A ( que não tem canais AD).

 

 

link: http://www.bytecraft.com/Touch_Sensitive_Switch

void touch_switch_init (void)

{ /* Set port a to output and port b to input */

pa_direction = output;

pb_direction = input;

}

char touch_switch (void)

{

pa.0 = 0; // Discharge the pin

delay_Ms(1); // Wait

pa.0 = 1; // Turn on the Constant current source

delay_Us(5); // Wait for 5 u_seconds

if (pb.0 == 1)

return (0); // No touch detected

else

return (1); // Touch detected

}

Seguindo este principio postado acima, consegui controlar on off de um led, sem usar canal AD... ( testes foram feitos na protoboard) assim que tiver mais material vou postar aqui para conhecimento da galera.. E para os mais sabidos opinarem a respeito..

 

abrs

 

 

nossa! Leitura de touch capacitivo usando I/O digital, essa técnica é bem versátil, é tanta solução pra touch-capacitivo hoje que fazia muito tempo que não via uma.

A boa noticia funciona sim! Para qualquer microcontrolador, a má noticia você vai ter que ajustar os tempos que dependem inclusive da constante de tempo da placa capacitiva que servira de botão. E além das duas funções providas eu optaria de fazer o escaneamento da tecla de forma periódica (usando um bom timer com interrupção pra isso, inclusive para detectar o pressionamento) porque sinceramente delays estão bem fora de moda.

Em vez de usar um I/O digital comum, você poderia fazer algo ainda mais elaborado e sem canal A/D, veja que esses modelos de PIC não possuem A/D mas pelo menos o 628A (quem usa pic16f84 atualmente?) possui um comparador analógico de tensão que é bem mais versátil pra essa aplicação, além disso a tensão de referencia do touch poderia ser ajustada para o valor que voce quisesse usando o PWM da saida com um filtro passa baixas conectada a entrada inversora dele. Enfim, são idéias e mais idéias :)

Abs.

Felipe

 

Link para o comentário
Compartilhar em outros sites

Tá aí o que testei. Mas veja que tem gente reclamando dessa lib do CCS. Falam sobre como fazer os PADs corretos.... Não testei na prática:

 

PIC_touch.rar

 

Leia:

 

http://www.ccsinfo.com/forum/viewtopic.php?t=47708

 

O proteus não é um bom lugar para testar esse tipo de circuito.

 

Falou

Link para o comentário
Compartilhar em outros sites

@ então caro amigo... eu estou testando na prática aqui e ja estou com 3 botões sendo lidos dessa maneira e está funcionando perfeito... na verdade estou usando um pic 16f630 para ser escravo dos botões e mandar as informações para o pic central... Bom, tem funcionado e nao deu nenhum acionamento em falso até agora...  e a programação é muuito mais fácil..

 

Mas Felipe se for possivel poste um exemplo com esse sistema usando o timer.. e esse com o comparador analogico do 628A quantos botões eu conseguiria ler??

 

Ah um detalhe é que o resistor que vai no vcc por ele você ajusta de acordo com o tamanho do touchpad para um sensibilidade maior ou menor..

 

att.

 

 

@MatheusLPS nao consegui simular pois meu proteus 7.8 sp2 nao tem o 16f1823!! qual é o seu????

Link para o comentário
Compartilhar em outros sites

@ então caro amigo... eu estou testando na prática aqui e ja estou com 3 botões sendo lidos dessa maneira e está funcionando perfeito... na verdade estou usando um pic 16f630 para ser escravo dos botões e mandar as informações para o pic central... Bom, tem funcionado e nao deu nenhum acionamento em falso até agora...  e a programação é muuito mais fácil..

 

pode postar o codigo desse seu teste? obrigado

Link para o comentário
Compartilhar em outros sites

pode postar o codigo desse seu teste? obrigado

while(true){              set_tris_c(0b000000); //seta como saida    output_c(0b000000);   // zera a porta    delay_ms(1);    set_tris_c(0b001000);  ///seta como entrada     delay_Us(2);          //aguarda pequeno delay    if (!input(PIN_C3))   //testa um botao       {         output_high(PIN_C4);         delay_ms(50);         output_low(PIN_C4);         delay_ms(50);       }       set_tris_c(0b000000);  //seta como saida novamente     output_c(0b000000);    //zera     delay_ms(1);         set_tris_c(0b000100);  //seta como entradadelay_us(2)  //estava faltado esse delay       if (!input(PIN_C2))  //testa outro botao       {         output_high(PIN_C5);         delay_ms(50);         output_low(PIN_C5);         delay_ms(50);       }                     }

claro que tem ajuste para fazer mas por enquanto é isso e tá funcionando..

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

fiz este com um ATtiny45.

A ideia é usar um unico pino inicialmente como saída pra descarregar o capacitor e depois como entrada medir o tempo em que este mesmo pino entre em nível 1. Desta forma estamos fazendo a leitura da variação do capacitor.

Pode-se usar o sensor da imagem abaixo ou usar uma cápsula piezoelétrica (buzzer)

http://www.4shared.com/video/8QaVwfxnba/senscap.html

Obs: Os pontos não são chaves, foi uma velha caixa da patola que já estava furada e aproveitei estes furos pra colar o "sensor" com cola quente.

circ_senscap.jpg?async&rand=0.9357981685

 

O sensor final usado foi simplesmente uma placa de CI com este formato tamanho de 2x2cm.

sens_cap.jpg?async&rand=0.66508682687136

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!