Kazalo:

Arduino TFT risalni program: 4 koraki
Arduino TFT risalni program: 4 koraki

Video: Arduino TFT risalni program: 4 koraki

Video: Arduino TFT risalni program: 4 koraki
Video: How to Make PLC LCD HMI || FLProg 2024, November
Anonim
Arduino TFT risalni program
Arduino TFT risalni program
Arduino TFT risalni program
Arduino TFT risalni program
Arduino TFT risalni program
Arduino TFT risalni program

Ta navodila podrobno opisujejo kodo, ki je potrebna za izdelavo risalnega programa za Arduino TFT zaslon. Ta program pa je edinstven, saj omogoča shranjevanje risbe na kartico SD in poznejše nalaganje za več popravkov!

Zaloge

  1. Arduino Uno - izviren ali združljiv klon
  2. TFT zaslon na dotik - uporabil sem zaslon Elegoo, kar pomeni, da potrebujem gonilnike Elegoo.
  3. Bralna plošča Micro SD - uporablja se za shranjevanje risb na kartico SD. Moj zaslon je imel pod zaslonom vgrajen bralnik.
  4. Stylus - moj zaslon je prišel z enim. Tudi nohti dobro delujejo.
  5. Kartica Micro SD - največ 32 GB, zaradi omejitev oblikovanja exFAT (Arduino lahko bere kartice v formatu FAT32, NE pa tudi exFAT. Večina večjih kartic je formatiranih z exFAT.). To je tisto, kar bi dali v telefon z razširljivim pomnilnikom.
  6. Računalnik z Arduino IDE
  7. Programski kabel - USB A do USB B. Moj Arduino je prišel z enim.
  8. Adapter za kartico SD - uporablja se za pretvorbo kartice Micro SD v običajno kartico SD za vstavljanje v režo SD ALI tisto, ki povezuje kartico SD z režo USB.

1. korak: Formatirajte kartico SD

Formatirajte kartico SD
Formatirajte kartico SD
Formatirajte kartico SD
Formatirajte kartico SD
  1. Vzemite kartico Micro SD in jo z bralnikom kartic SD pritrdite na računalnik
  2. Odprite File Explorer in poiščite kartico SD.
  3. Z desno miškino tipko kliknite in izberite Oblika.
  4. Nastavite možnosti na podlagi posnetka zaslona.
  5. Kliknite Start.
  6. Ko je postopek končan, odstranite kartico.

Če ne uporabljate sistema Windows, poskusite uporabiti SD Formatter iz združenja SD.

Korak: Pripravite Arduino

Pripravite Arduino
Pripravite Arduino
Pripravite Arduino
Pripravite Arduino
  1. Pritisnite zaslon na zaslon navzdol na Arduino in pazite, da poravnate zatiče.
  2. Kartico SD vstavite v bralnik pod zaslonom.

3. korak: Arduino skica

Čeprav je bil seznam delov precej preprost, obstaja ogromno kode. Tukaj bom šel korak za korakom.

#vključi

#include #include #include #include

Elegoo_GFX, _TFTLCD in TouchScreen so vsi specifični za strojno opremo. Če uporabljate drug zaslon, uporabite knjižnice, ki jih zagotovi proizvajalec.

SPI in SD se uporabljata za komunikacijo s kartico SD. SPI je protokol, ki ga uporablja krmilnik kartice SD.

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

To je tudi specifično za strojno opremo.

#define YP A3 // mora biti analogni pin #define XM A2 // mora biti analogni pin #define YM 9 #define XP 8

// Dotaknite se za nov 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

Zaradi vsakega od teh stavkov #define IDE zamenja ime z vrednostjo. Tu nastavijo vhodno/izhodne zatiče LCD in SD.

// Dodelite imena nekaterim 16-bitnim barvnim vrednostim: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0

To je nekaj barv, ki se uporabljajo v kodi. #njihovo definiranje olajša branje kode.

#define PENRADIUS 3

To določa velikost risalnega peresa.

#define MINPRESSURE 10#define MAXPRESSURE 1000

// Za boljšo natančnost pritiska moramo poznati upor

// med X+ in X- Za branje uporabite kateri koli multimeter // Za tistega, ki ga uporabljam, je njegovih 300 ohmov na plošči X TouchScreen ts = Zaslon na dotik (XP, YP, XM, YM, 300);

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

Te izjave določajo pritisk, potreben za registracijo dotika, inicializacijo funkcije dotika in zagon zaslona.

Shranjevanje datotek; int storageSize; int stoX = 1; int stoY = 1;

To so spremenljivke za shranjevalni del programa.

void setup (void) {Serial.begin (9600); Serial.println ("program za barvanje");

tft.reset ();

uint16_t identifikator = tft.readID ();

if (identifikator == 0x0101) {identifikator = 0x9341; Serial.println (F ("Najdeno 0x9341 gonilnik LCD")); }

// Zaženite zaslon

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

pinMode (13, OUTPUT);

// Zagon kartice SD

if (! SD.begin (CSPIN)) {Serial.println ("Inicializacija SD ni uspela"); vrnitev; } Serial.println ("SD inicializirano");

// Narišite ozadje

drawBackground (); }

Nastavitvena funkcija zažene serijsko, če je na voljo, ponastavi zaslon, zazna gonilnik TFT, zažene zaslon, zažene kartico in pokliče funkcijo za risanje ozadja.

Preskočil bom na večji del funkcije zanke. Vse ostalo se uporablja samo za pogon zaslona na dotik.

// Zaznamo zaslonski pritisk in ga shranimo v spremenljivke if (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Lestvica p.x = map (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height () - zemljevid (p.y, TS_MINY, TS_MAXY, tft.height (), 0));

// Nariši

if (p.y> 21) {// Shranite podatke v pomnilnik kartice SD = SD.open ("storage.txt", FILE_WRITE); storage.print (p.x); storage.print (","); storage.println (p.y); storage.close ();

// Točka na položaju na dotik

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

// Gumb za brisanje

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

// Dejanje gumba za nalaganje

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

Če zaznate stiskalnico, nastavite spremenljivke za lokacijo stiskalnice.

Nato, če je tisk v območju risanja, shranite točko na kartico SD v datoteko storage.txt in na pritisnjeni točki narišite krog z določeno velikostjo in barvo.

Nato, če je pritisk na mestu gumba za brisanje, zaženite funkcijo, ki izbriše shranjeno risbo. Če uporabljate zaslon druge velikosti, se poskusite igrati z vrednostmi lokacije gumbov.

Nato, če je pritisk na mestu gumba za nalaganje, zaženite funkcijo, ki naloži shranjeno risbo. Če uporabljate zaslon druge velikosti, se poskusite igrati z vrednostmi lokacije gumbov.

Zdaj bom razložil funkcije.

Prva funkcija se pokliče v nastavitvah za risanje ozadja in gumbov.

void drawBackground () {// Nastavite ozadje tft.fillScreen (BLACK);

// Barvanje besedila

tft.setTextColor (BELO); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Barva");

// Gumb za nalaganje

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

// Gumb za brisanje

tft.fillRect (198, 0, 21, 21, RDEČA); }

Zaslon zapolni črno, napiše besedo Paint in za gumbe nariše barvne kvadrate. Če uporabljate zaslon druge velikosti, se poskusite igrati z vrednostmi lokacije gumbov.

void deleteStorage () {// Izbrišite datoteko SD.remove ("storage.txt");

// Nastavitev ozadja

tft.fillScreen (ČRNO);

// Izbriši besedilo uspeha

tft.setTextColor (BELO); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("shranjevanje.txt izbrisano");

// Naj uporabnik prebere

zamuda (2000);

// Nadaljuj z risanjem

drawBackground (); }

Funkcija deleteStorage odstrani datoteko storage.txt, napolni zaslon črno in pošlje sporočilo o uspehu brisanja. Nato pokliče funkcijo drawBackground, ki vam omogoča, da začnete slikati kaj drugega.

void loadStorage () {// Izogibajte se ponovitvam zaradi počasne zakasnitve prstov (250);

// Preveri shranjevalno datoteko

if (! SD.exists ("storage.txt")) {Serial.println ("Ni datoteke storage.txt"); vrnitev; }

// Odpiranje datoteke v načinu samo za branje

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

// Čeprav obstajajo podatki, while (stoY> 0) {// Posodobi spremenljivke položaja stoX = storage.parseInt (); stoY = storage.parseInt ();

// Izvleci iz pomnilnika

tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // Zaprite datoteko storage.close (); }

Nazadnje funkcija loadStorage preveri shranjevalno datoteko, jo odpre v načinu samo za branje in nato ponovi to zanko:

Dokler je več podatkov,

  1. Posodobite spremenljivke položaja z razčlenjenimi podatki iz storage.txt
  2. Narišite krog na naloženi točki

Ko se zanka zaključi in ni več podatkov, zapre datoteko za shranjevanje.

Kodo za to skico najdete spodaj. Prenesite ga, odprite v Arduinu in naložite na svojo tablo!

4. korak: Uporaba tega programa

Uporaba tega programa
Uporaba tega programa

Arduino preprosto priključite na vir napajanja - računalnik, baterijo, stensko bradavico itd. In začnite risati. Če želite izbrisati risbo in shranjene podatke, pritisnite rdeči gumb. Če želite naložiti risbo iz shrambe in nadaljevati z njo, kliknite zeleni gumb. Na ta način lahko večkrat ponovite risbo!

Kot razširitev poskusite risbo narisati v računalniku:

  1. Priključite kartico SD s podatki v računalnik.
  2. Odprite datoteko storage.txt v svojem najljubšem urejevalniku besedil/kod.
  3. Kopirajte vse vrednosti v datoteko storage.txt.
  4. Sledite tej povezavi do programa za načrtovanje točk.
  5. Izbrišite dve vzorčni točki na levi.
  6. Prilepite svoje podatke tja, kjer so bile vzorčne točke.

To je lep način, da pokažete svoje risbe - morda celo poskusite spremeniti barvo točke na Arduinu ali v risalniku točk!

Spremembe so dobrodošle in v komentarjih bi rad videl nekaj predlogov. Hvala, ker ste si to ogledali in upam, da boste to našli v svojih projektih!

Priporočena: