La idea de este proyecto es hacer un montaje que disponga de una placa ESP32 STEAMakers AI como microcontrolador, una pantalla TFT de 240×240 píxeles SPI ST7789 y tres botones. Las piezas para imprimir en 3D se pueden descargar de Thingiverse.
Con los tres botones se puede interactuar en un juego de preguntas y respuestas. Con dos de ellos nos podremos desplazar por la pantalla y con el tercero se validará la opción seleccionada.
La caja también incorpora un interruptor para encender y apagar la placa.
La placa dispone de un zócalo para la conexión de la pantalla TFT. La lista de pines que van conectados a la placa son los siguientes.
GND
VCC
SCL 20
SDA 21
RST 38
DC 40
CS 41
BL 42
Programa de prueba
Vamos a programa esta placa desde el IDE de Arduino. Para ello seleccionaremos la placa ESP32S3 Dev Module.
Este es el primer programa que haremos para probar la pantalla TFT.
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
double i;
#define COL_BLACK 0x0000
#define COL_BLUE 0x001F
#define COL_RED 0xF800
#define COL_GREEN 0x07E0
#define COL_CYAN 0x07FF
#define COL_MAGENTA 0xF81F#define COL_YELLOW 0xFFE0#define COL_WHITE 0xFFFF#define COL_DARKGREY 0x39E7
SPIClass spi_TFT(HSPI);Adafruit_ST7789 tft = Adafruit_ST7789(&spi_TFT, 41, 40, 38);
static inline void TFT_Backlight(uint8_t state) {digitalWrite(42, state ? HIGH : LOW); //inverted}
void setup(){pinMode(42, OUTPUT); digitalWrite(42, HIGH);
spi_TFT.begin(20, -1, 21, -1);
pinMode(41, OUTPUT);digitalWrite(41, HIGH);pinMode(40, OUTPUT);
tft.init(240, 240);tft.setRotation(0);tft.fillScreen(COL_BLACK);
TFT_Backlight(1);tft.fillScreen(0xF81F);}
void loop(){
for (i = 1; i <= 3; i=i+1) { //Circulostft.drawCircle(64, 32, (i * 10), COL_BLACK);}tft.drawRect(100, 100, 50, 30, COL_BLACK); //Rectangulotft.setFont(NULL); //Textotft.setTextSize(2);tft.setTextColor(0xFFE0);tft.setCursor(10, 10);tft.print(String("Hola"));}
Esto es lo que se puede ver en la pantalla.
Utilizando los pulsadores
#include <SPI.h>#include <Adafruit_GFX.h>#include <Adafruit_ST7789.h>double i;#define COL_BLACK 0x0000#define COL_BLUE 0x001F#define COL_RED 0xF800#define COL_GREEN 0x07E0#define COL_CYAN 0x07FF#define COL_MAGENTA 0xF81F#define COL_YELLOW 0xFFE0#define COL_WHITE 0xFFFF#define COL_DARKGREY 0x39E7SPIClass spi_TFT(HSPI);Adafruit_ST7789 tft = Adafruit_ST7789(&spi_TFT, 41, 40, 38);static inline void TFT_Backlight(uint8_t state) {digitalWrite(42, state ? HIGH : LOW); //inverted}void setup(){pinMode(42, OUTPUT); digitalWrite(42, HIGH);spi_TFT.begin(20, -1, 21, -1);pinMode(41, OUTPUT);digitalWrite(41, HIGH);pinMode(40, OUTPUT);tft.init(240, 240);tft.setRotation(0);tft.fillScreen(COL_BLACK);TFT_Backlight(1);tft.fillScreen(0xF81F);}void loop(){tft.fillScreen(0xF81F);for (i = 1; i <= 3; i=i+1) {tft.drawCircle(64, 32, (i * 10), COL_BLACK);}tft.drawRect(100, 100, 50, 30, COL_BLACK);tft.setFont(NULL);tft.setTextSize(2);tft.setTextColor(0xFFE0);tft.setCursor(10, 10);tft.print(String("Hola"));if (digitalRead(12) == HIGH) {tft.print(String("Adios"));}}





No hay comentarios:
Publicar un comentario