Sommario:

Programma di disegno TFT Arduino: 4 passaggi
Programma di disegno TFT Arduino: 4 passaggi

Video: Programma di disegno TFT Arduino: 4 passaggi

Video: Programma di disegno TFT Arduino: 4 passaggi
Video: Usare un display ST7735 TFT SPI con Arduino - Video 545 2024, Luglio
Anonim
Programma di disegno Arduino TFT
Programma di disegno Arduino TFT
Programma di disegno Arduino TFT
Programma di disegno Arduino TFT
Programma di disegno Arduino TFT
Programma di disegno Arduino TFT

Questa istruzione descrive in dettaglio il codice che serve a creare un programma di disegno per uno schermo TFT Arduino. Questo programma è unico, tuttavia, perché consente di salvare un disegno sulla scheda SD e caricarlo in seguito per apportare ulteriori modifiche!

Forniture

  1. Arduino Uno - clone originale o compatibile
  2. Touchscreen TFT - Ho usato uno schermo Elegoo, il che significa che avevo bisogno dei driver Elegoo.
  3. Scheda lettore Micro SD - utilizzata per memorizzare i dati di disegno sulla scheda SD. Il mio schermo aveva un lettore integrato sotto il display.
  4. Stilo: il mio schermo è arrivato con uno. Anche le unghie funzionano bene.
  5. Scheda Micro SD - non più di 32 GB, a causa delle limitazioni di formattazione exFAT (l'Arduino può leggere le schede formattate FAT32 ma NON exFAT. La maggior parte delle schede più grandi sono formattate con exFAT.). Questo è il tipo che inseriresti in un telefono con memoria espandibile.
  6. Computer con Arduino IDE
  7. Cavo di programmazione: da USB A a USB B. Il mio Arduino è arrivato con uno.
  8. Adattatore per scheda SD: utilizzato per convertire la scheda Micro SD in una normale SD da inserire nello slot SD OPPURE una che collega una scheda SD a uno slot USB.

Passaggio 1: formatta la scheda SD

Formattare la scheda SD
Formattare la scheda SD
Formattare la scheda SD
Formattare la scheda SD
  1. Prendi la scheda Micro SD e collegala al computer utilizzando il lettore di schede SD
  2. Apri Esplora file e trova la scheda SD.
  3. Fare clic con il pulsante destro del mouse e selezionare Formato.
  4. Imposta le opzioni in base allo screenshot.
  5. Fare clic su Avvia.
  6. Espellere la carta quando il processo è completo.

Se non stai utilizzando Windows, prova a utilizzare SD Formatter dall'associazione SD.

Passaggio 2: prepara l'Arduino

Prepara l'Arduino
Prepara l'Arduino
Prepara l'Arduino
Prepara l'Arduino
  1. Premi lo schermo dello schermo su Arduino, avendo cura di allineare i pin.
  2. Inserisci la scheda SD nel lettore sotto lo schermo.

Passaggio 3: schizzo Arduino

Sebbene l'elenco delle parti fosse piuttosto semplice, c'è un sacco di codice. Lo esaminerò passo dopo passo qui.

#includere

#include #include #include #include

Elegoo_GFX, _TFTLCD e TouchScreen sono tutti specifici dell'hardware. Se utilizzi uno schermo diverso, usa le librerie fornite dal produttore.

SPI e SD vengono utilizzati per comunicare con la scheda SD. SPI è il protocollo utilizzato dal controller della scheda SD.

#if define(_SAM3X8E_)#undef _FlashStringHelper::F(string_literal) #define F(string_literal) string_literal #endif

Anche questo è specifico per l'hardware.

#define YP A3 // deve essere un pin analogico#define XM A2 // deve essere un pin analogico #define YM 9 #define XP 8

//Tocca per il nuovo ILI9341 TP

#definisci TS_MINX 120 #definisci TS_MAXX 900 #definisci TS_MINY 70 #definisci 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

Ognuna di queste istruzioni #define fa sì che l'IDE sostituisca il nome con il valore. Qui, impostano i pin I/O LCD e SD.

// Assegna nomi ad alcuni valori di colore a 16 bit:#define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0

Questi sono alcuni dei colori utilizzati nel codice. #definirli semplifica la lettura del codice.

#define PENRADIUS 3

Questo definisce la dimensione della penna da disegno.

#definire PRESSIONE MIN 10#definire PRESSIONE MAX 1000

// Per una migliore precisione della pressione, dobbiamo conoscere la resistenza

// tra X+ e X- Usa qualsiasi multimetro per leggerlo // Per quello che sto usando, i suoi 300 ohm sulla piastra X TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);

Elegoo_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

Queste istruzioni definiscono la pressione necessaria per registrare un tocco, inizializzare la funzione touch e avviare lo schermo.

Archiviazione file; dimensione di archiviazione int; int stoX = 1; int stoY = 1;

Queste sono variabili per la parte di memorizzazione del programma.

void setup(void) { Serial.begin(9600); Serial.println("Programma di pittura");

tft.reset();

uint16_t identificatore = tft.readID();

if (identificatore == 0x0101) { identificatore = 0x9341; Serial.println(F("Trovato 0x9341 LCD driver")); }

//Avvia lo schermo

tft.begin(identificatore); tft.setRotation(2);

pinMode(13, USCITA);

//Avvia scheda SD

if (!SD.begin(CSPIN)) { Serial.println("Inizializzazione SD fallita"); Restituzione; } Serial.println("SD inizializzato");

//Disegna lo sfondo

disegnareSfondo(); }

La funzione di configurazione avvia Seriale se disponibile, ripristina lo schermo, rileva il driver TFT, avvia lo schermo, avvia la scheda e chiama una funzione per disegnare lo sfondo.

Passerò alla parte principale della funzione loop. Tutto il resto viene utilizzato solo per guidare il touchscreen.

//Rileva la pressione dello schermo e la memorizza nelle variabili if (p.z > MINPRESSURE && p.z < MAXPRESSURE) { //Scale p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0); p.y = (tft.height() - map(p.y, TS_MINY, TS_MAXY, tft.height(), 0));

//Disegno

if (p.y > 21) { //Salva i dati nella memoria della scheda SD = SD.open("storage.txt", FILE_WRITE); storage.print(p.x); storage.print(", "); storage.println(p.y); storage.close();

//Punto nella posizione del tocco

tft.fillCircle(p.x, p.y, PENRADIUS, WHITE); }

//Pulsante Elimina

if ((p.y 198) && (p.x < 219)) { deleteStorage(); }

//Azione del pulsante di caricamento

if ((p.y 219)) { loadStorage(); } }

Se viene rilevata una stampante, impostare le variabili per la posizione della stampante.

Quindi, se la stampante si trova all'interno dell'area di disegno, salvare il punto sulla scheda SD in storage.txt e disegnare un cerchio nel punto premuto, con una dimensione e un colore definiti.

Quindi, se la stampante si trova nella posizione del pulsante Elimina, eseguire una funzione che elimina il disegno memorizzato. Se stai utilizzando uno schermo di dimensioni diverse, prova a giocare con i valori della posizione dei pulsanti.

Quindi, se la stampante si trova nella posizione del pulsante di caricamento, eseguire una funzione che carica il disegno memorizzato. Se stai utilizzando uno schermo di dimensioni diverse, prova a giocare con i valori della posizione dei pulsanti.

Ora spiegherò le funzioni.

La prima funzione viene chiamata in setup per disegnare lo sfondo ei pulsanti.

void drawBackground() { //Imposta lo sfondo tft.fillScreen(BLACK);

//Dipingi il testo

tft.setTextColor(BIANCO); tft.setTextSize(3); tft.setCursor(0, 0); tft.println("Dipingi");

//Pulsante Carica

tft.fillRect(219, 0, 21, 21, VERDE);

//Pulsante Cancella

tft.fillRect(198, 0, 21, 21, ROSSO); }

Riempie lo schermo di nero, scrive la parola Paint e disegna quadrati colorati per i pulsanti. Se stai utilizzando uno schermo di dimensioni diverse, prova a giocare con i valori della posizione dei pulsanti.

void deleteStorage() { //Cancella il file SD.remove("storage.txt");

//Imposta lo sfondo

tft.fillScreen(NERO);

//Elimina il testo di successo

tft.setTextColor(BIANCO); tft.setTextSize(2); tft.setCursor(0, 0); tft.println("storage.txt cancellato");

//Lascia che l'utente lo legga

ritardo (2000);

//Continua a disegnare

disegnareSfondo(); }

La funzione deleteStorage rimuove storage.txt, riempie lo schermo di nero e fornisce un messaggio di successo per l'eliminazione. Quindi chiama la funzione drawBackground per consentirti di iniziare a dipingere qualcos'altro.

void loadStorage() { //Evita le ripetizioni dal ritardo lento delle dita (250);

//Controlla il file di archiviazione

if (!SD.exists("storage.txt")) { Serial.println("Nessun file storage.txt"); Restituzione; }

//Apri file in modalità di sola lettura

storage = SD.open("storage.txt", FILE_READ);

//Finché ci sono dati, while (stoY > 0) { //Aggiorna variabili di posizione stoX = storage.parseInt(); stoY = storage.parseInt();

//Disegna dalla memoria

tft.fillCircle(stoX, stoY, PENRADIUS, WHITE); } //Chiudi il file storage.close(); }

Infine, la funzione loadStorage verifica la presenza di un file di archiviazione, lo apre in modalità di sola lettura, quindi ripete questo ciclo:

Finché ci sono più dati,

  1. Aggiorna le variabili di posizione con i dati analizzati da storage.txt
  2. Disegna un cerchio nel punto caricato

Quando il ciclo viene completato e non ci sono più dati, chiude il file di archiviazione.

Il codice per questo schizzo può essere trovato di seguito. Basta scaricarlo, aprirlo in Arduino e caricarlo sulla tua scheda!

Passaggio 4: utilizzo di questo programma

Utilizzo di questo programma
Utilizzo di questo programma

Basta collegare Arduino a una fonte di alimentazione: computer, batteria, verruca a muro, ecc. E iniziare a disegnare. Per cancellare il tuo disegno e i suoi dati memorizzati, premi il pulsante rosso. Per caricare un disegno dalla memoria e continuare a lavorarci, fai clic sul pulsante verde. In questo modo, puoi iterare molte volte su un disegno!

Come estensione, prova a tracciare il disegno sul tuo computer:

  1. Collega la scheda SD con i dati al tuo computer.
  2. Apri storage.txt nel tuo editor di testo/codice preferito.
  3. Copia tutti i valori in storage.txt.
  4. Segui questo link a un programma per la creazione di punti.
  5. Elimina i due punti di esempio a sinistra.
  6. Incolla i tuoi dati dove erano i punti di esempio.

Questo è un modo carino per mostrare i tuoi disegni - magari prova anche a cambiare il colore del punto su Arduino o nel plotter!

Le modifiche sono benvenute e mi piacerebbe vedere alcuni suggerimenti nei commenti. Grazie per aver dato un'occhiata a questo e spero che troverai usi accurati per i tuoi progetti!

Consigliato: