Obsah:

Program kreslenia TFT Arduino: 4 kroky
Program kreslenia TFT Arduino: 4 kroky

Video: Program kreslenia TFT Arduino: 4 kroky

Video: Program kreslenia TFT Arduino: 4 kroky
Video: AutoCAD 1. Штамп креслення: Налаштування, Шари, Будова, Текст, Розміри, Лист 2024, November
Anonim
Program kreslenia TFT Arduino
Program kreslenia TFT Arduino
Program kreslenia TFT Arduino
Program kreslenia TFT Arduino
Program kreslenia TFT Arduino
Program kreslenia TFT Arduino

Tento návod podrobne popisuje kód, ktorý je súčasťou tvorby programu na kreslenie pre obrazovku Arduino TFT. Tento program je však jedinečný, pretože umožňuje uloženie kresby na kartu SD a jej neskoršie načítanie, aby bolo možné vykonávať ďalšie úpravy!

Zásoby

  1. Arduino Uno - originálny alebo kompatibilný klon
  2. Dotyková obrazovka TFT - Použil som obrazovku Elegoo, to znamená, že som potreboval ovládače Elegoo.
  3. Doska čítačky Micro SD - slúži na ukladanie údajov kresby na kartu SD. Moja obrazovka mala vstavanú čítačku pod displejom.
  4. Stylus - s jedným prišiel aj môj displej. Dobre fungujú aj nechty.
  5. Karta Micro SD - nie viac ako 32 GB, kvôli obmedzeniam formátovania exFAT (Arduino dokáže čítať karty vo formáte FAT32, ale NIE exFAT. Väčšina väčších kariet je formátovaná exFAT.). Je to druh, ktorý by ste vložili do telefónu s rozšíriteľným úložiskom.
  6. Počítač s Arduino IDE
  7. Programovací kábel - USB A na USB B. Moje Arduino bolo dodané s jedným.
  8. Adaptér karty SD - slúži na konverziu karty Micro SD na normálnu kartu SD, ktorá sa dá vložiť do slotu SD ALEBO na ten, ktorý pripája kartu SD k zásuvke USB.

Krok 1: Naformátujte kartu SD

Naformátujte kartu SD
Naformátujte kartu SD
Naformátujte kartu SD
Naformátujte kartu SD
  1. Vezmite kartu Micro SD a pripojte ju k počítaču pomocou čítačky kariet SD
  2. Otvorte Prieskumník a nájdite kartu SD.
  3. Kliknite naň pravým tlačidlom myši a vyberte položku Formátovať.
  4. Nastavte možnosti na základe snímky obrazovky.
  5. Kliknite na tlačidlo Štart.
  6. Po dokončení postupu kartu vyberte.

Ak nepoužívate Windows, skúste použiť SD Formatter z asociácie SD.

Krok 2: Pripravte si Arduino

Pripravte si Arduino
Pripravte si Arduino
Pripravte si Arduino
Pripravte si Arduino
  1. Zatlačte štít obrazovky nadol na Arduino a dbajte na to, aby ste kolíky zoradili.
  2. Vložte kartu SD do čítačky pod obrazovkou.

Krok 3: Skica Arduino

Napriek tomu, že zoznam dielov bol veľmi jednoduchý, existuje veľa kódu. Tu si to prejdem krok za krokom.

#zahrnúť

#include #include #include #include

Elegantoo_GFX, _TFTLCD a TouchScreen sú špecifické pre hardvér. Ak používate inú obrazovku, použite knižnice dodávané výrobcom.

Na komunikáciu s kartou SD sa používajú SPI a SD. SPI je protokol, ktorý používa radič karty SD.

#ak je definovaný (_ SAM3X8E _) #undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif

Toto je tiež špecifické pre hardvér.

#define YP A3 // musí byť analógový pin #definovať XM A2 // musí byť analógový pin #definovať YM 9 #define XP 8

// Dotknite sa položky 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 príkazov #define spôsobuje, že IDE nahradí názov hodnotou. Tu nastavia piny LCD a SD I/O.

// Priradenie názvov niektorým 16-bitovým hodnotám farieb: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define ZELENÁ 0x07E0

Toto je niekoľko farieb použitých v kóde. #ich definovanie uľahčuje čítanie kódu.

#define PENRADIUS 3

Toto definuje veľkosť pera na kreslenie.

#define MINPRESSURE 10#definujte MAXPRESSURE 1000

// Na lepšiu presnosť tlaku potrebujeme poznať odpor

// medzi X+ a X- na jeho prečítanie použite ľubovoľný multimeter // ten, ktorý používam, má 300 ohmov na doske X TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);

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

Tieto vyhlásenia definujú tlak potrebný na registráciu dotyku, inicializáciu dotykovej funkcie a spustenie obrazovky.

Úložisko súborov; int storageSize; int stoX = 1; int stoY = 1;

Toto sú premenné pre ukladaciu časť programu.

void setup (void) {Serial.begin (9600); Serial.println („Program na maľovanie“);

tft.reset ();

uint16_t identifier = tft.readID ();

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

// Spustite obrazovku

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

pinMode (13, VÝSTUP);

// Spustite kartu SD

if (! SD.begin (CSPIN)) {Serial.println ("Inicializácia SD zlyhala"); návrat; } Serial.println ("SD inicializované");

// Nakreslite pozadie

drawBackground (); }

Funkcia nastavenia spustí Serial, ak je k dispozícii, resetuje obrazovku, zistí ovládač TFT, spustí obrazovku, spustí kartu a vyvolá funkciu na kreslenie pozadia.

Preskočím na hlavnú časť funkcie slučky. Všetko ostatné slúži iba na ovládanie dotykovej obrazovky.

// Zistenie stlačenia obrazovky a uloženie do premenný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));

// Nakreslite

if (str.y> 21) {// Uloženie údajov na úložisko karty SD = SD.open ("storage.txt", FILE_WRITE); storage.print (str. x); storage.print (","); storage.println (ročne); storage.close ();

// Bodka na dotyk

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

// Tlačidlo Odstrániť

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

// Akcia tlačidla Načítať

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

Ak je detekovaný lis, nastavte premenné pre umiestnenie lisu.

Potom, ak sa lis nachádza v oblasti kreslenia, uložte bod na kartu SD v úložisku.txt a v stlačenom bode nakreslite kruh s definovanou veľkosťou a farbou.

Potom, ak je stlačenie v mieste tlačidla Odstrániť, spustite funkciu, ktorá odstráni uložený výkres. Ak používate obrazovku inej veľkosti, skúste sa pohrať s hodnotami umiestnenia tlačidiel.

Potom, ak je stlačenie v mieste tlačidla načítania, spustite funkciu, ktorá načíta uložený výkres. Ak používate obrazovku inej veľkosti, skúste sa pohrať s hodnotami umiestnenia tlačidiel.

Teraz vysvetlím funkcie.

Prvá funkcia sa volá v nastavení na kreslenie pozadia a tlačidiel.

void drawBackground () {// Nastavenie pozadia tft.fillScreen (BLACK);

// Maľovanie textu

tft.setTextColor (BIELY); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Maľovať");

// Tlačidlo načítať

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

// Tlačidlo Vymazať

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

Vyplní obrazovku čiernou farbou, napíše slovo Maľovať a nakreslí farebné štvorčeky pre tlačidlá. Ak používate obrazovku inej veľkosti, skúste sa pohrať s hodnotami umiestnenia tlačidiel.

void deleteStorage () {// Odstráni súbor SD.remove ("storage.txt");

// Nastavenie pozadia

tft.fillScreen (ČIERNA);

// Odstránenie textu úspechu

tft.setTextColor (BIELY); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt vymazaný");

// Nech si to užívateľ prečíta

oneskorenie (2000);

// Pokračujte v kreslení

drawBackground (); }

Funkcia deleteStorage odstráni súbor storage.txt, vyplní čiernu obrazovku a poskytne správu o úspešnom odstránení. Potom zavolá funkciu drawBackground, ktorá vám umožní začať maľovať niečo iné.

void loadStorage () {// Vyhnite sa opakovaniu spomaleného oneskorenia prstov (250);

// Vyhľadajte súbor v úložisku

if (! SD.exists ("storage.txt")) {Serial.println ("Žiadny súbor storage.txt"); návrat; }

// Otvorenie súboru v režime iba na čítanie

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

// Kým existujú údaje, while (stoY> 0) {// Aktualizácia premenných polohy stoX = storage.parseInt (); stoY = storage.parseInt ();

// Nakreslite z úložiska

tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // Zatvorte súbor storage.close (); }

Nakoniec funkcia loadStorage vyhľadá úložný súbor, otvorí ho v režime iba na čítanie a potom zopakuje túto slučku:

Pokiaľ je k dispozícii viac údajov,

  1. Aktualizujte premenné polohy analyzovanými údajmi zo súboru storage.txt
  2. V načítanom bode nakreslite kruh

Keď sa slučka dokončí a už nie sú žiadne údaje, zatvorí úložný súbor.

Kód tohto náčrtu nájdete nižšie. Stačí ho stiahnuť, otvoriť v Arduine a nahrať na tabuľu!

Krok 4: Používanie tohto programu

Použitie tohto programu
Použitie tohto programu

Jednoducho zapojte Arduino do zdroja napájania - počítača, batérie, nástennej bradavice atď. A začnite kresliť. Ak chcete vymazať kresbu a uložené údaje, stlačte červené tlačidlo. Ak chcete načítať kresbu z úložiska a pokračovať v práci, kliknite na zelené tlačidlo. Týmto spôsobom môžete na výkrese mnohokrát opakovať!

Ako rozšírenie skúste kresbu nakresliť na počítači:

  1. Pripojte kartu SD s údajmi k počítaču.
  2. Otvorte storage.txt vo svojom obľúbenom textovom/kódovom editore.
  3. Skopírujte všetky hodnoty v súbore storage.txt.
  4. Nasledujte tento odkaz na program vykresľovania bodov.
  5. Odstráňte dva príklady bodov vľavo.
  6. Prilepte svoje údaje tam, kde boli ukážkové body.

Toto je úhľadný spôsob, ako predviesť svoje kresby - možno dokonca skúste zmeniť farbu bodu na Arduine alebo v bodovom plotri!

Úpravy sú vítané a rád by som videl niekoľko návrhov v komentároch. Ďakujem, že ste sa na to pozreli, a dúfam, že vo svojich vlastných projektoch nájdete úhľadné využitie!

Odporúča: