Innholdsfortegnelse:

Arduino TFT tegneprogram: 4 trinn
Arduino TFT tegneprogram: 4 trinn

Video: Arduino TFT tegneprogram: 4 trinn

Video: Arduino TFT tegneprogram: 4 trinn
Video: Someone Found a Bitcoin Block Solo! 2024, Juli
Anonim
Arduino TFT tegneprogram
Arduino TFT tegneprogram
Arduino TFT tegneprogram
Arduino TFT tegneprogram
Arduino TFT tegneprogram
Arduino TFT tegneprogram

Denne instruksen beskriver koden som går til å lage et tegneprogram for en Arduino TFT -skjerm. Dette programmet er imidlertid unikt fordi det gjør det mulig å lagre en tegning på SD -kortet og laste det inn senere for å gjøre flere redigeringer!

Rekvisita

  1. Arduino Uno - original eller en kompatibel klon
  2. TFT berøringsskjerm - Jeg brukte en Elegoo -skjerm, noe som betyr at jeg trengte Elegoo -drivere.
  3. Micro SD -leserkort - brukes til å lagre tegningsdata til SD -kort. Skjermen min hadde en innebygd leser under skjermen.
  4. Pekepenn - skjermen min fulgte med. Negler fungerer også bra.
  5. Micro SD -kort - ikke mer enn 32 GB, på grunn av exFAT -formateringsbegrensninger (Arduino kan lese FAT32 -formaterte kort, men IKKE exFAT. De fleste større kortene er formatert med exFAT.). Dette er den typen du vil sette inn i en telefon med utvidbar lagringsplass.
  6. Datamaskin med Arduino IDE
  7. Programmeringskabel - USB A til USB B. Min Arduino fulgte med en.
  8. SD -kortadapter - brukes til å konvertere Micro SD -kortet til et normalt SD -kort som skal settes inn i SD -spor ELLER en som kobler et SD -kort til et USB -spor.

Trinn 1: Formater SD -kortet

Formater SD -kortet
Formater SD -kortet
Formater SD -kortet
Formater SD -kortet
  1. Ta Micro SD -kortet og fest det til datamaskinen din ved hjelp av SD -kortleseren
  2. Åpne File Explorer og finn SD -kortet.
  3. Høyreklikk på den og velg Format.
  4. Angi alternativene basert på skjermbildet.
  5. Klikk Start.
  6. Ta ut kortet når prosessen er fullført.

Hvis du ikke kjører Windows, kan du prøve å bruke SD Formatter fra SD -foreningen.

Trinn 2: Forbered Arduino

Forbered Arduino
Forbered Arduino
Forbered Arduino
Forbered Arduino
  1. Trykk skjermskjermen ned på Arduino, og pass på å sette pinnene på linje.
  2. Sett inn SD -kortet i leseren under skjermen.

Trinn 3: Arduino Sketch

Selv om delelisten var ganske enkel, er det massevis av kode. Jeg skal gå gjennom det trinnvis her.

#inkludere

#include #include #include #include

Elegoo_GFX, _TFTLCD og TouchScreen er alle maskinvarespesifikke. Hvis du bruker en annen skjerm, bruker du bibliotekene fra produsenten.

SPI og SD brukes til å kommunisere med SD -kortet. SPI er protokollen som brukes av SD -kortkontrolleren.

#if definert (_ SAM3X8E _) #undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif

Dette er også maskinvarespesifikt.

#definere YP A3 // må være en analog pin #definere XM A2 // må være en analog pin #definere YM 9 #definere XP 8

// Trykk for ny ILI9341 TP

#definere TS_MINX 120 #definere TS_MAXX 900 #definere TS_MINY 70 #definere TS_MAXY 920

#define CSPIN 10

#definere LCD_CS A3

#definere LCD_CD A2 #definere LCD_WR A1 #definere LCD_RD A0 #definere LCD_RESET A4

Hver av disse #define -setningene får IDE til å erstatte navnet med verdien. Her setter de LCD- og SD I/O -pinnene.

// Tilordne navn til noen 16-biters fargeverdier: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0

Dette er noen av fargene som brukes i koden. #å definere dem gjør det enklere å lese koden.

#define PENRADIUS 3

Dette definerer størrelsen på tegnepennen.

#define MINPRESSURE 10#definere MAXPRESSURE 1000

// For bedre trykkpresisjon må vi vite motstanden

// mellom X+ og X- Bruk et hvilket som helst multimeter for å lese det // For den jeg bruker, er dens 300 ohm på tvers av X-platen TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);

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

Disse utsagnene definerer trykket som er nødvendig for å registrere en berøring, initialisere berøringsfunksjonen og starte skjermen.

Fillagring; int storageSize; int stoX = 1; int stoY = 1;

Dette er variabler for lagringsdelen av programmet.

void setup (void) {Serial.begin (9600); Serial.println ("Malingsprogram");

tft.reset ();

uint16_t identifier = tft.readID ();

hvis (identifier == 0x0101) {identifier = 0x9341; Serial.println (F ("Fant 0x9341 LCD -driver")); }

// Start skjermen

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

pinMode (13, OUTPUT);

// Start SD -kort

if (! SD.begin (CSPIN)) {Serial.println ("SD -initialisering mislyktes"); komme tilbake; } Serial.println ("SD initialisert");

// Tegn bakgrunnen

drawBackground (); }

Oppsettfunksjonen starter Serial hvis den er tilgjengelig, nullstiller skjermen, oppdager TFT -driveren, starter skjermen, starter kortet og kaller en funksjon for å tegne bakgrunnen.

Jeg vil hoppe til hoveddelen av loop -funksjonen. Alt annet er bare brukt til å kjøre berøringsskjermen.

// Oppdag skjermpress og lagre den i variabler hvis (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Scale p.x = map (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height () - kart (p.y, TS_MINY, TS_MAXY, tft.height (), 0));

//Tegne

if (s.y> 21) {// Lagre data på SD -kortlagring = SD.open ("storage.txt", FILE_WRITE); storage.print (s.x); storage.print (","); storage.println (s.y); storage.close ();

// Prikk ved berøringsposisjonen

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

// Slett -knappen

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

// Last inn knapp -handling

if ((s. 219)) {loadStorage (); }}

Hvis det oppdages et trykk, angir du variabler for pressens plassering.

Deretter, hvis pressen er innenfor tegneområdet, lagrer du punktet på SD -kortet i storage.txt og tegner en sirkel på det punktet du trykker på, med en definert størrelse og farge.

Kjør deretter en funksjon som sletter den lagrede tegningen hvis trykket er på sletteknappen. Hvis du bruker en skjerm i en annen størrelse, kan du prøve å leke med knappens plasseringsverdier.

Kjør deretter en funksjon som laster den lagrede tegningen, hvis trykket er på stedet for lasteknappen. Hvis du bruker en skjerm i en annen størrelse, kan du prøve å leke med knappens plasseringsverdier.

Nå skal jeg forklare funksjonene.

Den første funksjonen kalles i oppsettet for å tegne bakgrunn og knapper.

void drawBackground () {// Sett bakgrunnen tft.fillScreen (SVART);

// Mal tekst

tft.setTextColor (HVIT); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Paint");

// Last inn -knapp

tft.fillRect (219, 0, 21, 21, GRØNN);

// Fjern knappen

tft.fillRect (198, 0, 21, 21, RØD); }

Den fyller skjermen svart, skriver ordet Paint og tegner fargede ruter for knappene. Hvis du bruker en skjerm i en annen størrelse, kan du prøve å leke med knappens plasseringsverdier.

void deleteStorage () {// Slett filen SD.remove ("storage.txt");

// Sett bakgrunnen

tft.fillScreen (SVART);

// Slett tekst for suksess

tft.setTextColor (HVIT); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt slettet");

// La brukeren lese den

forsinkelse (2000);

// Fortsett å tegne

drawBackground (); }

DeleteStorage -funksjonen fjerner storage.txt, fyller skjermen svart og gir en vellykket melding om sletting. Den kaller deretter drawBackground -funksjonen for å la deg begynne å male noe annet.

void loadStorage () {// Unngå gjentagelser fra langsom fingerforsinkelse (250);

// Se etter lagringsfil

if (! SD.exists ("storage.txt")) {Serial.println ("No storage.txt file"); komme tilbake; }

// Åpne filen i skrivebeskyttet modus

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

// Selv om det er data, while (stoY> 0) {// Oppdater posisjonsvariabler stoX = storage.parseInt (); stoY = storage.parseInt ();

// Tegn fra lagring

tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // Lukk filen storage.close (); }

Til slutt sjekker loadStorage-funksjonen etter en lagringsfil, åpner den i skrivebeskyttet modus, og gjentar deretter denne løkken:

Så lenge det er mer data,

  1. Oppdater posisjonsvariablene med de analyserte dataene fra storage.txt
  2. Tegn en sirkel på det lastede punktet

Når løkken er fullført og det ikke er flere data, lukker den lagringsfilen.

Koden for denne skissen finner du nedenfor. Bare last den ned, åpne den i Arduino, og last den opp til brettet ditt!

Trinn 4: Bruke dette programmet

Bruker dette programmet
Bruker dette programmet

Bare koble Arduino til en strømkilde - datamaskin, batteri, veggvorter, etc. og begynn å tegne. Trykk på den røde knappen for å slette tegningen og dens lagrede data. Klikk på den grønne knappen for å laste en tegning fra lagringen og fortsette å jobbe med den. På denne måten kan du gjenta mange ganger på en tegning!

Som en utvidelse, prøv å plotte tegningen på datamaskinen din:

  1. Koble SD -kortet med data til datamaskinen.
  2. Åpne storage.txt i din favoritt tekst/kode editor.
  3. Kopier alle verdiene i storage.txt.
  4. Følg denne lenken til et punktplottingsprogram.
  5. Slett de to eksempelpunktene til venstre.
  6. Lim inn dataene dine der eksempelpunktene var.

Dette er en fin måte å vise frem tegningene dine - kanskje til og med prøve å endre punktfargen på Arduino eller i punktplotteren!

Endringer mottas med takk, og jeg vil gjerne se noen forslag i kommentarene. Takk for at du tok en titt på dette, og jeg håper at du finner fine bruksområder for det i dine egne prosjekter!

Anbefalt: