[Programa] TFT
Objetivo:
Utilizar o ESP32-WROOM-32E DevKitC v4 [2] para desenhar num monitor TFT.
Lista de material:
- ESP32-WROOM-32E DevKitC v4
- Breadboards
- Adafruit 1.44" Color TFT (ST7735)
- Fios de ligação
- Cabo USB micro
Contextualização:
Adafruit 1.44" Color TFT
O monitor TFT (Thin-film transistor, [6]) de 1.44 polegadas da Adafruit (ST7735 Adafruit 1.44" Color TFT, [1]) faz uso do barramento de comunicação SPI (Serial Peripheral Interface [5]) de 4 fios possuindo ainda buffer de dados endereçável por pixel dedicado.
Serial Peripheral Interface
O Serial Peripheral Interface (SPI) é um barramento que permite, por exemplo, a comunicação entre um microcontrolador com diversos outros componentes [5, 3].
Ainda que a sua designação possa variar, e nem todas as ligações se tenham que usar num dado exemplo, o barramento SPI considera 4 sinais lógicos:
SCLK/SCK | Serial Clock |
MOSI/SDI | Main Out Sub In / Serial Data In |
MISO/SDO | Main In Sub Out / Serial Data Out |
CS/SS | Chip Select |
Procedimento:
Escolhendo os terminais 13, 14, 15, 25, 26, GND e 3.3V do ESP32 como referência deve considerar-se o seguinte ilustração de montagem:
Instruções:
(para uma primeira utilização do ESP32, sugere-se o tutorial Primeiro Programa [4])
- Montar o circuito esquematizado anteriormente (ver Secção Montagem exemplificativa, para mais detalhe)
- Ligar a placa ESP32 ao computador por via de cabo USB micro
- Abrir o IDE Arduino
- Usando a ferramenta de gestão de bibliotecas do IDE Arduino procurar e instalar a biblioteca: Adafruit_GFX [7,8].
- Repetir a tarefa anterior para as bibliotecas Adafruit_ST7735 e Adafruit_BusIO;
- Selecionar o dispositivo ESP32 adequado
- Copiar o seguinte código
/*
* TFT
*/
#include <SPI.h> // Biblioteca relacionada com SPI
#include <Adafruit_GFX.h> // Biblioteca relacionada com primitivas de desenho
#include <Adafruit_ST7735.h> // Biblioteca específica para ST7735
// definição dos terminais a considerar
#define TFT_CS 15
#define TFT_DC 25
#define TFT_MOSI 13
#define TFT_SCLK 14
#define TFT_RST 26
// definição de cores de interesse
#define BLUE 0x001F
#define GREEN 0x07E0
#define WHITE 0xFFFF
#define BLACK 0x0000
// variáveis várias
int m_pos = 0;
int m_s = 128;
int m_contador = 0;
int m_o_contador = 65;
char cc = m_o_contador;
// inicialização de classe relacionada com ST7735
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
// função de escrita
void testdrawtext(char *text, uint16_t color, uint8_t size) {
tft.setCursor(51, 49);
tft.setTextColor(color);
tft.setTextWrap(true);
tft.setTextSize(size);
tft.print(text);
}
// a função setup é executada pontualmente quando o botão reset é premido ou
// a placa é alimentada:
void setup(void) {
Serial.begin(115200);
Serial.print(F("inicialização ..."));
tft.initR(INITR_144GREENTAB); // inicialização específica do tft 128x128 1.44" usado
tft.setRotation(1); // definição de rotação do monitor
tft.fillScreen(WHITE); // desenho no ecrâ na sua globalidade
cc = m_o_contador;
testdrawtext(&cc,BLACK,5); // escrita no ecrâ
delay(500);
Serial.print(F(" completa"));
}
// a função loop é executada sucessivamente, uma e outra vez, e por aí em diante
void loop() {
Serial.print(F("iteração"));
Serial.print(m_contador, DEC);
m_contador = m_contador + 1;
tft.drawRect(m_pos,m_pos,m_s,m_s,BLUE); // desenho de linha de quadrado azul
delay(10);
m_pos = m_pos + 1;
m_s = m_s - 2;
if (m_pos >= 64){
m_pos = 0;
m_s = 128;
tft.fillScreen(WHITE);
m_o_contador = m_o_contador + 1;
if (m_o_contador > 90) {
m_o_contador = 65;
}
cc = m_o_contador;
testdrawtext(&cc,BLACK,5); // escrita de texto no ecrâ
delay(500);
}
tft.drawRect(m_pos,m_pos,m_s,m_s, GREEN);
delay(10);
}
- Compilar e carregar o código para a placa ESP32
- Verificar o resultado
Montagem exemplificativa:
Referências:
[1] Adafruit. Adafruit 1.44” Color TFT with Micro SD Socket - Pinouts. url: https://learn.adafruit.com/adafruit-1-44-color-tft-with-micro-sd-socket/pinouts (acedido em 25/08/2023).
[2] Ltd. Espressif Systems Co. ESP32-DevKitC V4 Getting Started Guide. url: https://docs.espressif.com/projects/esp-idf/en/latest/esp32/hw-reference/esp32/get-started-devkitc.html (acedido em 18/08/2023).
[3] Ltd. Espressif Systems Co. SPI. url: https://docs.espressif.com/projects/arduino-esp32/en/latest/api/spi.html (acedido em 25/08/2023).
[4] Paulo Menezes. Artigos de Suporte - DEEC - Kit Eletrónica - Primeiro Programa. url: https://kb.deec.uc.pt/books/deec/page/primeiro-programa (acedido em 17/08/2023).
[5] Wikipedia. Serial Peripheral Interface. url: https://en.wikipedia.org/wiki/Serial_Peripheral_Interface (acedido em 5/08/2023).
[6] Wikipedia. Thin-film transistor. url: https://en.wikipedia.org/wiki/LED_circuit (acedido em 25/08/2023).
[7] Adafruit. Adafruit GFX Graphics Library. url: https://learn.adafruit.com/adafruit-gfx-graphics-library (acedido em 28/08/2023).
[8] Adafruit. Adafruit GFX Graphics Library. url: https://github.com/adafruit/Adafruit-GFX-Library (acedido em 28/08/2023).
No Comments