INHOUDSOPGAWE:
- Voorrade
- Stap 1: Formateer die SD -kaart
- Stap 2: Berei die Arduino voor
- Stap 3: Arduino -skets
- Stap 4: Gebruik hierdie program
Video: Arduino TFT tekenprogram: 4 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
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
- Arduino Uno - oorspronklik of 'n versoenbare kloon
- TFT -raakskerm - ek het 'n Elegoo -skerm gebruik, wat beteken dat ek Elegoo -bestuurders nodig gehad het.
- Micro SD -leserbord - word gebruik om tekendata op 'n SD -kaart te stoor. Onder my skerm was 'n ingeboude leser.
- Stylus - my skerm kom met een. Vingernaels werk ook goed.
- 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.
- Rekenaar met Arduino IDE
- Programmeerkabel - USB A na USB B. My Arduino het een gekry.
- 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
- Neem die Micro SD -kaart en koppel dit aan u rekenaar met u SD -kaartleser
- Maak File Explorer oop en vind die SD -kaart.
- Klik met die rechtermuisknop daarop en kies Format.
- Stel die opsies op grond van die skermkiekie.
- Klik op Start.
- 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
- Druk u skermskerm op die Arduino neer en sorg dat die penne in lyn kom.
- 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,
- Dateer die posisiesveranderlikes op met die ontleed data van storage.txt
- 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
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:
- Koppel die SD -kaart met data op u rekenaar.
- Maak storage.txt oop in u gunsteling teks/kode -redakteur.
- Kopieer al die waardes in storage.txt.
- Volg hierdie skakel na 'n puntplottingsprogram.
- Vee die twee voorbeeldpunte aan die linkerkant uit.
- 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:
Twee maniere om 'n tekenprogram te maak: 10 stappe
Twee maniere om 'n teken -app te maak: ek weet dat hierdie teken -app slegs 'n skerm van 5 x 5 pixels het, sodat u regtig nie veel kan verdien nie, maar dit is steeds lekker
Eenvoudige monitering van luggehalte met TFT LCD-skerm- Ameba Arduino: 3 stappe
Eenvoudige monitering van luggehalte met TFT LCD-skerm-Ameba Arduino: Inleiding Noudat die meeste mense tuis bly om noue kontak met moontlike COVID-19-virusdraer te vermy, word luggehalte 'n belangrike faktor vir mense se welstand, veral in tropiese lande waar lugversorging is 'n moet tydens die dag
Arduino TFT Graphics Shield: 4 stappe (met foto's)
Arduino TFT Graphics Shield: a.articles {font-size: 110.0%; lettertipe gewig: vet; lettertipe: kursief; teksversiering: geen; agtergrondkleur: rooi;} a.artikels: sweef {agtergrondkleur: swart;} Hierdie instruksie verduidelik hoe u 'n 240 x 320 pixel (QVGA) kleurgrafiek kan maak
Arduino Flappy Bird - Arduino 2.4 "TFT Touchscreen SPFD5408 Bird Game Project: 3 stappe
Arduino Flappy Bird | Arduino 2.4 "TFT Touchscreen SPFD5408 Bird Game Project: Flappy Bird was in 'n paar jaar te gewild daar, en baie mense het dit op hul eie manier geskep, ek ook, ek het my weergawe van flappy bird geskep met Arduino en die goedkoop 2.4 " TFT Raakskerm SPFD5408, so laat ons begin
Hoe om 'n intydse klok te maak met Arduino en TFT -skerm - Arduino Mega RTC met 3,5 duim TFT -skerm: 4 stappe
Hoe om 'n intydse horlosie te maak met behulp van Arduino en TFT-skerm | Arduino Mega RTC met 3,5 duim TFT-skerm: Besoek my Youtube-kanaal 2560 en DS3231 RTC-module … .Voordat u begin … kyk na die video van my YouTube-kanaal..Let op:- As u Arduin gebruik