[Programa] TFT

Objetivo:

Utilizar o ESP32-WROOM-32E DevKitC v4 [2] para desenhar num monitor TFT.

Lista de material:

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.

7_tft_eg.png

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
7_spi_esp32.png 7_spi_tft.png

7_spi_eg.png

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:

7_montagem_overview.png

Instruções:
 

(para uma primeira utilização do ESP32, sugere-se o tutorial Primeiro Programa [4])

7_arduino_aa.png

7_arduino_bb.png 7_arduino_cc.png
/*
* 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);
}

7_arduino.png

tft.gif

Montagem exemplificativa:

7_montagem_a.png 7_img_a.png
7_montagem_b.png 7_img_b.png
7_montagem_c.png 7_img_c.png
7_montagem_d.png 7_img_d.png

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).


Revision #3
Created 24 August 2023 17:05:29 by João Pedro Monteiro
Updated 27 August 2024 16:08:11 by João Pedro Monteiro