/***********************************************************************/
/***** PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ *****/
/***** FACULTAD DE CIENCIAS E INGENIERÍA *****/
/***** SISTEMAS DIGITALES B *****/
/***********************************************************************/
/***** Tema: Protocolo SPI *****/
/***** Proyecto: SPI_MAX7219 *****/
/***********************************************************************/
/***** EvalBoard: ESP32 S3 DevKitC C1 *****/
/***** Autor: Wilver Aldo Ramírez Huamán *****/
/***** Fecha: octubre 2024 *****/
/***********************************************************************/
/***** Enunciado: *****/
/***** Tenemos un sistema formado por SoC ESP32-S3 y una pantalla *****/
/***** ILI9341 TFT-LCD. El programa permite controlar, mediante la *****/
/***** señal enviada a la pantalla el encendido y apagado de la *****/
/***** pantalla, haciendo uso del protocolo SPI. *****/
/***** Inicialmente, el programa apaga la pantalla, luego enciende *****/
/***** la pantallla, y finalmente la pantalla se debe mostrar la *****/
/***** frase “Sist, Digitales B”. *****/
/***** *****/
/***** pines: CS_PIN = 10, MOSI_PIN = 11, *****/
/***** MISO_PIN = 13 y SCK_PIN = 12 *****/
/***********************************************************************/
#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
// Definir los pines de la pantalla TFT
const uint8_t TFT_CS = 10;
const uint8_t TFT_MOSI = 11;
const uint8_t TFT_SCLK = 12;
const uint8_t TFT_MISO = 13;
const uint8_t TFT_LED = 6;
const uint8_t TFT_DC = 16;
const uint8_t TFT_RST = 15;
// Creamos un objeto tft de la clase Adafruit_ILI9341
// para el uso de las funciones de la libreria Adafruit_ILI9341
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
void setup() {
// Inicializar la comunicación serie
Serial.begin(115200);
//Por puerto serial se notifica que empieza transmisión SPI
Serial.println("Inicio de la transferencia SPI");
// Inicializar la pantalla TFT
tft.begin();
// Configurar el bus SPI
// Inicializar el bus SPI
SPI.begin(TFT_SCLK, TFT_MISO, TFT_MOSI, TFT_CS);
pinMode(TFT_CS, OUTPUT); // Configura pin CS como salida
digitalWrite(TFT_CS, HIGH); // Desactivar el chip select
// Enviar un comando al TFT usando SPI.transfer
sendCommand(0x28); // Apagar la pantalla (comando de ejemplo)
delay(500); // Esperar un momento
sendCommand(0x29); // Encender la pantalla
}
void loop() {
// Mostrar el texto en pantalla
tft.setTextSize(2); // Indica el tamaño de la letra
tft.setCursor(20, 164); // Indica la posición donde inicia el cursor
tft.setTextColor(ILI9341_RED); // Indica el color del texto
tft.println("Sist. Digitales B"); // Frase a mostrar en la pantalla
delay(250);
}
// Función para enviar un comando a la pantalla TFT usando SPI.transfer
void sendCommand(uint8_t comando) {
digitalWrite(TFT_DC, LOW); // Pin D/C en '0' (enviará comando)
digitalWrite(TFT_CS, LOW); // Activar el chip select
SPI.transfer(comando); // Enviar el comando
digitalWrite(TFT_CS, HIGH); // Desactivar el chip select
}