Obsah:

Kreslicí program Arduino TFT: 4 kroky
Kreslicí program Arduino TFT: 4 kroky

Video: Kreslicí program Arduino TFT: 4 kroky

Video: Kreslicí program Arduino TFT: 4 kroky
Video: LEGO® MINDSTORMS® EV3 Inspirace: LEGONARDO – Kreslicí LEGO robot od Daniela 2024, Listopad
Anonim
Kreslicí program Arduino TFT
Kreslicí program Arduino TFT
Kreslicí program Arduino TFT
Kreslicí program Arduino TFT
Kreslicí program Arduino TFT
Kreslicí program Arduino TFT

Tento návod podrobně popisuje kód, který jde do tvorby kreslicího programu pro obrazovku Arduino TFT. Tento program je však jedinečný, protože umožňuje uložení výkresu na kartu SD a jeho pozdější načtení, aby bylo možné provádět další úpravy!

Zásoby

  1. Arduino Uno - originální nebo kompatibilní klon
  2. Dotyková obrazovka TFT - Použil jsem obrazovku Elegoo, což znamená, že jsem potřeboval ovladače Elegoo.
  3. Deska čtečky karet Micro SD - slouží k ukládání výkresových dat na kartu SD. Moje obrazovka měla pod displejem vestavěnou čtečku.
  4. Stylus - moje obrazovka přišla s jedním. Nehty také fungují dobře.
  5. Karta Micro SD - ne více než 32 GB, kvůli omezením formátování exFAT (Arduino umí číst karty formátované FAT32, ale NE exFAT. Většina větších karet je formátována exFAT.). Toto je typ, který byste vložili do telefonu s rozšiřitelným úložištěm.
  6. Počítač s Arduino IDE
  7. Programovací kabel - USB A na USB B. My Arduino byl dodán s jedním.
  8. Adaptér karty SD - slouží k převodu karty Micro SD na normální kartu SD do slotu SD NEBO na kartu, která spojuje kartu SD do slotu USB.

Krok 1: Naformátujte kartu SD

Naformátujte kartu SD
Naformátujte kartu SD
Naformátujte kartu SD
Naformátujte kartu SD
  1. Vezměte kartu Micro SD a připojte ji k počítači pomocí čtečky karet SD
  2. Otevřete Průzkumník souborů a najděte kartu SD.
  3. Klikněte na něj pravým tlačítkem a vyberte Formát.
  4. Nastavte možnosti na základě snímku obrazovky.
  5. Klikněte na Start.
  6. Po dokončení procesu kartu vysuňte.

Pokud nepoužíváte Windows, zkuste použít SD Formatter z přidružení SD.

Krok 2: Připravte Arduino

Připravte si Arduino
Připravte si Arduino
Připravte si Arduino
Připravte si Arduino
  1. Zatlačte štít obrazovky dolů na Arduino a dbejte na to, abyste seřadili kolíky.
  2. Vložte kartu SD do čtečky pod obrazovkou.

Krok 3: Skica Arduino

Ačkoli byl seznam dílů docela jednoduchý, existuje spousta kódu. Tady to projdu krok za krokem.

#zahrnout

#include #include #include #include

Elegoo_GFX, _TFTLCD a TouchScreen jsou hardwarově specifické. Pokud používáte jinou obrazovku, použijte knihovny poskytnuté výrobcem.

Ke komunikaci s kartou SD slouží SPI a SD. SPI je protokol používaný řadičem karty SD.

#if definováno (_ SAM3X8E _) #undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif

To je také specifické pro hardware.

#define YP A3 // musí být analogový pin #define XM A2 // musí být analogový pin #definovat YM 9 #define XP 8

// Dotkněte se pro 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

Každý z těchto příkazů #define způsobí, že IDE nahradí název hodnotou. Zde nastavují piny LCD a SD I/O.

// Přiřazení názvů některým 16bitovým hodnotám barev: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0

Toto je několik barev použitých v kódu. #jejich definování usnadňuje čtení kódu.

#define PENRADIUS 3

Tím je definována velikost kreslícího pera.

#definujte MINPRESSURE 10#definujte MAXPRESSURE 1000

// Pro lepší přesnost tlaku potřebujeme znát odpor

// mezi X+ a X- K přečtení použijte jakýkoli multimetr // Ten, který používám, má 300 ohmů přes desku X TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);

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

Tato prohlášení definují tlak potřebný k zaregistrování dotyku, inicializaci dotykové funkce a spuštění obrazovky.

Úložiště souborů; int storageSize; int stoX = 1; int stoY = 1;

Toto jsou proměnné pro úložnou část programu.

void setup (void) {Serial.begin (9600); Serial.println ("Malovací program");

tft.reset ();

uint16_t identifier = tft.readID ();

if (identifikátor == 0x0101) {identifikátor = 0x9341; Serial.println (F ("Nalezen ovladač 0x9341 LCD")); }

// Spusťte obrazovku

tft.begin (identifikátor); tft.setRotation (2);

pinMode (13, VÝSTUP);

// Spusťte SD kartu

if (! SD.begin (CSPIN)) {Serial.println ("inicializace SD se nezdařila"); vrátit se; } Serial.println ("SD inicializováno");

// Nakreslete pozadí

drawBackground (); }

Nastavovací funkce spustí sériové připojení, pokud je k dispozici, resetuje obrazovku, detekuje ovladač TFT, spustí obrazovku, spustí kartu a vyvolá funkci pro vykreslení pozadí.

Přeskočím na hlavní část funkce smyčky. Všechno ostatní slouží pouze k ovládání dotykové obrazovky.

// Detekce obrazovky stiskněte a uložte ji do proměnných if (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Scale p.x = map (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height () - mapa (p.y, TS_MINY, TS_MAXY, tft.height (), 0));

//Kreslit

if (p.y> 21) {// Uložení dat na úložiště karty SD = SD.open ("storage.txt", FILE_WRITE); storage.print (str. x); storage.print (","); storage.println (ročně); storage.close ();

// Tečka na místě dotyku

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

// Tlačítko Odstranit

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

// Akce tlačítka Načíst

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

Pokud je detekován lis, nastavte proměnné pro umístění lisu.

Poté, pokud se lis nachází v kreslicí oblasti, uložte bod na kartu SD v úložišti.txt a nakreslete kruh v stisknutém bodě s definovanou velikostí a barvou.

Poté, pokud je stisknutí v místě tlačítka pro odstranění, spusťte funkci, která odstraní uložený výkres. Pokud používáte obrazovku jiné velikosti, zkuste si pohrát s hodnotami umístění tlačítek.

Poté, pokud je stisk v místě tlačítka pro načtení, spusťte funkci, která načte uložený výkres. Pokud používáte obrazovku jiné velikosti, zkuste si pohrát s hodnotami umístění tlačítek.

Nyní vysvětlím funkce.

První funkce se nazývá v nastavení k vykreslení pozadí a tlačítek.

void drawBackground () {// Nastavení pozadí tft.fillScreen (ČERNÁ);

// Malování textu

tft.setTextColor (BÍLÁ); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Malování");

// Tlačítko Načíst

tft.fillRect (219, 0, 21, 21, ZELENÁ);

// Tlačítko Vymazat

tft.fillRect (198, 0, 21, 21, ČERVENÁ); }

Vyplní obrazovku černě, napíše slovo Malování a nakreslí barevné čtverce pro tlačítka. Pokud používáte obrazovku jiné velikosti, zkuste si pohrát s hodnotami umístění tlačítek.

void deleteStorage () {// Odstraní soubor SD.remove ("storage.txt");

// Nastavení pozadí

tft.fillScreen (ČERNÝ);

// Smazání textu úspěchu

tft.setTextColor (BÍLÁ); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt smazán");

// Nechte to uživatele přečíst

zpoždění (2000);

// Pokračujte v kreslení

drawBackground (); }

Funkce deleteStorage odstraní soubor storage.txt, vyplní obrazovku černou barvou a zobrazí zprávu o úspěšném odstranění. Poté zavolá funkci drawBackground, která vám umožní začít malovat něco jiného.

void loadStorage () {// Vyhněte se opakování kvůli zpoždění pomalých prstů (250);

// Zkontrolujte soubor úložiště

if (! SD.exists ("storage.txt")) {Serial.println ("Žádný soubor storage.txt"); vrátit se; }

// Otevřete soubor v režimu jen pro čtení

úložiště = SD.open ("storage.txt", FILE_READ);

// Zatímco existují data, while (stoY> 0) {// Aktualizace polohových proměnných stoX = storage.parseInt (); stoY = storage.parseInt ();

// Kreslení z úložiště

tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // Zavřete soubor storage.close (); }

Nakonec funkce loadStorage zkontroluje soubor úložiště, otevře jej v režimu pouze pro čtení a poté tuto smyčku zopakuje:

Dokud je k dispozici více dat,

  1. Aktualizujte proměnné polohy pomocí analyzovaných dat z storage.txt
  2. V načteném bodě nakreslete kruh

Když se smyčka dokončí a nejsou k dispozici žádná další data, zavře soubor úložiště.

Kód pro tuto skicu najdete níže. Stačí jej stáhnout, otevřít v Arduinu a nahrát na desku!

Krok 4: Použití tohoto programu

Pomocí tohoto programu
Pomocí tohoto programu

Stačí připojit Arduino ke zdroji napájení - počítači, baterii, bradavici atd. A začít kreslit. Chcete -li kresbu a uložená data vymazat, stiskněte červené tlačítko. Chcete -li načíst výkres z úložiště a pokračovat v práci, klikněte na zelené tlačítko. Tímto způsobem můžete na výkresu mnohokrát iterovat!

Jako rozšíření zkuste kresbu nakreslit do počítače:

  1. Připojte kartu SD s daty k počítači.
  2. Otevřete soubor storage.txt ve svém oblíbeném editoru textu/kódu.
  3. Zkopírujte všechny hodnoty v souboru storage.txt.
  4. Pomocí tohoto odkazu na program pro vykreslování bodů.
  5. Odstraňte dva příklady bodů vlevo.
  6. Vložte data tam, kde byly ukázkové body.

Toto je úhledný způsob, jak předvést své kresby - možná dokonce zkuste změnit barvu bodu na Arduinu nebo v bodovém plotru!

Úpravy jsou vítány a rád bych viděl nějaké návrhy v komentářích. Děkujeme, že jste se na to podívali, a doufám, že to ve svých vlastních projektech najdete úhledně!

Doporučuje: