TouchGarden (Wireless + lokala HMI) (4 / 6 steg)
Steg 4: Konfigurera TFT / bibliotek / Homescreen
TFT sköld som jag hittade har LGDP4535 chip i den. Du kan behöva kontrollera med TFT tillverkaren om vilka bibliotek att använda. Det var jobbigt att försöka hitta någon för detta.
OM hjälp med ARDUINO UNO du måste titta i LGDP4535.cpp AVKOMMENTERA linjen 15 och kommenterar ut linje 14.
SÅ DIN HJÄLP:
#include "uno_24_shield.h"
Istället för
#include "mega_24_shield.h"
MEN OM DU ANVÄNDER EN MEGA LÄMNA ALLT SOM ÄR!
VARNING! DU KAN FÅ PEKSKÄRM OCH DRAGINO ARBETAR MED UNO, MEN DET FINNS INTE TILLRÄCKLIGT PINS!
OK... så jag ska vara ärlig... Jag gjorde lite mix matchning med biblioteken här. Kunde jag ner några konsolidering med biblioteken, men eftersom det fungerade... Jag gjorde bara små ändringar till biblioteken och "HomeScreen" biblioteket är min egen skapelse. Typ av råolja, men det fungerar i farten. Det är den HMI homescreen, eftersom det är enklare att bara ringa en header-fil jag har precis skapat en med konfigurationsinställningarna.
Redigera HomeScreen:
Bara ändra sidhuvudfilen... använda anteckningsblock på Fönstren... eller Gedit på Linux.
Du måste vara lite fimiliar med formateringen av en .cpp / .h fil. Göra en litte tittar runt, riktigt lätt att räkna ut.
Obs: / / det är felsökning ändå att göra med detta HMI skärmen och knapparna
Okej tillbaka till TFT pekskärm:
1. installera dessa bibliotek.
2. test av funktionen---> användning exempel <---
a. prova några exempel ut och kontrollera att stiften på din TFT shield är samma som i exempel.
b. Verified att arbeta med LGDP4535 2,8" TFT
3. följa denna tutorial
här är några bra kod för kalibrering:
[code]
#include
#include
#include
#define YP A3
#define XM A2
#define YM 9
#define XP 8
int TS_MINX = 0;
int TS_MINY = 0;
int TS_MAXX = 1023;
int TS_MAXY = 1023;
#define MINPRESSURE 10
#define MAXPRESSURE 1000
TypeDef struct
{
int x;
int y;
} XY;
TouchScreen ts (XP, YP, XM, YM, 300);
#define svart 0x0000
#define vit 0xFFFF
LGDP4535 tft;
TSPoint getNextTouch()
{
TSPoint punkten.
göra
{
digitalWrite 13, hög.
Peka = ts.getPoint();
digitalWrite 13, låg.
pinMode (XM, OUTPUT);
pinMode (YP, OUTPUT);
}
medan (! () Point.z > MINPRESSURE & & point.z < MAXPRESSURE));
returnera punkten.
}
TSPoint getNextRawTouch()
{
TSPoint punkten.
göra
{
digitalWrite 13, hög.
Peka = ts.getRawPoint();
digitalWrite 13, låg.
pinMode (XM, OUTPUT);
pinMode (YP, OUTPUT);
}
medan (! () Point.z > MINPRESSURE & & point.z < MAXPRESSURE));
returnera punkten.
}
void setup()
{
Serial.BEGIN(9600);
TFT.Reset();
TFT.BEGIN();
TS.min_x = TS_MINX;
TS.min_y = TS_MINY;
TS.max_x = TS_MAXX;
TS.max_y = TS_MAXY;
TS.width = tft.width();
TS.height = tft.height();
TS.orientation = 0;
kalibrera:
tft.fillScreen(BLACK);
tft.setTextColor(WHITE);
tft.setCursor (0, 0);
TFT.println ("Skärmen Calibrationnn" "Knacka för att fortsätta...");
TSPoint punkten.
Peka = getNextRawTouch();
tft.fillScreen(BLACK);
tft.setCursor(0,0);
TFT.Print ("bild i från början.");
Peka = getNextRawTouch();
tft.fillScreen(WHITE);
TS_MINY = point.y;
Delay(100);
tft.fillScreen(BLACK);
tft.setCursor(0,0);
TFT.Print ("bild i från rätten.");
Peka = getNextRawTouch();
tft.fillScreen(WHITE);
TS_MAXX = point.x;
Delay(100);
tft.fillScreen(BLACK);
tft.setCursor(0,0);
TFT.Print ("bild i från botten.");
Peka = getNextRawTouch();
tft.fillScreen(WHITE);
TS_MAXY = point.y;
Delay(100);
tft.fillScreen(BLACK);
tft.setCursor(0,0);
TFT.Print ("bild i från vänster.");
Peka = getNextRawTouch();
tft.fillScreen(WHITE);
TS_MINX = point.x;
Delay(100);
tft.fillScreen(BLACK);
TS.min_x = TS_MINX;
TS.min_y = TS_MINY;
TS.max_x = TS_MAXX;
TS.max_y = TS_MAXY;
tft.setCursor(0,0);
TFT.println ("din ADC kalibreringar värden är:");
TFT.Print ("TS_MINX =");
TFT.println(TS_MINX);
TFT.Print ("TS_MINY =");
TFT.println(TS_MINY);
TFT.Print ("TS_MAXX =");
TFT.println(TS_MAXX);
TFT.Print ("TS_MAXY =");
TFT.println(TS_MAXY);
TFT.println();
TFT.Print ("orientering på pekskärmen bör vara noll med dessa values.n" "Touch någonstans för att testa skärmen. Koordinaterna kommer att vara i det övre vänstra hörnet.");
}
void loop()
{
tft.setCursor(0,0);
tft.setTextColor(WHITE);
TSPoint p = getNextTouch();
tft.fillScreen(BLACK);
TFT.Print('(');
TFT.Print(p.x);
TFT.Print(',');
TFT.Print(p.y);
TFT.Print(')');
Delay(100);
}
Denna kod är också från ceez blogg