Sisukord:

Arduino TFT joonistusprogramm: 4 sammu
Arduino TFT joonistusprogramm: 4 sammu

Video: Arduino TFT joonistusprogramm: 4 sammu

Video: Arduino TFT joonistusprogramm: 4 sammu
Video: Draw Wall Painting Robot with Cable Plotter Arduino Maker Project Kit Polar Graph with Motor 2024, Juuli
Anonim
Arduino TFT joonistusprogramm
Arduino TFT joonistusprogramm
Arduino TFT joonistusprogramm
Arduino TFT joonistusprogramm
Arduino TFT joonistusprogramm
Arduino TFT joonistusprogramm

See juhendab üksikasjalikult koodi, mis läheb Arduino TFT -ekraani joonistusprogrammi tegemiseks. See programm on aga ainulaadne, kuna võimaldab salvestada joonise SD -kaardile ja laadida selle hiljem, et teha rohkem muudatusi!

Tarvikud

  1. Arduino Uno - originaal või ühilduv kloon
  2. TFT puuteekraan - kasutasin Elegoo ekraani, mis tähendab, et mul on vaja Elegoo draivereid.
  3. Micro SD lugejalaud - kasutatakse joonistusandmete salvestamiseks SD -kaardile. Minu ekraanil oli ekraani all sisseehitatud lugeja.
  4. Pliiats - minu ekraanil oli üks. Ka sõrmeküüned töötavad hästi.
  5. Micro SD -kaart - exFAT -vormindamispiirangute tõttu mitte rohkem kui 32 GB (Arduino saab lugeda FAT32 -vormingus kaarte, kuid EI exFAT -i. Enamik suuremaid kaarte on vormindatud exFAT -iga.) See on selline, mille paneksite laiendatava salvestusruumiga telefoni.
  6. Arduino IDE -ga arvuti
  7. Programmeerimiskaabel - USB A kuni USB B. Minu Arduinoga oli kaasas üks.
  8. SD -kaardi adapter - kasutatakse Micro SD -kaardi teisendamiseks tavaliseks SD -kaardi pesaks või selliseks, mis ühendab SD -kaardi USB -pesaga.

Samm: vormindage SD -kaart

Vormindage SD -kaart
Vormindage SD -kaart
Vormindage SD -kaart
Vormindage SD -kaart
  1. Võtke Micro SD -kaart ja kinnitage see oma SD -kaardilugeja abil arvutiga
  2. Avage File Explorer ja leidke SD -kaart.
  3. Paremklõpsake seda ja valige Vorminda.
  4. Määrake suvandid ekraanipildi põhjal.
  5. Klõpsake nuppu Start.
  6. Eemaldage kaart, kui protsess on lõpule jõudnud.

Kui te ei kasuta Windowsi, proovige kasutada SD -ühenduse SD -vormindajat.

Samm: valmistage Arduino ette

Valmistage Arduino
Valmistage Arduino
Valmistage Arduino
Valmistage Arduino
  1. Vajutage ekraanikilp Arduinole, jälgides tihvtide joondamist.
  2. Sisestage SD -kaart ekraani all asuvasse lugejasse.

Samm: Arduino visand

Kuigi osade loend oli üsna lihtne, on seal palju koodi. Ma käin selle siin samm-sammult läbi.

#kaasake

#kaasamine #kaasamine #kaasamine #kaasamine

Elegoo_GFX, _TFTLCD ja puutetundlik ekraan on kõik riistvarapõhised. Kui kasutate erinevat ekraani, kasutage tootja pakutavaid teeke.

SD -kaardiga suhtlemiseks kasutatakse SPI -d ja SD -d. SPI on protokoll, mida kasutab SD -kaardi kontroller.

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

See on ka riistvarapõhine.

#define YP A3 // peab olema analoogpinge #define XM A2 // peab olema analoogpistik #define YM 9 #define XP 8

// Puudutage valikut Uus 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

Kõik need #define laused sunnivad IDE asendama nime väärtusega. Siin määravad nad LCD ja SD I/O kontaktid.

// Määrake nimed mõnele 16-bitisele värviväärtusele: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0

Need on mõned koodis kasutatud värvid. #nende määratlemine muudab koodi lugemise lihtsamaks.

#defineeri PENRADIUS 3

See määrab joonistuspliiatsi suuruse.

#define MINPRESSURE 10#define MAXPRESSURE 1000

// Parema rõhu täpsuse saavutamiseks peame teadma takistust

// X+ ja X vahel- lugemiseks kasutage mis tahes multimeetrit // Minu kasutatava seadme puhul on selle 300 oomi X-plaadil puuteekraan ts = puutetundlik ekraan (XP, YP, XM, YM, 300);

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

Need väited määravad puudutuse registreerimiseks, puudutusfunktsiooni initsialiseerimiseks ja ekraani käivitamiseks vajaliku rõhu.

Failide salvestamine; int storageSize; int stoX = 1; int stoY = 1;

Need on programmi salvestusosa muutujad.

tühine seadistus (tühine) {Serial.begin (9600); Serial.println ("Värviprogramm");

tft.reset ();

uint16_t identifikaator = tft.readID ();

kui (identifikaator == 0x0101) {identifikaator = 0x9341; Serial.println (F ("Leitud 0x9341 LCD draiver")); }

// Käivitage ekraan

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

pinMode (13, VÄLJUND);

// SD -kaardi käivitamine

if (! SD.begin (CSPIN)) {Serial.println ("SD lähtestamine nurjus"); tagasipöördumine; } Serial.println ("SD lähtestatud");

// Joonista taust

drawBackground (); }

