Stap 3: Upload Code en Run
U moet twee bibliotheken installeren om te kunnen opereren van het display:
Elke bibliotheek Download en unzip de mappen. Hen anders noemen aan "Adafruit_ST7735" en "Adafruit_GFX" en plaats van elke map binnen uw omslag van de bibliotheken van de Arduino. Ik heb een screenshot van de bibliotheken in de juiste map toegevoegd. Zodra geïnstalleerd, bent u klaar om te werken van het scherm! Binnen de Adafruit ST7735 is bibliotheek een bestand met de naam graphicstest.ino die u kunt uploaden naar je Arduino en zal worden uitgevoerd door middel van een aantal functies die het tekenen van objecten op het scherm. Dit bestand zal echter moeten sommige wijzigen om aan te passen de pinnen aan uw lay-out.
Uitwijkmogelijkheid, u kunt kopiëren/plakken de code hieronder in de Arduino IDE en uploaden. Dit is een gewijzigde versie van Adafruit van graphictest.ino, het primaire verschil is de toewijzing van de pinnen. Ik speelde ook met de code een beetje om te zien wat voor soort functies er zijn. Laat me weten als u ervaring eventuele problemen met code. Het werkte boete voor me.
/*************************************************** This is a library for the Adafruit 1.8" SPI display. This library has been modified from the original version to work with a non-Adafruit 1.8in display. This library works with the Adafruit 1.8" TFT Breakout w/SD card ----> http://www.adafruit.com/products/358 The 1.8" TFT shield ----> http://www.adafruit.com/products/358 The 1.44" TFT breakout ----> http://www.adafruit.com/products/358 as well as Adafruit raw 1.8" TFT display ----> http://www.adafruit.com/products/358 Check out the links above for our tutorials and wiring diagrams These displays use SPI to communicate, 4 or 5 pins are required to interface (RST is optional) Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! Written by Limor Fried/Ladyada for Adafruit Industries. MIT license, all text above must be included in any redistribution ****************************************************/ #include <Adafruit_GFX.h> // Core graphics library #include <Adafruit_ST7735.h> // Hardware-specific library #include <SPI.h> // For the breakout, you can use any 2 or 3 pins // These pins will also work for the 1.8" TFT shield #define TFT_CS 9 #define TFT_RST 7 // you can also connect this to the Arduino reset // in which case, set this #define pin to 0! #define TFT_DC 8 // Option 1 (recommended): must use the hardware SPI pins // (for UNO thats sclk = 13 and sid = 11) and pin 10 must be // an output. This is much faster - also required if you want // to use the microSD card (see the image drawing example) Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // Option 2: use any pins but a little slower! #define TFT_SCLK 13 // set these to be whatever pins you like! #define TFT_MOSI 11 // set these to be whatever pins you like! //Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_MOSI, TFT_SCLK, TFT_RST); float p = 3.1415926; void setup(void) { Serial.begin(9600); Serial.print("Hello! ST7735 TFT Test"); // Use this initializer if you're using a 1.8" TFT tft.initR(INITR_BLACKTAB); // initialize a ST7735S chip, black tab // Use this initializer (uncomment) if you're using a 1.44" TFT //tft.initR(INITR_144GREENTAB); // initialize a ST7735S chip, black tab Serial.println("Initialized"); uint16_t time = millis(); tft.fillScreen(ST7735_BLACK); time = millis() - time; Serial.println(time, DEC); delay(500); // large block of text tft.fillScreen(ST7735_BLACK); testdrawtext(5, 45, "theblckwlf presents", ST7735_WHITE); delay(2000); testdrawtext(15, 65, "the microscreen", ST7735_WHITE); testdrawtext(10, 75, "1.8in TFT display", 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, "diagnostic test...", ST7735_BLACK); delay(1000); tft.fillScreen(ST7735_WHITE); testdrawScreenData(); delay(3000); tft.setTextSize(2); drawTestGrid(10,10); tft.setCursor(5, 40); tft.println("10x10 Grid"); delay(2000); tft.setCursor(15, 40); drawTestGrid(5,5); tft.println("5x5 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 print function! tftPrintTest(); delay(4000); // a single pixel tft.drawPixel(tft.width()/2, tft.height()/2, ST7735_GREEN); delay(500); // line draw test testlines(ST7735_YELLOW); delay(500); // optimized lines 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); for (int i=0; i<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 color) { tft.fillScreen(ST7735_BLACK); for (int16_t x=0; x < tft.width(); x+=6) { tft.drawLine(0, 0, x, tft.height()-1, color); } for (int16_t y=0; y < tft.height(); y+=6) { tft.drawLine(0, 0, tft.width()-1, y, color); } tft.fillScreen(ST7735_BLACK); for (int16_t x=0; x < tft.width(); x+=6) { tft.drawLine(tft.width()-1, 0, x, tft.height()-1, color); } for (int16_t y=0; y < tft.height(); y+=6) { tft.drawLine(tft.width()-1, 0, 0, y, color); } tft.fillScreen(ST7735_BLACK); for (int16_t x=0; x < tft.width(); x+=6) { tft.drawLine(0, tft.height()-1, x, 0, color); } for (int16_t y=0; y < tft.height(); y+=6) { tft.drawLine(0, tft.height()-1, tft.width()-1, y, color); } tft.fillScreen(ST7735_BLACK); for (int16_t x=0; x < tft.width(); x+=6) { tft.drawLine(tft.width()-1, tft.height()-1, x, 0, color); } for (int16_t y=0; y < tft.height(); y+=6) { tft.drawLine(tft.width()-1, tft.height()-1, 0, y, color); } } void drawTestGrid(int hor, int vert){ tft.fillScreen(ST7735_WHITE); //Draw vertical lines for (int16_t x=0; x < tft.width(); x+=vert){ tft.drawFastVLine(x, 0, tft.height(), ST7735_RED); } for (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 color) { 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); for (int16_t y=0; y < tft.height(); y+=5) { tft.drawFastHLine(0, y, tft.width(), color1); } for (int16_t x=0; x < tft.width(); x+=5) { tft.drawFastVLine(x, 0, tft.height(), color2); } } void testdrawrects(uint16_t color) { tft.fillScreen(ST7735_BLACK); for (int16_t x=0; x < tft.width(); x+=6) { tft.drawRect(tft.width()/2 -x/2, tft.height()/2 -x/2 , x, x, color); } } void testfillrects(uint16_t color1, uint16_t color2) { tft.fillScreen(ST7735_BLACK); for (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 radius, uint16_t color) { for (int16_t x=radius; x < tft.width(); x+=radius*2) { for (int16_t y=radius; y < tft.height(); y+=radius*2) { tft.fillCircle(x, y, radius, color); } } } void testdrawcircles(uint8_t radius, uint16_t color) { for (int16_t x=0; x < tft.width()+radius; x+=radius*2) { for (int16_t y=0; y < tft.height()+radius; y+=radius*2) { tft.drawCircle(x, y, radius, color); } } } void testtriangles() { tft.fillScreen(ST7735_BLACK); int color = 0xF800; int t; int w = tft.width()/2; int x = tft.height()-1; int y = 0; int z = tft.width(); for(t = 0 ; t <= 15; t+=1) { tft.drawTriangle(w, y, y, x, z, x, color); x-=4; y+=4; z-=4; color+=100; } } void testroundrects() { tft.fillScreen(ST7735_BLACK); int color = 100; int i; int t; for(t = 0 ; t <= 4; t+=1) { int x = 0; int y = 0; int w = tft.width()-2; int h = tft.height()-2; for(i = 0 ; i <= 16; i+=1) { tft.drawRoundRect(x, y, w, h, 5, color); x+=2; y+=3; w-=4; h-=6; color+=1100; } color+=100; } } void testdrawScreenData(){ tft.setCursor(0,20); tft.println("Screen Data:"); tft.print("Screen Width: "); tft.println(tft.width()); tft.print("Screen Height: "); tft.println(tft.height()); } void testdrawCountdown(){ tft.setTextWrap(true); tft.fillScreen(ST7735_RED); tft.setTextColor(ST7735_WHITE); tft.setTextSize(6); tft.setCursor(30, 50); for (int i=10; i>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(" Want pi?"); tft.println(" "); tft.print(8675309, HEX); // print 8,675,309 out in HEX! tft.println(" Print HEX!"); tft.println(" "); tft.setTextColor(ST7735_WHITE); tft.println("Sketch has been"); tft.println("running for: "); tft.setTextColor(ST7735_MAGENTA); tft.print(millis() / 1000); tft.setTextColor(ST7735_WHITE); tft.print(" seconds."); } void mediabuttons() { // play 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); // pause 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); // play color tft.fillTriangle(42, 20, 42, 60, 90, 40, ST7735_BLUE); delay(50); // pause color tft.fillRoundRect(39, 98, 20, 45, 5, ST7735_RED); tft.fillRoundRect(69, 98, 20, 45, 5, ST7735_RED); // play color tft.fillTriangle(42, 20, 42, 60, 90, 40, ST7735_GREEN); }
Dat is allen daar is aan het. Mijn video voor deze stap laat zien wat de verwachte weergave zou moeten uitzien als u de bovenstaande code uitvoeren.
Geniet van uw nieuwe beeldscherm!