Sadržaj:

Arduino TFT program crtanja: 4 koraka
Arduino TFT program crtanja: 4 koraka

Video: Arduino TFT program crtanja: 4 koraka

Video: Arduino TFT program crtanja: 4 koraka
Video: ❓ Обязательно к просмотру начинающему в Arduino IDE (ошибка компилятора) 2024, Studeni
Anonim
Arduino TFT program za crtanje
Arduino TFT program za crtanje
Arduino TFT program za crtanje
Arduino TFT program za crtanje
Arduino TFT program za crtanje
Arduino TFT program za crtanje

Ovo uputstvo detaljno opisuje kôd koji se koristi za izradu programa za crtanje za Arduino TFT ekran. Međutim, ovaj je program jedinstven jer omogućuje spremanje crteža na SD karticu i njegovo kasnije učitavanje radi dodatnih uređivanja!

Pribor

  1. Arduino Uno - izvorni ili kompatibilni klon
  2. TFT zaslon osjetljiv na dodir - koristio sam zaslon Elegoo, što znači da su mi potrebni upravljački programi Elegoo.
  3. Ploča čitača Micro SD - koristi se za spremanje podataka o crtanju na SD karticu. Moj ekran je imao ugrađen čitač ispod zaslona.
  4. Stylus - moj ekran je došao s jednim. Nokti također dobro funkcioniraju.
  5. Mikro SD kartica - ne više od 32 GB, zbog ograničenja formatiranja exFAT (Arduino može čitati kartice u formatu FAT32, ali NE i exFAT. Većina većih kartica formatirane su s exFAT.). Ovo je vrsta koju biste stavili u telefon s proširivom memorijom.
  6. Računalo s Arduino IDE
  7. Kabel za programiranje - USB A na USB B. Moj Arduino je došao s jednim.
  8. Adapter za SD karticu - koristi se za pretvaranje Micro SD kartice u normalnu SD karticu za umetanje u SD ILI onu koja spaja SD karticu u USB utor.

Korak 1: Formatirajte SD karticu

Formatirajte SD karticu
Formatirajte SD karticu
Formatirajte SD karticu
Formatirajte SD karticu
  1. Uzmite Micro SD karticu i pričvrstite je na računalo pomoću čitača SD kartica
  2. Otvorite File Explorer i pronađite SD karticu.
  3. Desnom tipkom miša kliknite i odaberite Oblikovanje.
  4. Postavite opcije na temelju snimke zaslona.
  5. Pritisnite Start.
  6. Izbacite karticu kad je proces dovršen.

Ako ne koristite Windows, pokušajte upotrijebiti SD Formatter iz SD asocijacije.

Korak 2: Pripremite Arduino

Pripremite Arduino
Pripremite Arduino
Pripremite Arduino
Pripremite Arduino
  1. Pritisnite štitnik zaslona prema dolje na Arduino, pazeći da poravnate pinove.
  2. Umetnite SD karticu u čitač ispod zaslona.

Korak 3: Arduino skica

Iako je popis dijelova bio prilično jednostavan, postoji gomila koda. Ovdje ću proći korak po korak.

#uključi

#include #include #include #include

Elegoo_GFX, _TFTLCD i TouchScreen svi su hardverski specifični. Ako koristite drugi zaslon, upotrijebite knjižnice koje je osigurao proizvođač.

SPI i SD se koriste za komunikaciju sa SD karticom. SPI je protokol koji koristi kontroler SD kartice.

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

Ovo je također specifično za hardver.

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

// Dodirnite Za novi ILI9341 TP

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

#definirajte CSPIN 10

#define LCD_CS A3

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

Svaki od ovih izraza #define natjera IDE da zamijeni ime s vrijednošću. Ovdje postavljaju LCD i SD U/I pinove.

// Dodijelite imena nekim 16-bitnim vrijednostima boje: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define PLAVO 0x001F #define ZELENO 0x07E0

Ovo su neke od boja koje se koriste u kodu. #njihovo definiranje olakšava čitanje koda.

#define PENRADIUS 3

Time se definira veličina olovke za crtanje.

#define MINPRESSURE 10#define MAXPRESSURE 1000

// Za bolju preciznost pritiska moramo znati otpor

// između X+ i X- Za čitanje upotrijebite bilo koji multimetar // Za ovaj koji koristim, njegovih 300 ohma na X ploči TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);

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

Ove izjave definiraju pritisak potreban za registriranje dodira, inicijalizaciju funkcije dodira i pokretanje zaslona.

Pohrana datoteka; int storageSize; int stoX = 1; int stoY = 1;

Ovo su varijable za dio programa za pohranu.

void setup (void) {Serial.begin (9600); Serial.println ("Program za bojenje");

tft.reset ();

uint16_t identifikator = tft.readID ();

if (identifikator == 0x0101) {identifikator = 0x9341; Serial.println (F ("Pronađeno 0x9341 LCD upravljački program")); }

// Pokretanje zaslona

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

pinMode (13, OUTPUT);

// Pokretanje SD kartice

if (! SD.begin (CSPIN)) {Serial.println ("SD inicijalizacija nije uspjela"); povratak; } Serial.println ("SD inicijaliziran");

// Nacrtajte pozadinu

drawBackground (); }

