Nybörjare Arduino - med en 1,8 tums TFT-skärm (3 / 3 steg)
Steg 3: Ladda upp koden och kör
Måste du installera två bibliotek för att driva skärmen:
Hämta varje bibliotek och packa upp mapparna. Döp dem till "Adafruit_ST7735" och "Adafruit_GFX" och placera varje mapp inuti mappen Arduino bibliotek. Jag har bifogat en skärmdump av biblioteken i rätt mapp. En gång installerat, är du redo att driva skärmen! Inuti Adafruit ST7735 är bibliotek en fil som heter graphicstest.ino som du kan ladda upp till din Arduino och det kommer att köras genom ett antal funktioner som ritar objekt på skärmen. Denna fil behöver dock vissa förändringar för att anpassa stiften i layouten.
Alternativt, du kan kopiera/klistra in koden nedan i Arduino IDE och ladda upp den. Detta är en modifierad version av Adafruit's graphictest.ino, den primära skillnaden är tilldelningen av stiften. Jag har också spelat med koden lite för att se vilken typ av funktioner finns. Låt mig veta om du upplever några problem med koden. Det fungerade bra för mig.
/***************************************************
Det här är ett bibliotek för Adafruit 1.8" SPI displayen. Detta bibliotek har
ändrats från den ursprungliga versionen att arbeta med en icke-Adafruit
1.8 i visas.
Detta bibliotek fungerar med det Adafruit 1.8" TFT Breakout w/SD-kortet
---> http://www.adafruit.com/products/358
1.8" TFT sköld
---> http://www.adafruit.com/products/358
1,44" TFT utbrytning
---> http://www.adafruit.com/products/358
samt Adafruit raw 1.8" TFT-skärm
---> http://www.adafruit.com/products/358
Kolla in länkarna ovan för våra tutorials och kopplingsscheman
Dessa skärmar använder SPI för att kommunicera, är 4 eller 5 stift skyldiga att
gränssnitt (RST är tillval)
Adafruit investerar tid och resurser att tillhandahålla detta öppen källkod,
Vänligen stödja Adafruit och öppen hårdvara genom att köpa
produkter från Adafruit!
Skrivet av Limor stekt/Ladyada för Adafruit industrier.
MIT license, alla texten ovan måste inkluderas i en omfördelning
****************************************************/
#include < Adafruit_GFX.h > / / Core grafik bibliotek
#include < Adafruit_ST7735.h > / / maskinvaruspecifika bibliotek
#include < SPI.h >
För utbrytning, kan du använda några 2 eller 3 stift
Dessa stift fungerar också för 1.8" TFT shield
#define TFT_CS 9
#define TFT_RST 7 / / du kan också ansluta detta till Arduino Återställ
i vilket fall, som detta #define stift till 0!
#define TFT_DC 8
Alternativ 1 (rekommenderas): måste använda hårdvara SPI stiften
(för UNO som sclk = 13 och sid = 11) och stift 10 måste vara
en utgång. Detta är mycket snabbare - också krävs om du vill
för att använda microSD kort (se bilden ritning exempel)
Adafruit_ST7735 tft = Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_RST);
Alternativ 2: använda några stift men lite långsammare!
#define TFT_SCLK 13 / / ange att dessa ska vara oavsett pins som du!
#define TFT_MOSI 11 / / ange att dessa ska vara oavsett pins som du!
Adafruit_ST7735 tft = Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST);
flyta p = 3.1415926;
void setup(void) {
Serial.BEGIN(9600);
Serial.Print ("Hej! ST7735 TFT-Test").
Använd denna initierare om du använder en 1.8" TFT
tft.initR(INITR_BLACKTAB); initiera en ST7735S chip, svart flik
Använd denna initierare (avkommentera) om du använder en 1,44" TFT
tft.initR(INITR_144GREENTAB); initiera en ST7735S chip, svart flik
Serial.println("Initialized");
uint16_t tid = millis();
tft.fillScreen(ST7735_BLACK);
tid = millis() - tid.
Serial.println (tid, DEC);
Delay(500);
stort block av text
tft.fillScreen(ST7735_BLACK);
testdrawtext (5, 45, "theblckwlf presenterar", ST7735_WHITE);
Delay(2000);
testdrawtext (15, 65, "microscreen", ST7735_WHITE);
testdrawtext (10, 75, "1,8 i TFT-skärm", ST7735_WHITE);
Delay(4000);
tft.fillScreen(ST7735_BLUE);
tft.setTextSize(2);
tft.fillScreen(ST7735_WHITE);
tft.setTextSize(1);
testdrawtext (5, 65, "start", ST7735_BLACK);
testdrawtext (5, 75, "diagnostiska test..", ST7735_BLACK);
Delay(1000);
tft.fillScreen(ST7735_WHITE);
testdrawScreenData();
Delay(3000);
tft.setTextSize(2);
drawTestGrid(10,10);
tft.setCursor (5, 40);
TFT.println ("10 x 10 Grid");
Delay(2000);
tft.setCursor (15, 40);
drawTestGrid(5,5);
TFT.println ("5 x 5 Grid");
Delay(2000);
tft.fillScreen(ST7735_WHITE);
tft.setTextSize(1);
tft.drawPixel (tft.width () / 2, (tft.height) / 2, ST7735_BLACK);
tft.setCursor (15, (tft.height()/2)-15);
TFT.Print ("Center");
TFT.Print(TFT.width()/2);
TFT.Print (",");
TFT.println(TFT.height()/2);
tft.drawCircle (tft.width () / 2, (tft.height) / 2, 5, ST7735_BLACK);
Delay(2000);
TFT funktionen print!
tftPrintTest();
Delay(4000);
en pixel
tft.drawPixel (tft.width () / 2, (tft.height) / 2, ST7735_GREEN);
Delay(500);
linje draw test
testlines(ST7735_YELLOW);
Delay(500);
optimerad linjer
testfastlines (ST7735_RED, ST7735_BLUE);
Delay(500);
testdrawrects(ST7735_GREEN);
Delay(500);
testfillrects (ST7735_YELLOW, ST7735_MAGENTA);
Delay(500);
tft.fillScreen(ST7735_BLACK);
testfillcircles (5, ST7735_BLUE).
testdrawcircles (5, ST7735_WHITE).
Delay(500);
för (int jag = 0; jag < 5; i ++) {
testroundrects();
}
Delay(500);
testtriangles();
Delay(500);
mediabuttons();
Delay(500);
Serial.println("Done");
Delay(1000);
}
void loop() {
tft.invertDisplay(true);
Delay(500);
tft.invertDisplay(false);
Delay(500);
}
void testlines (uint16_t färg) {
tft.fillScreen(ST7735_BLACK);
för (int16_t x = 0; x < tft.width(); x+= 6) {
tft.drawLine (0, 0, x, tft.height ()-1, färg);
}
för (int16_t y = 0; y < tft.height(); y + = 6) {
tft.drawLine (0, 0, tft.width ()-1, y, färg);
}
tft.fillScreen(ST7735_BLACK);
för (int16_t x = 0; x < tft.width(); x+= 6) {
tft.drawLine (tft.width ()-1, 0, x, tft.height ()-1, färg);
}
för (int16_t y = 0; y < tft.height(); y + = 6) {
tft.drawLine (tft.width ()-1, 0, 0, y, färg);
}
tft.fillScreen(ST7735_BLACK);
för (int16_t x = 0; x < tft.width(); x+= 6) {
tft.drawLine (0, tft.height ()-1, x, 0, färg);
}
för (int16_t y = 0; y < tft.height(); y + = 6) {
tft.drawLine (0, tft.height ()-1, tft.width ()-1, y, färg);
}
tft.fillScreen(ST7735_BLACK);
för (int16_t x = 0; x < tft.width(); x+= 6) {
tft.drawLine (tft.width ()-1, tft.height ()-1, x, 0, färg);
}
för (int16_t y = 0; y < tft.height(); y + = 6) {
tft.drawLine (tft.width ()-1, tft.height ()-1, 0, y, färg);
}
}
void drawTestGrid (int hor, int vert) {
tft.fillScreen(ST7735_WHITE);
Rita lodräta linjer
för (int16_t x = 0; x < tft.width(); x+= vert) {
tft.drawFastVLine (x, 0, tft.height(), ST7735_RED);
}
för (int16_t y = 0; y < tft.height(); y += hor) {
tft.drawFastHLine (0, y, tft.width(), ST7735_BLACK);
}
}
void testdrawtext (int wid, int hei, char * text, uint16_t färg) {
tft.setCursor (wid, hei);
tft.setTextColor(color);
tft.setTextWrap(true);
TFT.Print(text);
}
void testfastlines (uint16_t color1, uint16_t color2) {
tft.fillScreen(ST7735_BLACK);
för (int16_t y = 0; y < tft.height(); y += 5) {
tft.drawFastHLine (0, y, tft.width(), color1);
}
för (int16_t x = 0; x < tft.width(); x+= 5) {
tft.drawFastVLine (x, 0, tft.height(), color2);
}
}
void testdrawrects (uint16_t färg) {
tft.fillScreen(ST7735_BLACK);
för (int16_t x = 0; x < tft.width(); x+= 6) {
tft.drawRect (tft.width () / 2 - x / 2, (tft.height) / 2 - x / 2, x, x, färg);
}
}
void testfillrects (uint16_t color1, uint16_t color2) {
tft.fillScreen(ST7735_BLACK);
för (int16_t x=tft.width ()-1 x > 6; x-= 6) {
tft.fillRect (tft.width () / 2 - x / 2, (tft.height) / 2 - x / 2, x, x, color1);
tft.drawRect (tft.width () / 2 - x / 2, (tft.height) / 2 - x / 2, x, x, color2);
}
}
void testfillcircles (uint8_t radie, uint16_t färg) {
för (int16_t x = radie; x < tft.width(); x+= radie * 2) {
för (int16_t y = radie; y < tft.height(); y += radie * 2) {
tft.fillCircle (x, y, radie, färg);
}
}
}
void testdrawcircles (uint8_t radie, uint16_t färg) {
för (int16_t x = 0; x < tft.width () + radie, x+= radie * 2) {
för (int16_t y = 0; y < tft.height () + radie; y += radie * 2) {
tft.drawCircle (x, y, radie, färg);
}
}
}
void testtriangles() {
tft.fillScreen(ST7735_BLACK);
int färg = 0xF800;
int t;
int w = tft.width () / 2;
int x = tft.height ()-1;
int y = 0;
int z = tft.width();
för (t = 0; t < = 15; t += 1) {
tft.drawTriangle (w, y, y, x, z, x, färg);
x-= 4.
y + = 4.
z-= 4.
färg + = 100.
}
}
void testroundrects() {
tft.fillScreen(ST7735_BLACK);
int färg = 100;
int i;
int t;
för (t = 0; t < = 4; t += 1) {
int x = 0;
int y = 0;
int w = tft.width ()-2;
int h = tft.height ()-2;
för (jag = 0; jag < = 16; jag + = 1) {
tft.drawRoundRect (x, y, w, h, 5, färg);
x+= 2.
y + = 3.
w-= 4.
h-= 6.
färg + = 1100;
}
färg + = 100.
}
}
void testdrawScreenData() {
tft.setCursor(0,20);
TFT.println ("skärmen Data:");
TFT.Print ("skärmens bredd:");
TFT.println(TFT.width());
TFT.Print ("skärmhöjd:");
TFT.println(TFT.height());
}
void testdrawCountdown() {
tft.setTextWrap(true);
tft.fillScreen(ST7735_RED);
tft.setTextColor(ST7735_WHITE);
tft.setTextSize(6);
tft.setCursor (30, 50);
för (int jag = 10; Jag > 0; i--) {
TFT.println(i);
Delay(1000);
tft.setCursor (50, 50);
tft.fillScreen(ST7735_RED);
}
}
void circlePass() {
tft.fillScreen(ST7735_BLACK);
testfillcircles (5, ST7735_GREEN).
Delay(1000);
testfillcircles (4, ST7735_RED).
Delay(1000);
testfillcircles (2, ST7735_BLACK).
testfillcircles (3, ST7735_YELLOW).
Delay(500);
}
void tftPrintTest() {
tft.setTextWrap(false);
tft.fillScreen(ST7735_BLACK);
tft.setCursor (0, 30);
tft.setTextColor(ST7735_RED);
tft.setTextSize(1);
TFT.println ("Hello World!");
tft.setTextColor(ST7735_YELLOW);
tft.setTextSize(2);
TFT.println ("Hello World!");
tft.setTextColor(ST7735_GREEN);
tft.setTextSize(3);
TFT.println ("Hello World!");
tft.setTextColor(ST7735_BLUE);
tft.setTextSize(4);
TFT.Print(1234.567);
Delay(1500);
tft.setCursor (0, 0);
tft.fillScreen(ST7735_BLACK);
tft.setTextColor(ST7735_WHITE);
tft.setTextSize(0);
TFT.println ("Hello World!");
tft.setTextSize(1);
tft.setTextColor(ST7735_GREEN);
TFT.Print (p, 6);
TFT.println ("vill ha pi?");
TFT.println("");
TFT.Print (8675309, HEX); skriva 8,675,309 ut i HEX!
TFT.println ("Print HEX!");
TFT.println("");
tft.setTextColor(ST7735_WHITE);
TFT.println ("skiss har varit");
TFT.println ("kör för:");
tft.setTextColor(ST7735_MAGENTA);
TFT.Print(Millis() / 1000);
tft.setTextColor(ST7735_WHITE);
TFT.Print ("sekunder.");
}
void mediabuttons() {
spela
tft.fillScreen(ST7735_BLACK);
tft.fillRoundRect (25, 10, 78, 60, 8, ST7735_WHITE);
tft.fillTriangle (42, 20, 42, 60, 90, 40, ST7735_RED);
Delay(500);
pausa
tft.fillRoundRect (25, 90, 78, 60, 8, ST7735_WHITE);
tft.fillRoundRect (39 98, 20, 45, 5, ST7735_GREEN);
tft.fillRoundRect (69 98, 20, 45, 5, ST7735_GREEN);
Delay(500);
spela färg
tft.fillTriangle (42, 20, 42, 60, 90, 40, ST7735_BLUE);
Delay(50);
Pausa färg
tft.fillRoundRect (39 98, 20, 45, 5, ST7735_RED);
tft.fillRoundRect (69 98, 20, 45, 5, ST7735_RED);
spela färg
tft.fillTriangle (42, 20, 42, 60, 90, 40, ST7735_GREEN);
}
Det är allt det finns till den. Min video för detta steg visar hur förväntade displayen ska se ut om du kör koden ovan.
Njut av din nya display!