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 linhasLiquidCrystal_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 mudarLiquidCrystal 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 readingsconst int qtdeLeituras = 10; // number of readings to take/ items in the arrayint leituras[qtdeLeituras]; // stores the distance readings in an arrayint indice = 0; // arrayIndex of the current item in the arrayint total = 0; // stores the cumlative totalint distanciaMedia = 0; // stores the average value// setup pins and variables for SRF05 sonar deviceint echoPin = 2; // SRF05 echo pin (digital 2)int triggerPin = 3; // SRF05 trigger pin (digital 3)unsigned long tempoPulso = 0; // stores the pulse in Micro Secondsunsigned 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 outputpinMode(echoPin, INPUT); // set echo pin 2 as input// create array loop to iterate over every item in the arrayfor (int estaLeitura = 0; estaLeitura < qtdeLeituras; estaLeitura++) {leituras[estaLeitura] = 0;}}void loop() {digitalWrite(triggerPin, HIGH); // send 10 microsecond pulsedelayMicroseconds(10); // wait 10 microseconds before turning offdigitalWrite(triggerPin, LOW); // stop sending the pulsetempoPulso = pulseIn(echoPin, HIGH); // Look for a return pulse, it should be high as the pulse goes low-high-lowdistancia = tempoPulso/58; // Distance = pulse time / 58 to convert to cm.total= total - leituras[indice]; // subtract the last distanceleituras[indice] = distancia; // add distance reading to arraytotal= total + leituras[indice]; // add the reading to the totalindice = indice + 1; // go to the next item in the array// Ao chegar ao fim da matriz, voltamos a preencher do inicioif (indice >= qtdeLeituras) {indice = 0;}distanciaMedia = total / qtdeLeituras; // calculate the average distanceString 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 exemplaressensores 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();















