Daca dorim sa afisam mai multe informatii si cu o calitatea mult mai buna (un display color) putem folosi displayul LCD 160x128 pixeli cu driver ST7735 impreuna cu placa de dezvoltare Lolin32 lite.
Displayul folosit este cel din imaginea de mai jos:
imagine
Pentru a folosi acest display va trebui sa folosim 2 librarii externe:
1) Adafruit-ST7735 si
Instalarea se face simplu accesand meniul Schita > Incarcare biblioteca > Adauga biblioteca.zip.
Alimentarea acestui display se face cu +3.3V iar conexiunile display-placa de dezvoltare se vor face in felul urmator:
| Lolin32 Lite | ST7735 |
| +3.3V | +3.3V |
| GND | GND |
| GPIO5 | CS |
| GPIO27 | RST |
| GPIO26 | RS |
| GPIO23 | SDA |
| GPIO18 | CLK |
Sketchul folosit pentru testarea acestui display este cel de mai jos:
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>
#define TFT_CS 5
#define TFT_DC 26
#define TFT_RST 27
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);
#define DELAY 3000
void setup() {
tft.initR(INITR_BLACKTAB); //initiem displayul
tft.fillScreen(ST77XX_BLACK); //desenam culoarea de fundal
tft.setCursor(0, 30); //setam pozitia cursorului
tft.setTextColor(ST77XX_RED); //setam culoarea textului
tft.setTextSize(2); //setam marimea fontului
tft.setTextWrap(true); //setam continuarea textului pe urmatoarea linie
tft.println("Vizitati site-ul www.electronicstore.ro!"); //afisam textul dorit
delay(DELAY);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 30);
tft.setTextColor(ST77XX_BLUE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Lolin32 Lite cu un display LCD ST7735");
delay(DELAY);
}
void loop() {
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_BLUE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Desenare un singur pixel");
tft.drawPixel(70, 70, ST77XX_WHITE); //afisam un pixel la coordonatele dorite si in culoarea dorita
delay(DELAY);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_BLUE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Desenare o linie");
tft.drawLine(10, 70, 100, 70, ST77XX_YELLOW); //afisam o linie la coordonatele dorite si in culoarea dorita
delay(DELAY);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Desenare a unui patrat");
tft.drawRect(5, 60, 110, 40, ST77XX_RED);
delay(DELAY);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Desenare a unui patrat cu fundal colorat");
tft.fillRect(5, 80, 110, 40, ST77XX_GREEN);
delay(DELAY);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Desenare a unui cerc");
tft.drawCircle(45, 90, 15, ST77XX_CYAN);
delay(DELAY);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Desenare a unui cerc cu fundal colorat");
tft.fillCircle(55, 115, 25, ST77XX_MAGENTA);
delay(DELAY);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Desenare a unui dreptunghi cu margini rotunjite");
tft.drawRoundRect(25, 95, 75, 35, 6, ST77XX_CYAN);
delay(DELAY);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Desenare a unui dreptunghi cu margini rotunjite si fundal");
tft.fillRoundRect(15, 115, 85, 25, 6, ST77XX_YELLOW);
delay(DELAY);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Desenare a unui triunghi");
tft.drawTriangle(15, 130, 45, 70, 95, 110, ST77XX_CYAN);
delay(DELAY);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Desenare a unui triunghi cu fundal");
tft.fillTriangle(10, 140, 35, 80, 100, 110, ST77XX_MAGENTA);
delay(DELAY);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Folosire caractere speciale");
delay(DELAY);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 40);
tft.cp437(true);
tft.print("Temperatura: 120");
tft.write(0xF8);
delay(DELAY);
tft.fillScreen(ST77XX_WHITE);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_BLACK);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Folosirea unui text negru pe fundal alb");
delay(DELAY);
tft.fillScreen(ST77XX_YELLOW);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_BLUE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Folosirea unui text albastru pe fundal galben");
delay(DELAY);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Schimbarea orientarii display-ului cu 90 de grade");
delay(DELAY);
tft.setRotation(1);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Test display");
delay(DELAY);
tft.setRotation(0);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Schimbarea orientarii display-ului cu 180 de grade");
delay(DELAY);
tft.setRotation(2);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Test display");
delay(DELAY);
tft.setRotation(0);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Schimbarea orientarii display-ului cu 270 de grade");
delay(DELAY);
tft.setRotation(3);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Test display");
delay(DELAY);
tft.setRotation(0);
tft.fillScreen(ST77XX_BLACK);
tft.setCursor(0, 10);
tft.setTextColor(ST77XX_WHITE);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Afisare butoane multimedia");
delay(DELAY);
tft.setRotation(1);
tft.fillScreen(ST77XX_BLACK);
tft.fillRoundRect(0, 10, 78, 60, 8, ST77XX_WHITE);
tft.fillTriangle(17, 20, 17, 60, 65, 40, ST77XX_RED);
delay(500);
tft.fillRoundRect(82, 10, 78, 60, 8, ST77XX_WHITE);
tft.fillRoundRect(96, 18, 20, 45, 5, ST77XX_GREEN);
tft.fillRoundRect(127, 18, 20, 45, 5, ST77XX_GREEN);
delay(500);
tft.fillTriangle(17, 20, 17, 60, 65, 40, ST77XX_BLUE);
delay(DELAY);
tft.setRotation(0);
tft.fillScreen(ST77XX_WHITE);
tft.setCursor(0, 50);
tft.setTextColor(ST77XX_RED);
tft.setTextSize(2);
tft.setTextWrap(true);
tft.println("Multumim pentru vizualizare");
delay(5000);
}
Sketchul este identic cu cel din acest articol.