¿Cómo dibujar en una TFT?

Hola intento dibujar en una tft para hacer un menú pero me da errores, utilizo la librería Adafruit GFX para los gráficos y Adafruit ILI9341 para la pantalla.

el sketch:

#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#include <Fonts/FreeSerif9pt7b.h>

#define TFT_DC 9
#define TFT_CS 10
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);

    // Color definitions
    #define BLACK    0x0000
    #define BLUE     0x001F
    #define RED      0xF800
    #define GREEN    0x07E0
    #define CYAN     0x07FF
    #define MAGENTA  0xF81F
    #define YELLOW   0xFFE0 
    #define WHITE    0xFFFF

void setup() {
  tft.begin();
   tft.setFont(&FreeSerif9pt7b);
   tft.fillScreen(ILI9341_BLACK);
}

void loop() {
    
    void drawPixel(uint16_t x, uint16_t y, uint16_t RED);
}

El error:

/home/hiddenotebook/Arduino/Proyectos/ArduBonsay3/ArduBonsay3.ino: In function 'void loop()':
ArduBonsay3:13: error: expected ',' or '...' before numeric constant
#define RED 0xF800
^
/home/hiddenotebook/Arduino/Proyectos/ArduBonsay3/ArduBonsay3.ino:28:53: note: in expansion of macro 'RED'
void drawPixel(uint16_t x, uint16_t y, uint16_t RED);
^
exit status 1
expected ',' or '...' before numeric constant

según la librería GFX es simple pero no soy capaz

tienes que llamar a la funcion pasandole los parametros que necesita ,en este caso coordenada x,y y color,por ejemplo:

tft.drawPixel(20, 20, RED);

Anda claro ahora lo entiendo mejor si señor muchas gracias por la ayuda.

Alguien sabe si hay un buen manual o tuto para aprender bien sobre programar rectángulos, formas menús..

mira ya se dibujar un circulo gracias a tu respuesta jeje

tft.fillCircle(tft.width()/2, tft.height()/2, 110, WHITE);

pero por ejemplo este no funciona:

tft.fillRect(120, 120, 110, BLACK);

no matching function for call to 'Adafruit_ILI9341::fillRect

Donde se puede consultar que comandos sirven.

Disculpar si parece obvio pero soy muy nuevo en esto.

Revisa bien el número y tipo de parámetros que utiliza cada función. Supongo que a fillRect le falte alguno. Intuyo que serán x, y, ancho, alto, y color.

La mejor forma de que te familiarices con los comandos que tiene la libreria Adafruit GFX (o cualquiera que quieras usar), es que copies el archivo con extensión .h, en una carpeta diferente, en este caso este es el archivo que puedes consultar:

Adafruit_GFX.h

Recomiendo que lo copies en otro lado, para evitar algún error de dedo en el contenido del archivo cuando lo estés revisando. Allí podrás ver como se deben redactar y el orden de las variables con las que se construyen cada uno de los comandos.

Puedes abrirla con el WordPad

aqui estan algunos metodos basicos con los parametros :

para el rectangulo necesitas coordenadas x,y ,w(ancho),h (alto) y color.

Muchas gracias a todos de verdad me han ayudado mucho con esto de dibujar en la TFT, gracias a ustedes ya puedo empezar a practicar mas:

Espero poder llegar a hacer buenos menús para mis cacharros todos teníais razón, y al final he podido usar los colores de la librería Adafruit ILI9341 que tiene mas colores definidos.

Algunos ejemplos por si alguien tiene el mismo problema:

tft.drawCircle(120, 120, 111, ILI9341_GREEN);

tft.fillCircle(120, 120, 110, ILI9341_BLACK);

tft.drawCircleHelper(150,150,20, 1, ILI9341_GREEN);

tft.drawLine(0, 50, tft.width()-1, 50, ILI9341_WHITE);

tft.fillRect(50,5,100,50, ILI9341_WHITE);

tft.drawRect(70,50,100,50, ILI9341_WHITE);

tft.drawRect(1, 1, 239, 319, ILI9341_GREEN);

tft.fillRoundRect(5, 5, 230, 52, 5, ILI9341_BLACK);

tft.drawRoundRect(5, 5, 231, 52, 5, ILI9341_GREEN);

Una vez mas muchas gracias!!

Sobra pantalla ahi jejejeeje!!
Mucho lugar vacío, hay que comprar mas sensores Hidden!!

Jajajaja si verdad, de momento solo son pruebas estoy trasteando para comprender esto mejor, ya puedo hacer formas básicas no esta nada mal XD

un abrazo!

Que bien que lo conseguiste.

El siguiente paso es que te familiarices con librerías de mayor poder gráfico que la básica de adafruit.

Esta libreria:

https://forum.arduino.cc/index.php?topic=265806.0

Es de las mas completas y funciona tanto para AVR, como para ARM. Incluso te da la posibilidad de crear tus propias fuentes:

TFTLCDCyg muchas gracias de verdad no tenia ni idea, si hubiera sabido de esta librería abría empezado con ella. esta muy chula voy a leer el tema. muchas gracias.

Hola el tema es que con ILI9341_due-master y Arduino uno algunas fuentes no las puedo usar según el error por falta de memoria.

Y cuando imprimo la hora por pantalla se duplica sale 2 veces

DateTime now = RTC.now(); // Obtiene la fecha y hora del RTC.

tft.cursorTo(1, 4);
tft.setFont(Arial_bold_14);
tft.setTextColor(ILI9341_WHITE, ILI9341_BLACK);
char ClockBuffer[16];
sprintf(ClockBuffer, "%02d:%02d", now.hour(), now.minute());
tft.setTextScale(2);
tft.println(ClockBuffer);

La probare con el mega.

PD:Leí el tema de consejos para usar tft muy útiles muchas gracias!!

foto de la duplicación?