sexta-feira, 18 de julho de 2014

Display LCD Gráfico Touchscreen TW12864

Marca: TATO
Modelo: TW12864
Site: http://tato.ind.br/  
 
   O display gráfico serial TW-12864 combina um módulo serial com um display gráfico de 128x64 pontos, de fundo branco e letras pretas. Este conjunto recebe dados serialmente a velocidade de 2400 a 15200bps e mostra no display textos ou gráficos. No modo texto ele pode apresentar diferentes tamanhos de fontes.  
  Códigos especiais em ASCII são utilizados para enviar comandos ao display. Instruções adicionais permitem o controle do tamanho de fonte e posicionamento do cursor. As instruções gráficas traçam linhas, retângulos, círculos e pontos.
   O display TW-12864possui uma memória EEPROM que permite armazenar até 30 telas completas que podem ser criadas em qualquer computador PC rodando Windows e armazenadas no display. Com um simples comando as telas podem ser exibidas no display.

O conector do display TW-12864 é do tipo barra de pinos com espaçamento padrão de 0.1”.

ATENÇÃO: Não inverta o 5V e o terra, nem por um instante. Fazendo isto irá destruir o display. Não aplique mais de 5V. Isto pode queimar o display.

Controle de Contraste


   O contraste do display pode ser ajustado através de um trimpot localizado na parte trazeira.



Backlight LED


   O display TW-12864 possui um backlight de LED que possui um baixo consumo de corrente. A intensidade do backlight pode ser ajustada por controle do software.

Selecionando o Baud Rate


   O baud rate padrão do display é 9600bps e ele retornará a esta velocidade sempre que for ligado. A velocidade pode então ser alterada através de comandos de software.

Ligação de Uso


   O display TW-12864 necessita de 5Vx100mA para o funcionamento. Os dois pinos de comunicação são para ligar na UART de um microcontrolador. Para ligação a um PC é necessário um MAX232.

Operação Básica


   Uma vez que o TW-12864 esteja corretamente ligado e configurado para o baud rate do microcontrolador, comandos podem ser enviados para o display. Todos os comandos são em código ASCII e terminador por um <ENTER>.

Tempo de Inicialização


   O display TW-12864 necessita de 200ms para inicializar e estar pronto para receber comandos.

Comandos do Display

------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   Nos comandos abaixo, sempre que o simbolo « aparecer, significa que um <ENTER> foi digitado.

Draw line - Desenha linha - l x0 y0 x1 y1
Desenha uma linha
Exemplo: l 10 20 40 50«
Resultado: Desenha uma linha entre os pontos 10,20 e 40,50 com a cor de frente
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Draw Point - Desenha um ponto - po x y
Desenha um ponto
Exemplo: po 20 30«
Resultado: Desenha um ponto na posição 20,30 com a cor de frente.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Set Font - Seleciona a fonte - f <tipo>
Seleciona o tipo de fonte
Exemplo: f “13”«
Resultado: Seleciona a fonte tamanho 13
As opções de fonte são:
5, 11, 13, 17
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Text Display - Mostra um texto - t
Mostra um texto no display
Exemplo: t “texto de exemplo”«
Resultado: Escreve texto de exemplo no display
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Draw Rectangle - Desenha um retângulo - r x0 y0 x1 y1
Desenha um retângulo entre os pontos x0,y0 e x1,y1
Exemplo: r 10 20 40 50«
Resultado: Desenha um retângulo entre 10,20 e 40,50
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Draw Rectangle Filled - Desenha um Retângulo Preenchido - rf x0 y0 x1 y1
Desenha um retângulo preenchido
Exemplo: rf 10 20 40 50«
Resultado: Desenha um retângulo preenchido com a cor de frente.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Rectangle Erase - Apaga Retângulo - re x0 y0 x1 y1
Apaga uma área retangular do display
Exemplo: re 10 20 40 50«
Resultado: Apaga a área entre 10,20 e 40,50
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Rectangle Invert - Inverte Retângulo - ri x0 y0 x1 y1
Inverte uma área retangular do display
Exemplo: ri 10 20 40 50«
Resultado: Inverte a área entre 10,20 e 40,50
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Draw Circle - Desenha um Círculo - c x y r
Desenha um círculo
Exemplo: c 50 60 10«
Resultado: Desenha um círculo no ponto 50,60 com raio 10
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Draw Circle Filled - Desenha um Círculo Preenchido - cf x y r
Desenha um círculo
Exemplo: cf 50 60 10«
Resultado: Desenha um círculo preenchido no ponto 50,60 com raio 10
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Clear Screen - Apaga a Tela - z
Preenche a tela toda com a cor de fundo
Exemplo: z«
Resultado: A tela é preenchida com a cor de fundo.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
BackLight - bk 0|1|2|3|4|5
Ajusta a intensidade do backlight
Exemplo: bk 1«
Resultado: Liga o backlight na intensidade mínima
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Baud Rate - b 2400|9600|19200|38400|115200
Determina a velocidade de comunicação
Exemplo: b 19200«
Resultado: Muda a velocidade para 19200bps
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Mostra Tela - T n
Mostra uma tela armazenada na memória
Exemplo: T 12«
Resultado: Mostra a tela número 12
O valor de ‘n’ pode ser de 1 a 30

