Tartalomjegyzék:

Arduino TFT rajzprogram: 4 lépés
Arduino TFT rajzprogram: 4 lépés

Videó: Arduino TFT rajzprogram: 4 lépés

Videó: Arduino TFT rajzprogram: 4 lépés
Videó: Цифровые фильтры - основы, принципы, примеры 2024, November
Anonim
Arduino TFT rajzprogram
Arduino TFT rajzprogram
Arduino TFT rajzprogram
Arduino TFT rajzprogram
Arduino TFT rajzprogram
Arduino TFT rajzprogram

Ez az útmutató leírja azt a kódot, amely az Arduino TFT képernyő rajzprogramjának elkészítéséhez szükséges. Ez a program azonban egyedülálló, mivel lehetővé teszi a rajz SD -kártyára mentését és későbbi betöltését, hogy további szerkesztéseket végezzen!

Kellékek

  1. Arduino Uno - eredeti vagy kompatibilis klón
  2. TFT érintőképernyő - Elegoo képernyőt használtam, vagyis szükségem volt Elegoo illesztőprogramokra.
  3. Micro SD olvasótábla - a rajzadatok SD kártyára való tárolására szolgál. A képernyőm beépített olvasóval rendelkezett a kijelző alatt.
  4. Ceruza - a képernyőm egyet kapott. A körmök is jól működnek.
  5. Micro SD kártya - legfeljebb 32 GB az exFAT formázási korlátai miatt (Az Arduino képes olvasni a FAT32 formátumú kártyákat, de NEM exFAT. A legtöbb nagyobb kártya exFAT formátumú.) Ez az a fajta, amelyet egy bővíthető tárhelyű telefonba helyezne.
  6. Számítógép Arduino IDE -vel
  7. Programozókábel - USB A - USB B. Az Arduino készülékemhez tartozék.
  8. SD -kártya -adapter - a Micro SD -kártyát normál SD -re konvertálja, hogy SD -foglalatba helyezze, VAGY olyanba, amely SD -kártyát csatlakoztat egy USB -nyíláshoz.

Lépés: Formázza meg az SD kártyát

Formázza az SD kártyát
Formázza az SD kártyát
Formázza az SD kártyát
Formázza az SD kártyát
  1. Fogja meg a Micro SD kártyát, és csatlakoztassa a számítógéphez az SD kártyaolvasó segítségével
  2. Nyissa meg a File Explorer programot, és keresse meg az SD -kártyát.
  3. Kattintson a jobb gombbal, és válassza a Formátum lehetőséget.
  4. Állítsa be a beállításokat a képernyőkép alapján.
  5. Kattintson a Start gombra.
  6. Vegye ki a kártyát, amikor a folyamat befejeződött.

Ha nem Windows rendszert futtat, próbálkozzon az SD társító SD Formatter használatával.

2. lépés: Készítse elő az Arduino -t

Készítse elő az Arduino -t
Készítse elő az Arduino -t
Készítse elő az Arduino -t
Készítse elő az Arduino -t
  1. Nyomja le a képernyővédőt az Arduino -ra, ügyelve a csapok sorba állítására.
  2. Helyezze be az SD -kártyát a képernyő alatti olvasóba.

3. lépés: Arduino vázlat

Bár az alkatrészlista meglehetősen egyszerű volt, rengeteg kód van. Itt lépésről lépésre végigmegyek.

#befoglalni

#befoglalás #befoglalás #befoglalás #befoglalás

Az Elegoo_GFX, a _TFTLCD és az TouchScreen hardver-specifikusak. Ha másik képernyőt használ, használja a gyártó által biztosított könyvtárakat.

Az SPI és az SD az SD -kártyával való kommunikációra szolgál. Az SPI az SD kártya vezérlő által használt protokoll.

#if meghatározott (_ SAM3X8E _) #undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif

Ez is hardver-specifikus.

#define YP A3 // analóg tűnek kell lennie #define XM A2 // analóg tűnek kell lennie #define YM 9 #define XP 8

// Érintse meg az Új ILI9341 TP gombot

#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

Ezen #define utasítások mindegyike arra készteti az IDE -t, hogy a nevet helyettesítse az értékkel. Itt állítják be az LCD és SD I/O érintkezőket.

// Nevek hozzárendelése néhány 16 bites színértékhez: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0

Ez néhány a kódban használt színek közül. #ezek meghatározása megkönnyíti a kód olvasását.

#define PENRADIUS 3

Ez határozza meg a rajzoló toll méretét.

#define MINPRESSURE 10#define MAXPRESSURE 1000

// A jobb nyomáspontosság érdekében ismernünk kell az ellenállást

// X+ és X között- Bármilyen multiméterrel olvassa el // Az általam használt készülék 300 ohmja az X-lemezen keresztül TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);

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

Ezek a kijelentések meghatározzák az érintés regisztrálásához, az érintési funkció inicializálásához és a képernyő elindításához szükséges nyomást.

Fájltárolás; int storageSize; int stoX = 1; int stoY = 1;

Ezek a program tároló részének változói.

void setup (void) {Serial.begin (9600); Serial.println ("Festékprogram");

tft.reset ();

uint16_t azonosító = tft.readID ();

if (azonosító == 0x0101) {azonosító = 0x9341; Serial.println (F ("Found 0x9341 LCD driver")); }

// Indítsa el a képernyőt

tft.begin (azonosító); tft.setRotation (2);

pinMode (13, KIMENET);

// Indítsa el az SD kártyát

if (! SD.begin (CSPIN)) {Serial.println ("Az SD inicializálása nem sikerült"); Visszatérés; } Serial.println ("SD inicializálva");

// Rajzolja le a hátteret

drawBackground (); }

A beállítási funkció elindítja a Soros beállítást, ha rendelkezésre áll, visszaállítja a képernyőt, felismeri a TFT illesztőprogramot, elindítja a képernyőt, elindítja a kártyát, és meghív egy funkciót a háttér rajzolásához.

Átugranék a hurokfüggvény nagy részéhez. Minden más csak az érintőképernyő meghajtására szolgál.

// Érzékeli a képernyő megnyomását és tárolja a változókhoz, ha (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Méret p.x = map (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height () - térkép (p.y, TS_MINY, TS_MAXY, tft.height (), 0));

//Húz

if (p.y> 21) {// Adatok mentése az SD -kártya tárhelyére = SD.open ("storage.txt", FILE_WRITE); storage.print (p.x); storage.print (","); storage.println (p.y); storage.close ();

// Pont az érintési helyzetben

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

// Törlés gomb

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

// Betöltőgomb művelet

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

Ha nyomást észlel, állítson be változókat a sajtó helyére.

Ezután, ha a préselés a rajzterületen belül van, mentse el a pontot az SD -kártyára a storage.txt fájlba, és rajzoljon egy kört a megnyomott ponton, meghatározott méretben és színben.

Ezután, ha a sajtó a törlés gomb helyén van, futtasson egy funkciót, amely törli a tárolt rajzot. Ha más méretű képernyőt használ, próbáljon játszani a gombok helyértékeivel.

Ezután, ha a prés a betöltés gomb helyén van, futtasson egy funkciót, amely betölti a tárolt rajzot. Ha más méretű képernyőt használ, próbáljon játszani a gombok helyértékeivel.

Most elmagyarázom a funkciókat.

Az első funkció a beállításoknál hívódik meg, hogy rajzolja meg a hátteret és a gombokat.

void drawBackground () {// A háttér beállítása tft.fillScreen (FEKETE);

// Szöveg festése

tft.setTextColor (FEHÉR); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Festék");

// Betöltés gomb

tft.fillRect (219, 0, 21, 21, ZÖLD);

// Törlés gomb

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

Feketével kitölti a képernyőt, írja a Paint szót, és színes négyzeteket rajzol a gombokhoz. Ha más méretű képernyőt használ, próbáljon játszani a gombok helyértékeivel.

void deleteStorage () {// A fájl törlése SD.remove ("storage.txt");

// Állítsa be a hátteret

tft.fillScreen (FEKETE);

// Sikeres szöveg törlése

tft.setTextColor (FEHÉR); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt törölve");

// Hagyja, hogy a felhasználó elolvassa

késleltetés (2000);

// Folytassa a rajzot

drawBackground (); }

A deleteStorage funkció eltávolítja a storage.txt fájlt, feketén tölti be a képernyőt, és sikeres üzenetet ad a törléshez. Ezután felhívja a drawBackground függvényt, hogy lehetővé tegye valami más festését.

void loadStorage () {// Kerülje az ismétléseket a lassú ujjak késleltetéséből (250);

// Ellenőrizze a tárolófájlt

if (! SD.exists ("storage.txt")) {Serial.println ("Nincs storage.txt fájl"); Visszatérés; }

// Fájl megnyitása csak olvasható módban

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

// Amíg vannak adatok, while (stoY> 0) {// A pozícióváltozók frissítése stoX = storage.parseInt (); stoY = storage.parseInt ();

// Rajzolás a tárolóból

tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // Zárja be a storage.close () fájlt; }

Végül a loadStorage függvény ellenőrzi a tárolófájlt, megnyitja azt csak olvasható módban, majd megismétli ezt a ciklust:

Amíg több adat van,

  1. Frissítse a pozícióváltozókat a storage.txt fájlból származó elemzett adatokkal
  2. Rajzoljon kört a betöltött pontra

Amikor a ciklus befejeződik, és nincs több adat, bezárja a tárolófájlt.

Ennek a vázlatnak a kódja alább található. Csak töltse le, nyissa meg az Arduino -ban, és töltse fel a táblára!

4. lépés: A program használata

A program használata
A program használata

Csak csatlakoztassa az Arduino -t egy áramforráshoz - számítógéphez, akkumulátorhoz, fali szemölcshöz stb., És kezdje el rajzolni. A rajz és a tárolt adatok törléséhez nyomja meg a piros gombot. Ha egy rajzot szeretne betölteni a tárolóból, és folytatni szeretné a munkát, kattintson a zöld gombra. Ily módon sokszor iterálhat egy rajzon!

Bővítményként próbálja meg rajzolni a rajzot a számítógépére:

  1. Csatlakoztassa az adatokat tartalmazó SD -kártyát a számítógéphez.
  2. Nyissa meg a storage.txt fájlt kedvenc szöveg-/kódszerkesztőjében.
  3. Másolja a storage.txt fájlban található összes értéket.
  4. Kövesse ezt a linket egy pontrajzoló programhoz.
  5. Törölje a bal oldali két példapontot.
  6. Illessze be az adatokat oda, ahol a példapontok voltak.

Ez egy ügyes módja annak, hogy megmutassa rajzait - talán még próbálja meg megváltoztatni a pont színét az Arduino -n vagy a pontrajzolón!

A módosításokat szívesen fogadjuk, és szívesen látnék néhány javaslatot a megjegyzésekben. Köszönöm, hogy megnézted ezt, és remélem, hogy találsz rá rendes felhasználási lehetőséget saját projektjeidben!

Ajánlott: