Taula de continguts:
- Subministraments
- Pas 1: formatar la targeta SD
- Pas 2: prepareu l'Arduino
- Pas 3: Arduino Sketch
- Pas 4: utilitzar aquest programa
Vídeo: Programa de dibuix TFT Arduino: 4 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:12
En aquest instructiu es detalla el codi que s’utilitza per fer un programa de dibuix per a una pantalla TFT Arduino. Aquest programa és únic, però, perquè permet guardar un dibuix a la targeta SD i carregar-lo més tard per fer-ne més edicions.
Subministraments
- Arduino Uno: original o un clon compatible
- Pantalla tàctil TFT: he utilitzat una pantalla Elegoo, és a dir, que necessitava conductors Elegoo.
- Tauler lector Micro SD: s’utilitza per emmagatzemar dades de dibuix a la targeta SD. La meva pantalla tenia un lector integrat a sota de la pantalla.
- Llapis òptic: la meva pantalla va venir amb una. Les ungles també funcionen bé.
- Targeta Micro SD: no més de 32 GB, a causa de les limitacions de format exFAT (Arduino pot llegir targetes formatades FAT32 però NO exFAT. La majoria de les targetes més grans es formaten amb exFAT.). Aquest és el tipus que posareu en un telèfon amb emmagatzematge ampliable.
- Ordinador amb IDE Arduino
- Cable de programació: USB A a USB B. El meu Arduino venia amb un.
- Adaptador de targeta SD: s’utilitza per convertir la targeta Micro SD en una SD normal per col·locar-la a la ranura SD O que connecta una targeta SD a una ranura USB.
Pas 1: formatar la targeta SD
- Agafeu la targeta Micro SD i connecteu-la a l'ordinador mitjançant el lector de targetes SD
- Obriu l'Explorador de fitxers i cerqueu la targeta SD.
- Feu-hi clic amb el botó dret i seleccioneu Format.
- Definiu les opcions segons la captura de pantalla.
- Feu clic a Inicia.
- Expulseu la targeta quan finalitzi el procés.
Si no esteu executant Windows, proveu d'utilitzar SD Formatter de l'associació SD.
Pas 2: prepareu l'Arduino
- Premeu l'escut de la pantalla cap avall cap a l'Arduino, tenint cura de alinear els pins.
- Introduïu la targeta SD al lector situat a sota de la pantalla.
Pas 3: Arduino Sketch
Tot i que la llista de peces era bastant senzilla, hi ha un munt de codi. Aquí ho passaré pas a pas.
#incloure
#include #include #include #include
Elegoo_GFX, _TFTLCD i TouchScreen són específics per al maquinari. Si utilitzeu una pantalla diferent, utilitzeu les biblioteques proporcionades pel fabricant.
SPI i SD s’utilitzen per comunicar-se amb la targeta SD. SPI és el protocol utilitzat pel controlador de la targeta SD.
#if definit (_ SAM3X8E _) # undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif
Això també és específic del maquinari.
# definir YP A3 // ha de ser un pin analògic # definir XM A2 // ha de ser un pin analògic # definir YM 9 # definir XP 8
// Toca per obtenir un nou ILI9341 TP
#define TS_MINX 120 #define TS_MAXX 900 #define TS_MINY 70 #define TS_MAXY 920
#defineix CSPIN 10
#define LCD_CS A3
#define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4
Cadascuna d'aquestes declaracions #define fan que l'IDE substitueixi el nom pel valor. Aquí configuren els pins d'E / S LCD i SD.
// Assigneu noms a alguns valors de color de 16 bits: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0
Aquests són alguns dels colors que s’utilitzen al codi. # definir-los facilita la lectura del codi.
#define PENRADIUS 3
Això defineix la mida de la ploma de dibuix.
#define MINPRESSURE 10 # define MAXPRESSURE 1000
// Per a una millor precisió de la pressió, hem de conèixer la resistència
// entre X + i X- Feu servir qualsevol multímetre per llegir-lo // Per al que estic fent servir, els seus 300 ohms a la placa X Pantalla tàctil ts = Pantalla tàctil (XP, YP, XM, YM, 300);
Elegoo_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
Aquestes afirmacions defineixen la pressió necessària per registrar un toc, inicialitzar la funció tàctil i iniciar la pantalla.
Emmagatzematge de fitxers; int storageSize; int stoX = 1; int stoY = 1;
Són variables per a la part d'emmagatzematge del programa.
configuració de buit (buit) {Serial.begin (9600); Serial.println ("Programa de pintura");
tft.reset ();
uint16_t identificador = tft.readID ();
if (identificador == 0x0101) {identificador = 0x9341; Serial.println (F ("Controlador LCD 0x9341 trobat")); }
// Inicieu la pantalla
tft.begin (identificador); tft.setRotation (2);
pinMode (13, OUTPUT);
// Inicieu la targeta SD
if (! SD.begin (CSPIN)) {Serial.println ("Ha fallat la inicialització SD"); tornar; } Serial.println ("SD inicialitzada");
// Dibuixa el fons
drawBackground (); }
La funció de configuració s'inicia en sèrie si està disponible, restableix la pantalla, detecta el controlador TFT, inicia la pantalla, inicia la targeta i crida a una funció per dibuixar el fons.
Passaré a la part principal de la funció de bucle. La resta només s’utilitza per conduir la pantalla tàctil.
// Detecteu la pantalla i premeu-la a les variables si (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Escala p.x = mapa (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height () - mapa (p.y, TS_MINY, TS_MAXY, tft.height (), 0));
// Dibuixar
if (p.y> 21) {// Desa les dades a l’emmagatzematge de la targeta SD = SD.open ("storage.txt", FILE_WRITE); storage.print (p.x); storage.print (","); storage.println (p.y); storage.close ();
// Punt a la posició tàctil
tft.fillCircle (p.x, p.y, PENRADIUS, BLANC); }
// Botó Suprimeix
if ((p.y 198) && (p.x <219)) {deleteStorage (); }
// Acció del botó de càrrega
if ((p.y 219)) {loadStorage (); }}
Si es detecta una premsa, configureu les variables per a la ubicació de la premsa.
A continuació, si la premsa es troba dins de l'àrea de dibuix, deseu el punt a la targeta SD a storage.txt i dibuixeu un cercle en el punt premut, amb una mida i un color definits.
A continuació, si premeu a la ubicació del botó de supressió, executeu una funció que suprimeixi el dibuix emmagatzemat. Si feu servir una pantalla de mides diferents, proveu de jugar amb els valors d'ubicació del botó.
A continuació, si premeu a la ubicació del botó de càrrega, executeu una funció que carregui el dibuix emmagatzemat. Si feu servir una pantalla de mides diferents, proveu de jugar amb els valors d'ubicació del botó.
Ara, explicaré les funcions.
La primera funció es diu a la configuració per dibuixar el fons i els botons.
void drawBackground () {// Estableix el fons tft.fillScreen (NEGRE);
// Pinta text
tft.setTextColor (BLANC); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Pintar");
// Botó de càrrega
tft.fillRect (219, 0, 21, 21, VERD);
// Botó Esborra
tft.fillRect (198, 0, 21, 21, VERMELL); }
Omple la pantalla de negre, escriu la paraula Paint i dibuixa quadrats de colors per als botons. Si feu servir una pantalla de mides diferents, proveu de jugar amb els valors d'ubicació del botó.
void deleteStorage () {// Suprimiu el fitxer SD.remove ("storage.txt");
// Estableix el fons
tft.fillScreen (NEGRE);
// Suprimeix el text correctament
tft.setTextColor (BLANC); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt eliminat");
// Permet que l’usuari el llegeixi
endarreriment (2000);
// Continuar dibuixant
drawBackground (); }
La funció deleteStorage elimina storage.txt, omple la pantalla de negre i proporciona un missatge d’èxit per a la supressió. A continuació, crida a la funció drawBackground per permetre-li començar a pintar una altra cosa.
void loadStorage () {// Eviteu les repeticions de retard lent dels dits (250);
// Comproveu si hi ha fitxer d'emmagatzematge
if (! SD.exists ("storage.txt")) {Serial.println ("No hi ha fitxer storage.txt"); tornar; }
// Obre el fitxer en mode de només lectura
storage = SD.open ("storage.txt", FILE_READ);
// Mentre hi ha dades, while (stoY> 0) {// Actualitza les variables de posició stoX = storage.parseInt (); stoY = storage.parseInt ();
// Dibuixa des de l’emmagatzematge
tft.fillCircle (stoX, stoY, PENRADIUS, BLANC); } // Tanca el fitxer storage.close (); }
Finalment, la funció loadStorage comprova si hi ha un fitxer d’emmagatzematge, l’obre en mode de només lectura i després repeteix aquest bucle:
Mentre hi hagi més dades,
- Actualitzeu les variables de posició amb les dades analitzades des de storage.txt
- Dibuixa un cercle en el punt carregat
Quan es completa el bucle i ja no hi ha dades, es tanca el fitxer d'emmagatzematge.
El codi d’aquest esbós es pot trobar a continuació. Només heu de descarregar-lo, obrir-lo a Arduino i carregar-lo al vostre tauler.
Pas 4: utilitzar aquest programa
Només cal que connecteu l’Arduino a una font d’alimentació: ordinador, bateria, berruga de la paret, etc. i comenceu a dibuixar. Per esborrar el dibuix i les dades emmagatzemades, premeu el botó vermell. Per carregar un dibuix des de l’emmagatzematge i continuar treballant-hi, feu clic al botó verd. D’aquesta manera, podeu repetir moltes vegades un dibuix.
Com a extensió, proveu de dibuixar el dibuix a l'ordinador:
- Connecteu la targeta SD amb dades a l'ordinador.
- Obriu storage.txt al vostre editor de text / codi preferit.
- Copieu tots els valors de storage.txt.
- Seguiu aquest enllaç a un programa de traçat de punts.
- Suprimiu els dos punts d'exemple de l'esquerra.
- Enganxeu les dades on es trobaven els punts d'exemple.
Aquesta és una manera ordenada de mostrar els vostres dibuixos; potser fins i tot proveu de canviar el color del punt a l'Arduino o al traçador de punts.
Les modificacions són ben rebudes i m’agradaria veure alguns suggeriments als comentaris. Gràcies per fer una ullada a això i espero que hi trobeu uns usos adequats en els vostres propis projectes.
Recomanat:
Robot Arduino 5 en 1 - Segueix-me - Seguiment de la línia - Sumo - Dibuix - Evitar obstacles: 6 passos
Robot Arduino 5 en 1 | Segueix-me | Seguiment de la línia | Sumo | Dibuix | Evitar obstacles: aquesta placa de control del robot conté un microcontrolador ATmega328P i un controlador de motor L293D. Per descomptat, no és diferent d’una placa Arduino Uno, però és més útil perquè no necessita un altre blindatge per accionar el motor. És lliure de salt
Ús d’un robot de dibuix per a Arduino amb tutorials d’hora de codi: 3 passos
Ús d’un robot de dibuix per a Arduino amb tutorials d’hora amb codi: he creat un robot de dibuix Arduino per a un taller per ajudar les adolescents a interessar-se pels temes STEM (vegeu https://www.instructables.com/id/Arduino-Drawing-Robot/ ). El robot va ser dissenyat per utilitzar ordres de programació a l'estil de Turtle, com ara forward (distanc
Robot de dibuix per a Arduino: 18 passos (amb imatges)
Robot de dibuix per a Arduino: Nota: Tinc una nova versió d’aquest robot que utilitza una placa de circuit imprès, és més fàcil de construir i té detecció d’obstacles IR. Mireu-ho a http://bit.ly/OSTurtle. Vaig dissenyar aquest projecte per a un taller de 10 hores per a ChickTech.org que té com a objectiu
Plotter CNC Arduino (MÀQUINA DE DIBUIX): 10 passos (amb imatges)
Plotter CNC Arduino (MÀQUINA DE DIBUIX): Ei nois! Espero que hagueu gaudit del meu instructiu anterior "Com crear la vostra pròpia plataforma de formació Arduino"? i ja esteu preparats per a un de nou, com de costum, he fet aquest tutorial per guiar-vos pas a pas mentre feu aquest tipus de super increïble
Robot de dibuix compatible amb Arduino de baix cost: 15 passos (amb imatges)
Robot de dibuix compatible amb Arduino de baix cost: Nota: Tinc una nova versió d’aquest robot que utilitza una placa de circuit imprès, és més fàcil de construir i té detecció d’obstacles IR. Mireu-ho a http://bit.ly/OSTurtle. Vaig dissenyar aquest projecte per a un taller de 10 hores per a ChickTech.org que té com a objectiu