================================================================================================================

Comandos do Touch Screen


Operação do Touch Screen


   O touch screen funciona de forma totalmente independente do display em dois modos diferentes:

Botão e Hotspot ou modo xy. 

  • No modo xy, os valores de x e y são retornados enquanto tiver um toque no display. Os valores são retornados em ASCII no formato xxx,yyy«
  • No modo Botão, até 20 botões podem ser definidos e são tratados automaticamente pelo display, se um botão for tocado, sua imagem é invertida no display e o código Bn«, onde n é o número do botão é enviado pela serial. Assim que o botão for solto o código bn« é enviado.
  • O modo HotSpot é similar ao modo Botão, a diferença é que a área sensível não é invertida e os códigos enviados são Hn« e hn« para o toque e quando é solto respectivamente.

Touch Calibrate - Calibra o Touch Screen - tc
Calibra o touch screen
Exemplo: tc«
Resultado: A tela de calibração é mostrada

Button Define - Define Botão - bd n x y "texto"
Cria um botão
Exemplo: bd 1 50 20 “Teste”«
Resultado: Desenha um botão com centro no ponto 50,20

Criando telas gráficas


   As telas para o display podem ser criadas em qualquer programa gráfico disponível para Windows. Crie a tela com 128x64 pontos ou se já tiver alguma imagem pronta, redimensione para este tamanho.

   As imagens devem ser gravadas no formato BMP do Windows e 1 bit de color ou BW.

   Clique aqui e baixe o programa que permite o teste de todos os comandos suportados pelo display assim como o envio das telas gráficas.


Dimensões do display





Providências preliminares para uso do módulo:


Temos dois modos de ligar o módulo à Arduino:

  1. Arduino como intermediaria proporcionando comunicação do PC com o módulo - TX do módulo com TX da Arduino e RX do módulo com RX da Arduino.
  2. Arduino enviando comandos para o módulo – TX do módulo no RX da Arduino e RX do módulo com TX da Arduino.
Assim para realizar testes e enviar imagens para o módulo temos de fazer as ligações no modo 1, conforme o diagrama:



TECLADO MUSICAL

Circuito.



 #include <SoftwareSerial.h>

SoftwareSerial mySerial(4, 5); // RX, TX

char code[2]={0,0};
int bytesread = 0;
int  val = 0;
String codigoObtido="";

void setup()
{


  // Inicia comunicação Serial
  mySerial.begin(9600);

mySerial.println("z");
delay(300);
//desenha retangulo

//desenha botão Dó
mySerial.print("bd 1 8 10 ");
mySerial.write(34);
mySerial.print("D");
mySerial.write(34);
mySerial.println();
//desenha botão Ré
delay(200);
mySerial.print("bd 2 26 10 ");
mySerial.write(34);
mySerial.print("R");
mySerial.write(34);
mySerial.println();
//desenha botão Mi
delay(200);
mySerial.print("bd 3 46 10 ");
mySerial.write(34);
mySerial.print("M");
mySerial.write(34);
mySerial.println();
//desenha botão Fá
delay(200);
mySerial.print("bd 4 66 10 ");
mySerial.write(34);
mySerial.print("F");
mySerial.write(34);
mySerial.println();
//desenha botão Sol
delay(200);
mySerial.print("bd 5 83 10 ");
mySerial.write(34);
mySerial.print("S");
mySerial.write(34);
mySerial.println();
//desenha botão Lá
delay(200);
mySerial.print("bd 6 100 10 ");
mySerial.write(34);
mySerial.print("L");
mySerial.write(34);
mySerial.println();
//desenha botão Si
delay(200);
mySerial.print("bd 7 118 10 ");
mySerial.write(34);
mySerial.print("S");
mySerial.write(34);
mySerial.println();
  

}

void loop() {
  if (mySerial.available()) {
   //Havendo qualquer entrada na porta serial desvia para a função LeBotoes
    leBotoes(); 
  }
  
  

}


void leBotoes(){
 // Recebe as string do Touch screen
  
     if( mySerial.available() > 0) {

        val = mySerial.read();
        if(val!=13){
          //le todos os caracteres recebidos na porta serial até receber o caracter 13
          code[bytesread]=val;
          codigoObtido+=code[bytesread];
          //conta bytes lidos e monta string
          bytesread++;

        }else{
          //ao terminar de obter caracteres, desvia para função de comparação de String Recebida
          comparaStringRecebida();
          //Limpa variáveis
          bytesread=0;
          codigoObtido="";
        }
     
  }

}



void comparaStringRecebida(){
        Serial.print("Valor recebido do display : ");   
        Serial.println(codigoObtido);
        //compara Strings e toca nota correspondente
        if(codigoObtido.equals("B1")){tone(8,261,50);}
        if(codigoObtido.equals("B2")){tone(8,293,50);}
        if(codigoObtido.equals("B3")){tone(8,329,50);}
        if(codigoObtido.equals("B4")){tone(8,349,50);}
        if(codigoObtido.equals("B5")){tone(8,392,50);}
        if(codigoObtido.equals("B6")){tone(8,440,50);}
        if(codigoObtido.equals("B7")){tone(8,493,50);}
}

Nenhum comentário:

Postar um comentário