Modelo: TW12864
Site: http://tato.ind.br/
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.
O contraste do display pode ser ajustado através de um trimpot localizado na parte trazeira.
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.
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.
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>.
O display TW-12864 necessita de 200ms para inicializar e estar pronto para receber comandos.
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
Desenha um ponto
Exemplo: po 20 30«
Resultado: Desenha um ponto na posição 20,30 com a cor de frente.
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
Backlight LED
Selecionando o Baud Rate
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
Tempo de Inicialização
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 yDesenha 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
Mostra um texto no display
Exemplo: t “texto de exemplo”«
Resultado: Escreve texto de exemplo no display
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
Desenha um retângulo preenchido
Exemplo: rf 10 20 40 50«
Resultado: Desenha um retângulo preenchido com a cor de frente.
Apaga uma área retangular do display
Exemplo: re 10 20 40 50«
Resultado: Apaga a área entre 10,20 e 40,50
Inverte uma área retangular do display
Exemplo: ri 10 20 40 50«
Resultado: Inverte a área entre 10,20 e 40,50
Desenha um círculo
Exemplo: c 50 60 10«
Resultado: Desenha um círculo no ponto 50,60 com raio 10
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Text Display - Mostra um texto - tMostra 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 y1Desenha 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 y1Desenha 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 y1Apaga 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 y1Inverte 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 rDesenha 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
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.
TECLADO MUSICAL
Circuito.
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:
- 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.
- 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:
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