Display LCD serial I2C 2004 com interface destacável
Teste básico de funcionamento:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| #include <Wire.h>; #include <LiquidCrystal_I2C.h>; //Aqui definimos endereço, número de colunas e linhas LiquidCrystal_I2C lcd( 0x27 , 20 , 4 ); void setup() { lcd.init(); lcd.backlight(); lcd.setCursor( 0 , 0 ); lcd.print( "Linha zero 123456789" ); lcd.setCursor( 0 , 1 ); lcd.print( "Linha um 123456789" ); lcd.setCursor( 0 , 2 ); lcd.print( "Linha dois 123456789" ); lcd.setCursor( 0 , 3 ); lcd.print( "Linha tres 123456789" ); } void loop() { } |
Postado em Sem categoria Tags: display, i2c, LCD Deixe um comentário (responderei para o seu e-mail)
Display LCD serial I2C 1602 com interface destacável
Precisando de pinos livres extras no seu projeto ou passar um cabo com uma dúzia de fios até o LCD está te incomodando?
- Display serial completo. Só requer alimentação de 5V e dois fios para o bus I2C. Responde no endereço 0x27 (interface vermelha) e 0x20 (interface preta);
- Como se trata de I2C, que é um bus (compartilhado por natureza), podemos até dizer que não ocupa pino nenhum;
- Controle de contraste via trimpot integrado;
- Backlight pode ser desligado/ligado com comandos de software;
- Compatível com qualquer microcontrolador que possa se comunicar por I2C, mas somente dou suporte ao Arduino;
- Compatível com a biblioteca LiquidCrystal_I2C do Arduino;
- Interface destacável. Você pode usá-la em qualquer display que tenha o mesmo pinout (veja pinout na foto abaixo);
- Posso fornecer o produto na forma de kit, sem headers soldados.
Instruções de uso
O display funcionará igualmente com o Arduino Uno/Duemilanove ou Mega sem modificações nos sketches, mas atente para o fato de que o bus i2c fica em pinos diferentes em cada modelo:
- No Uno/Duemilanove: Pinos analógicos A4 e A5
- No Mega: Pinos 20 e 21
O display é compatível com o modelo da DFROBOT. Baixe esta biblioteca (supostamente compatível com IDE 1.0 e 0.2x,mas só testei com 0.22), descompacte no diretório libraries (certifique-se de que os arquivos fiquem em libraries/LiquidCrystal_I2C) e rode o exemplo LiquidCrystal_I2C -> Custom Chars.
Todos os displays são testados por mim e saem com o contraste ajustado, mas se por acaso você mexer no trimpot e a imagem não estiver mais aparecendo, gire o trimpot nos dois sentidos até que apareça. Um ajuste incorreto não danificará o display, por isso pode mexer à vontade.
Cópia local da biblioteca:
LCD Gráfico 128×64 (12864) compatível com ST7920
Fundo azul e letras cinzentas.
Compatível com o modelo FIT0021 da DFrobot
A visibilidade deste display não é muito boa. A escolha da cor de fundo e cor das letras não oferece um constraste muito bom.
Este display pode ser operado em dois modos: paralelo e serial. O Arduino tem velocidade suficiente para a operação serial, que economiza muitas conexões: apenas três saídas digitas são necessárias.
Compatível com a biblioteca u8glib. Para operação no modo serial, abra o exemplo GraphicsTest e “descomente” a linha:
//U8GLIB_ST7920_128X64 u8g(18, 16, 17, U8G_PIN_NONE);
O exemplo acima requer um Arduino Mega, mas se quiser usar um Arduino UNO:
U8GLIB_ST7920_128X64 u8g(3, 9, 8, U8G_PIN_NONE); // E: D3, RS: D8 e R/W:D9
É só um exemplo. Você é livre para escolher que pinos usar
Os exemplos Chess , “F” (sequer compilou) e menu não funcionaram comigo, nem no Duemilanove, nem no Mega.
Exemplos retirados do demo GraphicsTest:
Você também pode usar o demo da DfRobot. Imagem retirada dele:
Ao usar o demo GraphicsTest a imagem parecerá estar “de cabeça para baixo”. É normal.
Abaixo, cópias locais de alguns arquivos (links gerados automaticamente).
Postado em Sem categoria Tags: display, LCD, módulos Deixe um comentário (responderei para o seu e-mail)
Módulo display LCD 1602 serial I2C / TWI e SPI
Baseado em chip MCP23008. Endereço I2C default: 0×0, mas configurável com jumpers de solda. Este é o modelo fabricado pela Elecfreaks, que é uma variação do modelo da Adafruit
É necessário remover a biblioteca liquidcrystal e instalar a fornecida.
Backlight
O backlight pode ser controlado pelo software. Procedure setBacklight () da biblioteca.
Postado em Sem categoria Tags: display, i2c, LCD, twi Deixe um comentário (responderei para o seu e-mail)
Módulo display LCD 1602 serial I2C / TWI
Baseado em chip Philips PCF8574.
Endereço I2C: 0x27
Compatível com o modelo da DFROBOT. Biblioteca e exemplos:
http://www.robotshop.com/ProductInfo.aspx?pc=RB-Dfr-69
Backlight
O backlight pode ser controlado pelo software. Procedures backlight() e noBackligth() da biblioteca.
O jumper serve para o controle externo do backlight. Com o jumper no lugar o backlight fica permanentemente ativo. Retirando o jumper, você pode conectar uma saída do microcontrolador para o controle do backlight.
Sensor de distância ultra-sônico (ultra-som) HC-SR04
Este sensor não funciona se o shield Wiznet estiver plugado, mesmo que nenhuma biblioteca seja ativada.
sketch de teste
Requer Shield com keypad e display 1602
Exemplo testado com Arduino 1.05
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
| // Jefferson Ryan - Automalabs.com.br // Baseado em script de: luckylarry.co.uk // Este sketech também demonstra o uso de Running Average. #include <LiquidCrystal.h> //Esta linha é específica para o display do shield com keypad //se seu display for diferente você pode precisar mudar LiquidCrystal lcd( 8 , 9 , 4 , 5 , 6 , 7 ); // variables to take x number of readings and then average them // to remove the jitter/noise from the SRF05 sonar readings const int qtdeLeituras = 10 ; // number of readings to take/ items in the array int leituras[qtdeLeituras]; // stores the distance readings in an array int indice = 0 ; // arrayIndex of the current item in the array int total = 0 ; // stores the cumlative total int distanciaMedia = 0 ; // stores the average value // setup pins and variables for SRF05 sonar device int echoPin = 2 ; // SRF05 echo pin (digital 2) int triggerPin = 3 ; // SRF05 trigger pin (digital 3) unsigned long tempoPulso = 0 ; // stores the pulse in Micro Seconds unsigned long distancia = 0 ; // variable for storing the distance (cm) void setup() { lcd.begin( 16 , 2 ); lcd.clear(); pinMode(triggerPin, OUTPUT); // set init pin 3 as output pinMode(echoPin, INPUT); // set echo pin 2 as input // create array loop to iterate over every item in the array for ( int estaLeitura = 0 ; estaLeitura < qtdeLeituras; estaLeitura++) { leituras[estaLeitura] = 0 ; } } void loop() { digitalWrite(triggerPin, HIGH); // send 10 microsecond pulse delayMicroseconds( 10 ); // wait 10 microseconds before turning off digitalWrite(triggerPin, LOW); // stop sending the pulse tempoPulso = pulseIn(echoPin, HIGH); // Look for a return pulse, it should be high as the pulse goes low-high-low distancia = tempoPulso/ 58 ; // Distance = pulse time / 58 to convert to cm. total= total - leituras[indice]; // subtract the last distance leituras[indice] = distancia; // add distance reading to array total= total + leituras[indice]; // add the reading to the total indice = indice + 1 ; // go to the next item in the array // Ao chegar ao fim da matriz, voltamos a preencher do inicio if (indice >= qtdeLeituras) { indice = 0 ; } distanciaMedia = total / qtdeLeituras; // calculate the average distance String myString = String(distanciaMedia, DEC); myString += " cm" ; char charBuf[ 10 ]; //apago o conteúdo do array. Sem isso as leituras ficam completamente malucas, //porque "toCharArray" não faz isso. memset(charBuf, 0 , sizeof(charBuf)); myString.toCharArray(charBuf, 10 ); lcd.clear(); lcd.setCursor( 1 , 0 ); lcd.print(charBuf); // Serial.println(averageDistance, DEC); /*Se o delay for muito baixo (10, por exemplo), alguns exemplares sensores irão apresentar alta instabilidade a curtas distâncias */ delay( 50 ); } |
Módulo TFT
Shield adaptador
Conjunto montado
Aparência do módulo ligado, rodando o demo. Na foto abaixo eu mostro um modelo azul, mas o modelo ofertado neste anúncio é vermelho.
O kit vermelho está no fim. Novos compradores deverão receber o kit azul. Funcionalmente é a mesma coisa.
É importante ter em mente que o display, a touchscreen e o leitor de cartões são independentes. Você pode testar cada um separadamente.
O que se segue está desatualizado e vou manter aqui porque pode ser útil caso você precise adaptar um programa antigo
Bibliotecas necessárias:
Com estas bibliotecas instaladas, seus exemplos funcionam com este kit sem maiores modificações, exceto talvez a calibração do touchscreen. Mas atente para o fato de que os demos vem ajustados para o Arduino UNO e se você estiver usando um Mega precisará comentar uma linha e “descomentar” outra. Cada sketch de demo mostra qual é.
Se a calibração da touchscreen não funcionar, leia as instruções (desatualizadas) a seguir, pois eu explico como resolver isso.
O que se segue está desatualizado e vou manter aqui porque pode ser útil caso você precise adaptar um programa antigo
Bibliotecas necessárias:
UTFT
http://www.henningkarlsen.com/electronics/library.php?id=51
ITDB02_Touch
http://www.henningkarlsen.com/electronics/library.php?id=55
Nota: ITDB02_Touch mudou recentemente para outra biblioteca. Talvez você tenha que fazer adaptações. Por isso estou mandando em anexo as versões que eu uso.
Para testar o display (sem o touchscreen)
Abra o exemplo UTFT->Arduino->UTFT_Demo_320x240
Substitua essas quatro linhas (inclui comentários):
// Uncomment the next line for Arduino 2009/Uno
UTFT myGLCD(ITDB32S,19,18,17,16); // Remember to change the model parameter to suit your display module!
UTFT myGLCD(ITDB32S,19,18,17,16); // Remember to change the model parameter to suit your display module!
// Uncomment the next line for Arduino Mega
//UTFT myGLCD(ITDB32S,38,39,40,41); // Remember to change the model parameter to suit your display module!
//UTFT myGLCD(ITDB32S,38,39,40,41); // Remember to change the model parameter to suit your display module!
por:
UTFT myGLCD(ITDB32S,38,39,40,41);
UTFT myGLCD(ITDB32S,38,39,40,41);
Execute o teste
TouchscreenO sketch exemplo de calibração da biblioteca não funciona.
Eu já testei com várias telas e nunca funcionou. É preciso editar ITDB02_Touch.cpp para fazer a calibração.Você precisa editar o arquivo:
libraries\ITDB02_Touch\ITDB02_ Touch.cppSubstitua os quatro primeiros parâmetros por isto:
#define PixSizeX -16
#define PixOffsX 206
#define PixSizeY 11
#define PixOffsY 380Feche o IDE se estiver aberto e abra de novo, para validar a modificação.Abra o exemplo ITDB02_Touch->ITDB02_Touch_ ButtonTestSubstitua
Eu já testei com várias telas e nunca funcionou. É preciso editar ITDB02_Touch.cpp para fazer a calibração.Você precisa editar o arquivo:
libraries\ITDB02_Touch\ITDB02_
#define PixSizeX -16
#define PixOffsX 206
#define PixSizeY 11
#define PixOffsY 380Feche o IDE se estiver aberto e abra de novo, para validar a modificação.Abra o exemplo ITDB02_Touch->ITDB02_Touch_
#include <ITDB02_Graph.h>
por
#include <UTFT.h>
Substitua:
// Uncomment the next two lines for the ITDB02 Shield
ITDB02 myGLCD(19,18,17,16);
ITDB02_Touch myTouch(15,10,14,9,8);
ITDB02 myGLCD(19,18,17,16);
ITDB02_Touch myTouch(15,10,14,9,8);
// Uncomment the next two lines for the ITDB02 Mega Shield
//ITDB02 myGLCD(38,39,40,41); // Remember to add ASPECT_16x9 if you are using an ITDB02-3.2WC!
//ITDB02_Touch myTouch(6,5,4,3,2);
//ITDB02 myGLCD(38,39,40,41); // Remember to add ASPECT_16x9 if you are using an ITDB02-3.2WC!
//ITDB02_Touch myTouch(6,5,4,3,2);
por:
UTFT myGLCD(ITDB32S,38,39,40,41); // Remember to add ASPECT_16x9 if you are using an ITDB02-3.2WC!
ITDB02_Touch myTouch(6,5,4,3,2);
UTFT myGLCD(ITDB32S,38,39,40,41); // Remember to add ASPECT_16x9 if you are using an ITDB02-3.2WC!
ITDB02_Touch myTouch(6,5,4,3,2);
Compile e teste.
Coordenadas da touchscreen invertidas
Se rodando o exemplo Button Test, ao aperter um botão for acionado outro na outra extremidade, é porque o digitalizador apresenta coordenada X invertida
Troque (no sketch exemplo):
x=myTouch.getX();
por:
x=320-myTouch.getX();