Funkcija postavljanja pokreće serijski ako je dostupna, resetira zaslon, otkriva TFT upravljački program, pokreće zaslon, pokreće karticu i poziva funkciju za crtanje pozadine.

Preskočit ću na veći dio funkcije petlje. Sve ostalo služi samo za pogon zaslona osjetljivog na dodir.

// Otkrivanje pritiska na ekranu i spremanje u varijable if (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Skala p.x = map (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height () - karta (p.y, TS_MINY, TS_MAXY, tft.height (), 0));

//Crtati

if (p.y> 21) {// Spremanje podataka na memoriju SD kartice = SD.open ("storage.txt", FILE_WRITE); storage.print (p.x); storage.print (","); skladištenje.println (p.y); skladištenje.close ();

// Točka na položaju dodira

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

// Gumb za brisanje

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

// Radnja gumba Učitaj

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

Ako se otkrije preša, postavite varijable za mjesto preše.

Zatim, ako je tisak unutar područja za crtanje, spremite točku na SD karticu u storage.txt i nacrtajte krug na pritisnutoj točki, s definiranom veličinom i bojom.

Zatim, ako je pritisak na mjestu gumba za brisanje, pokrenite funkciju koja briše pohranjeni crtež. Ako koristite zaslon druge veličine, pokušajte se igrati s vrijednostima položaja gumba.

Zatim, ako je pritisak na mjestu gumba za učitavanje, pokrenite funkciju koja učitava pohranjeni crtež. Ako koristite zaslon druge veličine, pokušajte se igrati s vrijednostima položaja gumba.

Sada ću objasniti funkcije.

Prva funkcija poziva se u postavljanju za crtanje pozadine i gumba.

void drawBackground () {// Postavi pozadinu tft.fillScreen (BLACK);

// Bojanje teksta

tft.setTextColor (BIJELO); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Boja");

// Gumb za učitavanje

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

// Gumb za brisanje

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

Crno ispunjava zaslon, upisuje riječ Boja i iscrtava kvadrate u boji za gumbe. Ako koristite zaslon druge veličine, pokušajte se igrati s vrijednostima položaja gumba.

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

// Postavljanje pozadine

tft.fillScreen (CRNO);

// Brisanje uspješnog teksta

tft.setTextColor (BIJELO); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt obrisan");

// Neka korisnik to pročita

odgoda (2000);

// Nastavak crtanja

drawBackground (); }

Funkcija deleteStorage uklanja storage.txt, ispunjava zaslon crnom bojom i daje poruku o uspjehu za brisanje. Zatim poziva funkciju drawBackground koja vam omogućuje da počnete slikati nešto drugo.

void loadStorage () {// Izbjegavajte ponavljanja zbog sporog odgode prstiju (250);

// Provjera datoteke za pohranu

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

// Otvaranje datoteke u načinu samo za čitanje

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

// Iako postoje podaci, while (stoY> 0) {// Ažuriraj varijable položaja stoX = storage.parseInt (); stoY = storage.parseInt ();

// Izvlačenje iz skladišta

tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // Zatvorite datoteku storage.close (); }

Na kraju, funkcija loadStorage provjerava ima li datoteke za pohranu, otvara je u načinu samo za čitanje, a zatim ponavlja ovu petlju:

Sve dok ima više podataka,

  1. Ažurirajte varijable položaja s raščlanjenim podacima iz storage.txt
  2. Nacrtajte krug na učitanoj točki

Kad se petlja dovrši i nema više podataka, zatvara datoteku za pohranu.

Kôd za ovu skicu možete pronaći ispod. Samo ga preuzmite, otvorite u Arduinu i postavite na svoju ploču!

Korak 4: Korištenje ovog programa

Korištenje ovog programa
Korištenje ovog programa

Samo priključite svoj Arduino na izvor napajanja - računalo, bateriju, zidne bradavice itd. I počnite crtati. Za brisanje crteža i pohranjenih podataka pritisnite crveni gumb. Za učitavanje crteža iz pohrane i nastavak rada na njemu kliknite zeleni gumb. Na ovaj način možete mnogo puta ponavljati crtež!

Kao proširenje, pokušajte iscrtati crtež na računalu:

  1. Priključite SD karticu s podacima u računalo.
  2. Otvorite storage.txt u svom omiljenom uređivaču teksta/koda.
  3. Kopirajte sve vrijednosti u datoteku storage.txt.
  4. Slijedite ovu vezu do programa za crtanje točaka.
  5. Izbrišite dvije primjere točke s lijeve strane.
  6. Zalijepite svoje podatke tamo gdje su bile točke primjera.

Ovo je uredan način da pokažete svoje crteže - možda čak i pokušate promijeniti boju točke na Arduinu ili u crtaču točaka!

Izmjene su dobrodošle i volio bih vidjeti neke prijedloge u komentarima. Hvala vam što ste ovo pogledali i nadam se da ćete to pronaći u vlastitim projektima!

Preporučeni: