INHOUDSOPGAWE:

Arduino TFT tekenprogram: 4 stappe
Arduino TFT tekenprogram: 4 stappe

Video: Arduino TFT tekenprogram: 4 stappe

Video: Arduino TFT tekenprogram: 4 stappe
Video: Драм-секвенсор Arduino: 8 дорожек, 16 шагов на такт, 8 тактов на паттерн 2024, Julie
Anonim
Arduino TFT tekenprogram
Arduino TFT tekenprogram
Arduino TFT tekenprogram
Arduino TFT tekenprogram
Arduino TFT tekenprogram
Arduino TFT tekenprogram

Hierdie instruksies gee 'n uiteensetting van die kode vir die maak van 'n tekenprogram vir 'n Arduino TFT -skerm. Hierdie program is egter uniek, want dit maak dit moontlik om 'n tekening op die SD -kaart op te slaan en later te laai om meer wysigings aan te bring!

Voorrade

  1. Arduino Uno - oorspronklik of 'n versoenbare kloon
  2. TFT -raakskerm - ek het 'n Elegoo -skerm gebruik, wat beteken dat ek Elegoo -bestuurders nodig gehad het.
  3. Micro SD -leserbord - word gebruik om tekendata op 'n SD -kaart te stoor. Onder my skerm was 'n ingeboude leser.
  4. Stylus - my skerm kom met een. Vingernaels werk ook goed.
  5. Micro SD -kaart - nie meer as 32 GB nie, as gevolg van beperkings in die opmaak van exFAT (die Arduino kan FAT32 -geformateerde kaarte lees, maar NIE exFAT nie. Die meeste groter kaarte is geformateer met exFAT.). Dit is die soort wat u in 'n telefoon met uitbreidbare berging kan plaas.
  6. Rekenaar met Arduino IDE
  7. Programmeerkabel - USB A na USB B. My Arduino het een gekry.
  8. SD -kaartadapter - word gebruik om die Micro SD -kaart om te skakel in 'n normale SD om in 'n SD -gleuf te sit OF een wat 'n SD -kaart met 'n USB -gleuf verbind.

Stap 1: Formateer die SD -kaart

Formateer die SD -kaart
Formateer die SD -kaart
Formateer die SD -kaart
Formateer die SD -kaart
  1. Neem die Micro SD -kaart en koppel dit aan u rekenaar met u SD -kaartleser
  2. Maak File Explorer oop en vind die SD -kaart.
  3. Klik met die rechtermuisknop daarop en kies Format.
  4. Stel die opsies op grond van die skermkiekie.
  5. Klik op Start.
  6. Gooi die kaart uit as die proses voltooi is.

Probeer SD Formatter van die SD -vereniging gebruik as u nie Windows gebruik nie.

Stap 2: Berei die Arduino voor

Berei die Arduino voor
Berei die Arduino voor
Berei die Arduino voor
Berei die Arduino voor
  1. Druk u skermskerm op die Arduino neer en sorg dat die penne in lyn kom.
  2. Plaas die SD -kaart in die leser onder die skerm.

Stap 3: Arduino -skets

Alhoewel die onderdele -lys redelik eenvoudig was, is daar baie kode. Ek gaan hier stap-vir-stap deur.

#insluit

#include #include #include #include

Elegoo_GFX, _TFTLCD en TouchScreen is almal hardeware-spesifiek. As u 'n ander skerm gebruik, gebruik die biblioteke wat deur die vervaardiger verskaf word.

SPI en SD word gebruik om met die SD -kaart te kommunikeer. SPI is die protokol wat deur die SD -kaartbeheerder gebruik word.

#as gedefinieer (_ SAM3X8E _) #undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif

Dit is ook hardeware-spesifiek.

#definieer YP A3 // moet 'n analoog pen wees #definieer XM A2 // moet 'n analoog pen wees #definieer YM 9 #definieer XP 8

// Raak vir nuwe ILI9341 TP

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

#definieer CSPIN 10

#definieer LCD_CS A3

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

Elkeen van hierdie #definieer stellings laat die IDE die naam vervang met die waarde. Hier stel hulle die LCD- en SD I/O -penne in.

// Ken name toe aan 'n paar 16-bis kleurwaardes: #define SWART 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0

Dit is 'n paar van die kleure wat in die kode gebruik word. #om dit te definieer, maak die lees van die kode makliker.

#definieer PENRADIUS 3

Dit definieer die grootte van die tekenpen.

#definieer MINPRESSURE 10#definieer MAXPRESSURE 1000

// Vir 'n beter presisie van die druk moet ons die weerstand ken

// tussen X+ en X- Gebruik enige multimeter om dit te lees // Vir die een wat ek gebruik, is sy 300 ohm oor die X-plaat TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);

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

Hierdie stellings definieer die druk wat nodig is om 'n aanraking te registreer, die aanraakfunksie te begin en die skerm te begin.

Lêerberging; int storageSize; int stoX = 1; int stoY = 1;

Dit is veranderlikes vir die stoorgedeelte van die program.

leemte opstel (leeg) {Serial.begin (9600); Serial.println ("Verfprogram");

tft.reset ();

uint16_t identifiseerder = tft.readID ();

as (identifiseerder == 0x0101) {identifiseerder = 0x9341; Serial.println (F ("0x9341 LCD -bestuurder gevind")); }

// Begin die skerm

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

pinMode (13, UITGANG);

// Begin SD -kaart

as (! SD.begin (CSPIN)) {Serial.println ("SD -inisialisering misluk"); terugkeer; } Serial.println ("SD geïnisialiseer");

// Teken die agtergrond

drawBackground (); }

Die opstelfunksie begin Serial as dit beskikbaar is, stel die skerm terug, herken die TFT -bestuurder, begin die skerm, begin die kaart en skakel 'n funksie om die agtergrond te teken.

Ek gaan na die grootste deel van die lusfunksie. Al die ander dinge word net gebruik om die aanraakskerm te bestuur.

// Ontdek skermdruk en stoor dit onder veranderlikes as (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Skaal 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));

// Teken

if (p.y> 21) {// Stoor data in SD -kaartberging = SD.open ("storage.txt", FILE_WRITE); stoor.afdruk (p.x); storage.print (","); storage.println (p.y); storage.close ();

// Kolletjie by die raakposisie

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

// Vee knoppie uit

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

// Laai knoppie -aksie

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

As 'n pers opgespoor word, stel veranderlikes in vir die ligging van die pers.

As die pers binne die tekengebied is, stoor u die punt op die SD -kaart in storage.txt en teken 'n sirkel by die punt wat ingedruk word, met 'n gedefinieerde grootte en kleur.

As die pers op die plek van die uitvee -knoppie is, voer 'n funksie uit wat die gestoorde tekening uitvee. As u 'n ander grootte skerm gebruik, probeer om met die knoppie se liggingwaardes te speel.

As die pers dan op die laai -knoppie is, voer 'n funksie uit wat die gestoorde tekening laai. As u 'n ander grootte skerm gebruik, probeer om met die knoppie se liggingwaardes te speel.

Nou sal ek die funksies verduidelik.

Die eerste funksie word in die opstelling genoem om die agtergrond en knoppies te teken.

void drawBackground () {// Stel die agtergrond tft.fillScreen (SWART);

// Verf teks

tft.setTextColor (WIT); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Verf");

// Laai knoppie

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

// Maak die knoppie skoon

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

Dit vul die skerm swart, skryf die woord Paint en teken gekleurde vierkante vir die knoppies. As u 'n ander grootte skerm gebruik, probeer om met die knoppie se liggingwaardes te speel.

void deleteStorage () {// Verwyder die lêer SD.remove ("storage.txt");

// Stel die agtergrond

tft.fillScreen (SWART);

// Verwyder suksesteks

tft.setTextColor (WIT); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt verwyder");

// Laat die gebruiker dit lees

vertraging (2000);

// Gaan voort met teken

drawBackground (); }

Die deleteStorage -funksie verwyder storage.txt, vul die skerm swart en gee 'n suksesboodskap vir verwydering. Dit noem dan die drawBackground -funksie sodat u iets anders kan begin skilder.

void loadStorage () {// Vermy herhalings deur stadige vingers vertraging (250);

// Kyk vir stoorlêer

as (! SD.exists ("storage.txt")) {Serial.println ("Geen storage.txt -lêer"); terugkeer; }

// Maak lêer oop in leesalleen-modus

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

// Terwyl daar data is, while (stoY> 0) {// Update position variables stoX = storage.parseInt (); stoY = storage.parseInt ();

// Trek uit die stoor

tft.fillCircle (stoX, stoY, PENRADIUS, WIT); } // Sluit die lêer storage.close (); }

Laastens kyk die loadStorage-funksie na 'n stoorlêer, maak dit oop in die leesalleen-modus en herhaal dan hierdie lus:

Solank daar meer data is,

  1. Dateer die posisiesveranderlikes op met die ontleed data van storage.txt
  2. Trek 'n sirkel by die gelaaide punt

As die lus voltooi is en daar nie meer data is nie, sluit dit die stoorlêer.

Die kode vir hierdie skets kan hieronder gevind word. Laai dit net af, maak dit oop in Arduino en laai dit op u bord!

Stap 4: Gebruik hierdie program

Gebruik hierdie program
Gebruik hierdie program

Koppel net u Arduino aan op 'n kragbron - 'n rekenaar, 'n battery, 'n muurvret, ens., En begin teken. Druk die rooi knoppie om u tekening en sy gestoorde data uit te vee. Klik op die groen knoppie om 'n tekening uit die stoor te laai en verder daaraan te werk. Op hierdie manier kan u baie keer op 'n tekening herhaal!

As uitbreiding, probeer om die tekening op u rekenaar te teken:

  1. Koppel die SD -kaart met data op u rekenaar.
  2. Maak storage.txt oop in u gunsteling teks/kode -redakteur.
  3. Kopieer al die waardes in storage.txt.
  4. Volg hierdie skakel na 'n puntplottingsprogram.
  5. Vee die twee voorbeeldpunte aan die linkerkant uit.
  6. Plak u data waar die voorbeeldpunte was.

Dit is 'n netjiese manier om u tekeninge te wys - probeer selfs om die puntkleur op die Arduino of in die puntplotter te verander!

Wysigings word verwelkom, en ek sien graag voorstelle in die kommentaar. Dankie dat u hierna gekyk het, en ek hoop dat u dit in u eie projekte netjies kan gebruik!

Aanbeveel: