Tabla de contenido:
- Suministros
- Paso 1: formatee la tarjeta SD
- Paso 2: prepara el Arduino
- Paso 3: Boceto de Arduino
- Paso 4: uso de este programa
Video: Programa de dibujo Arduino TFT: 4 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Este instructable detalla el código que se utiliza para hacer un programa de dibujo para una pantalla Arduino TFT. Sin embargo, este programa es único porque permite guardar un dibujo en la tarjeta SD y cargarlo más tarde para realizar más ediciones.
Suministros
- Arduino Uno: clon original o compatible
- Pantalla táctil TFT: utilicé una pantalla Elegoo, lo que significa que necesitaba controladores Elegoo.
- Placa lectora micro SD: se utiliza para almacenar datos de dibujo en la tarjeta SD. Mi pantalla tenía un lector integrado debajo de la pantalla.
- Stylus - mi pantalla vino con uno. Las uñas también funcionan bien.
- Tarjeta Micro SD: no más de 32 GB, debido a limitaciones de formato exFAT (el Arduino puede leer tarjetas formateadas FAT32 pero NO exFAT. La mayoría de las tarjetas más grandes están formateadas con exFAT). Este es el tipo que colocaría en un teléfono con almacenamiento expandible.
- Computadora con Arduino IDE
- Cable de programación - USB A a USB B. Mi Arduino vino con uno.
- Adaptador de tarjeta SD: se utiliza para convertir la tarjeta Micro SD en una SD normal para colocar en la ranura SD O una que conecta una tarjeta SD a una ranura USB.
Paso 1: formatee la tarjeta SD
- Tome la tarjeta Micro SD y conéctela a su computadora usando su lector de tarjetas SD
- Abra el Explorador de archivos y busque la tarjeta SD.
- Haga clic con el botón derecho y seleccione Formato.
- Configure las opciones según la captura de pantalla.
- Haga clic en Inicio.
- Expulsa la tarjeta cuando se complete el proceso.
Si no está ejecutando Windows, intente usar SD Formatter de la asociación SD.
Paso 2: prepara el Arduino
- Presione el protector de pantalla hacia abajo sobre el Arduino, teniendo cuidado de alinear los pines.
- Inserte la tarjeta SD en el lector debajo de la pantalla.
Paso 3: Boceto de Arduino
Aunque la lista de piezas es bastante simple, hay un montón de código. Lo revisaré paso a paso aquí.
#incluir
#incluir #incluir #incluir #incluir
Elegoo_GFX, _TFTLCD y TouchScreen son todos específicos del hardware. Si usa una pantalla diferente, use las bibliotecas proporcionadas por el fabricante.
SPI y SD se utilizan para comunicarse con la tarjeta SD. SPI es el protocolo utilizado por el controlador de la tarjeta SD.
#if definido (_ SAM3X8E _) # undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif
Esto también es específico del hardware.
#define YP A3 // debe ser un pin analógico # define XM A2 // debe ser un pin analógico #define YM 9 #define XP 8
// Toque para nuevo ILI9341 TP
#define TS_MINX 120 #define TS_MAXX 900 #define TS_MINY 70 #define TS_MAXY 920
#define CSPIN 10
#define LCD_CS A3
#define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4
Cada una de estas declaraciones #define hace que el IDE reemplace el nombre por el valor. Aquí, configuraron los pines de E / S de LCD y SD.
// Asignar nombres a algunos valores de color de 16 bits: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0
Estos son algunos de los colores utilizados en el código. # definirlos facilita la lectura del código.
#define PENRADIUS 3
Esto define el tamaño del lápiz de dibujo.
#define MINPRESSURE 10 # defina MAXPRESSURE 1000
// Para una mejor precisión de la presión, necesitamos conocer la resistencia
// entre X + y X- Use cualquier multímetro para leerlo // Para el que estoy usando, sus 300 ohmios en la placa X TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);
Elegoo_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
Estas declaraciones definen la presión necesaria para registrar un toque, inicializar la función táctil e iniciar la pantalla.
Almacenamiento de archivos, int storageSize; int stoX = 1; int stoY = 1;
Estas son variables para la parte de almacenamiento del programa.
configuración vacía (void) {Serial.begin (9600); Serial.println ("Programa de pintura");
tft.reset ();
uint16_t identificador = tft.readID ();
if (identificador == 0x0101) {identificador = 0x9341; Serial.println (F ("Se encontró el controlador LCD 0x9341")); }
// Iniciar la pantalla
tft.begin (identificador); tft.setRotation (2);
pinMode (13, SALIDA);
// Iniciar tarjeta SD
if (! SD.begin (CSPIN)) {Serial.println ("Error al inicializar SD"); regreso; } Serial.println ("SD inicializado");
// Dibuja el fondo
drawBackground (); }
La función de configuración inicia Serial si está disponible, restablece la pantalla, detecta el controlador TFT, inicia la pantalla, inicia la tarjeta y llama a una función para dibujar el fondo.
Saltaré a la parte principal de la función de bucle. Todo lo demás se usa para manejar la pantalla táctil.
// Detectar pantalla presionar y almacenar en variables if (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Scale p.x = map (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height () - mapa (p.y, TS_MINY, TS_MAXY, tft.height (), 0));
//Dibujar
if (p.y> 21) {// Guardar datos en el almacenamiento de la tarjeta SD = SD.open ("storage.txt", FILE_WRITE); almacenamiento.impresión (p.x); almacenamiento.impresión (","); storage.println (p.y); storage.close ();
// Punto en la posición táctil
tft.fillCircle (p.x, p.y, PENRADIUS, BLANCO); }
// Botón Eliminar
if ((p.y 198) && (p.x <219)) {deleteStorage (); }
// Cargar acción del botón
if ((p.y 219)) {loadStorage (); }}
Si se detecta una prensa, establezca variables para la ubicación de la prensa.
Luego, si la prensa está dentro del área de dibujo, guarde el punto en la tarjeta SD en storage.txt y dibuje un círculo en el punto presionado, con un tamaño y color definidos.
Luego, si la prensa está en la ubicación del botón Eliminar, ejecute una función que elimine el dibujo almacenado. Si está utilizando una pantalla de diferente tamaño, intente jugar con los valores de ubicación de los botones.
Luego, si la prensa está en la ubicación del botón de carga, ejecute una función que cargue el dibujo almacenado. Si está utilizando una pantalla de diferente tamaño, intente jugar con los valores de ubicación de los botones.
Ahora, explicaré las funciones.
La primera función se llama en la configuración para dibujar el fondo y los botones.
void drawBackground () {// Establecer el fondo tft.fillScreen (BLACK);
// Pintar texto
tft.setTextColor (BLANCO); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Pintar");
// Botón de carga
tft.fillRect (219, 0, 21, 21, VERDE);
// Botón de borrar
tft.fillRect (198, 0, 21, 21, ROJO); }
Llena la pantalla de negro, escribe la palabra Paint y dibuja cuadrados de colores para los botones. Si está utilizando una pantalla de diferente tamaño, intente jugar con los valores de ubicación de los botones.
void deleteStorage () {// Elimina el archivo SD.remove ("storage.txt");
// Establecer el fondo
tft.fillScreen (NEGRO);
// Eliminar texto de éxito
tft.setTextColor (BLANCO); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("almacenamiento.txt eliminado");
// Deja que el usuario lo lea
retraso (2000);
// Continuar dibujando
drawBackground (); }
La función deleteStorage elimina el archivo storage.txt, llena la pantalla en negro y da un mensaje de éxito para la eliminación. Luego llama a la función drawBackground para permitirle comenzar a pintar otra cosa.
void loadStorage () {// Evita las repeticiones de los dedos lentos delay (250);
// Verificar el archivo de almacenamiento
if (! SD.exists ("storage.txt")) {Serial.println ("Sin archivo storage.txt"); regreso; }
// Abrir archivo en modo de solo lectura
almacenamiento = SD.open ("almacenamiento.txt", FILE_READ);
// Mientras haya datos, while (stoY> 0) {// Actualizar las variables de posición stoX = storage.parseInt (); stoY = almacenamiento.parseInt ();
// Extraer del almacenamiento
tft.fillCircle (stoX, stoY, PENRADIUS, BLANCO); } // Cierre el archivo storage.close (); }
Finalmente, la función loadStorage busca un archivo de almacenamiento, lo abre en modo de solo lectura y luego repite este ciclo:
Mientras haya más datos,
- Actualice las variables de posición con los datos analizados de storage.txt
- Dibuja un círculo en el punto cargado
Cuando el ciclo se completa y no hay más datos, cierra el archivo de almacenamiento.
El código de este boceto se puede encontrar a continuación. ¡Simplemente descárguelo, ábralo en Arduino y cárguelo en su placa!
Paso 4: uso de este programa
Simplemente conecte su Arduino a una fuente de alimentación: computadora, batería, verruga de pared, etc. y comience a dibujar. Para borrar su dibujo y sus datos almacenados, presione el botón rojo. Para cargar un dibujo desde el almacenamiento y continuar trabajando en él, haga clic en el botón verde. ¡De esta manera, puede iterar muchas veces en un dibujo!
Como extensión, intente trazar el dibujo en su computadora:
- Conecte la tarjeta SD con datos a su computadora.
- Abra storage.txt en su editor de texto / código favorito.
- Copie todos los valores en storage.txt.
- Siga este enlace a un programa de trazado de puntos.
- Elimine los dos puntos de ejemplo de la izquierda.
- Pegue sus datos donde estaban los puntos de ejemplo.
Esta es una buena manera de mostrar sus dibujos, ¡tal vez incluso intente cambiar el color del punto en el Arduino o en el trazador de puntos!
Se agradecen las modificaciones y me encantaría ver algunas sugerencias en los comentarios. ¡Gracias por echarle un vistazo a esto y espero que le encuentres buenos usos en tus propios proyectos!
Recomendado:
Robot Arduino 5 en 1 - Sígueme - Siguiente línea - Sumo - Dibujo - Evitar obstáculos: 6 pasos
Robot Arduino 5 en 1 | Sígueme | Siguiente línea | Sumo | Dibujo | Evitar obstáculos: esta placa de control de robot contiene un microcontrolador ATmega328P y un controlador de motor L293D. Por supuesto, no es diferente de una placa Arduino Uno, pero es más útil porque no necesita otro escudo para impulsar el motor. Está libre de saltos
Uso de un robot de dibujo para Arduino con tutoriales de Hour of Code: 3 pasos
Uso de un robot de dibujo para Arduino con tutoriales de Hour of Code: creé un robot de dibujo Arduino para un taller para ayudar a las adolescentes a interesarse en temas STEM (consulte https://www.instructables.com/id/Arduino-Drawing-Robot/ ). El robot fue diseñado para usar comandos de programación estilo Tortuga como forward (distanc
Robot de dibujo para Arduino: 18 pasos (con imágenes)
Robot de dibujo para Arduino: Nota: ¡Tengo una nueva versión de este robot que usa una placa de circuito impreso, es más fácil de construir y tiene detección de obstáculos por infrarrojos! Échale un vistazo en http://bit.ly/OSTurtle Diseñé este proyecto para un taller de 10 horas para ChickTech.org cuyo objetivo es i
Plotter Arduino CNC (MÁQUINA DE DIBUJO): 10 pasos (con imágenes)
Plotter Arduino CNC (MÁQUINA DE DIBUJO): ¡Hola, chicos! Espero que ya hayas disfrutado de mi instructable anterior " Cómo hacer tu propia plataforma de entrenamiento Arduino " y estás listo para uno nuevo, como de costumbre, hice este tutorial para guiarte paso a paso mientras haces este tipo de súper asombroso
Robot de dibujo de bajo costo compatible con Arduino: 15 pasos (con imágenes)
Robot de dibujo de bajo costo compatible con Arduino: Nota: ¡Tengo una nueva versión de este robot que usa una placa de circuito impreso, es más fácil de construir y tiene detección de obstáculos por infrarrojos! Échale un vistazo en http://bit.ly/OSTurtle Diseñé este proyecto para un taller de 10 horas para ChickTech.org cuyo objetivo es i