Seadistusfunktsioon käivitab Serial, kui see on saadaval, lähtestab ekraani, tuvastab TFT -draiveri, käivitab ekraani, käivitab kaardi ja kutsub üles tausta joonistamise funktsiooni.

Jätan silmusfunktsiooni suurema osa juurde. Kõike muud kasutatakse lihtsalt puuteekraani juhtimiseks.

// Tuvastage ekraanivajutus ja salvestage see muutujatele, kui (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Skaala p.x = map (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height () - kaart (p.y, TS_MINY, TS_MAXY, tft.height (), 0));

// Joonista

if (p.y> 21) {// Salvesta andmed SD -kaardi mällu = SD.open ("storage.txt", FILE_WRITE); storage.print (p.x); storage.print (","); storage.println (p.y); storage.close ();

// Täpp puudutusasendis

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

// Kustuta nupp

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

// Laadimisnupu toiming

if ((lk 219)) {loadStorage (); }}

Kui tuvastatakse ajakirjandus, määrake ajakirjanduse asukoha muutujad.

Seejärel, kui press on joonistuspiirkonnas, salvestage punkt SD -kaardile salvestusruumis.txt ja joonistage vajutatud kohale ring, millel on määratud suurus ja värv.

Kui vajutate kustutamisnupu asukohta, käivitage funktsioon, mis kustutab salvestatud joonise. Kui kasutate erineva suurusega ekraani, proovige mängida nupu asukoha väärtustega.

Kui vajutate laadimisnupu asukohta, käivitage funktsioon, mis laadib salvestatud joonise. Kui kasutate erineva suurusega ekraani, proovige mängida nuppude asukoha väärtustega.

Nüüd selgitan funktsioone.

Seadistuses kutsutakse esimest funktsiooni tausta ja nuppude joonistamiseks.

void drawBackground () {// Tausta määramine tft.fillScreen (MUST);

// Värvi tekst

tft.setTextColor (VALGE); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Värv");

// Laadimisnupp

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

// Kustuta nupp

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

See täidab ekraani musta värvi, kirjutab sõna Paint ja joonistab nuppudele värvilised ruudud. Kui kasutate erineva suurusega ekraani, proovige mängida nuppude asukoha väärtustega.

void deleteStorage () {// Kustuta fail SD.remove ("storage.txt");

// Määra taust

tft.fillScreen (MUST);

// Edu teksti kustutamine

tft.setTextColor (VALGE); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt kustutatud");

// Lase kasutajal seda lugeda

viivitus (2000);

// Jätka joonistamist

drawBackground (); }

Funktsioon deleteStorage eemaldab faili storage.txt, täidab ekraani musta värvi ja annab kustutamiseks eduka teate. Seejärel kutsub see funktsiooni drawBackground, et saaksite hakata midagi muud maalima.

void loadStorage () {// Vältige aeglaste sõrmede viivituse kordamist (250);

// Kontrollige salvestusfaili

if (! SD.exists ("storage.txt")) {Serial.println ("Storage.txt faili pole"); tagasipöördumine; }

// Faili avamine kirjutuskaitstud režiimis

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

// Kuigi andmeid on, while (stoY> 0) {// Värskenda positsioonimuutujaid stoX = storage.parseInt (); stoY = storage.parseInt ();

// Joonista hoidlast

tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // Sulge fail storage.close (); }

Lõpuks kontrollib funktsioon loadStorage salvestusfaili, avab selle kirjutuskaitstud režiimis ja kordab seda tsüklit:

Niikaua kui andmeid on rohkem,

  1. Värskendage positsioonimuutujaid failist storage.txt parsitud andmetega
  2. Joonista laaditud punktile ring

Kui tsükkel lõpeb ja andmeid pole enam, sulgeb see salvestusfaili.

Selle visandi koodi leiate allpool. Lihtsalt laadige see alla, avage see Arduinos ja laadige see oma lauale!

Samm: selle programmi kasutamine

Selle programmi kasutamine
Selle programmi kasutamine

Lihtsalt ühendage Arduino toiteallikaga - arvuti, aku, seintüügas jne - ja alustage joonistamist. Joonise ja selle salvestatud andmete kustutamiseks vajutage punast nuppu. Joonise salvestamiseks laadimiseks ja selle kallal töötamise jätkamiseks klõpsake rohelist nuppu. Sel moel saate joonisel mitu korda itereerida!

Laiendina proovige joonistada joonis arvutisse:

  1. Ühendage andmetega SD -kaart arvutisse.
  2. Avage storage.txt oma lemmik teksti-/koodiredaktoris.
  3. Kopeerige kõik väärtused failist storage.txt.
  4. Järgige seda linki punktide joonistamise programmiga.
  5. Kustutage vasakul kaks näitepunkti.
  6. Kleepige oma andmed sinna, kus olid näidispunktid.

See on kena viis oma joonistuste näitamiseks - võib -olla proovige isegi Arduino või punkti -plotteri punktivärvi muuta!

Muudatused on teretulnud ja mulle meeldiks näha mõningaid soovitusi kommentaarides. Täname, et vaatasite seda ja loodan, et leiate oma projektides sellele kena kasutusvõimaluse!

Soovitan: