SPI Displays am Arduino
1,77 Zoll 160x128 RGB Display (blau)
Anschluss
Diese Displays dürfen nur an 3,3V angeschlossen werden. Da der Arduino Uno auf seinen GPIO-Pins 5 V ausgibt, müssen die Pins über einen Logic-Level-Converter (LLC) auf 3,3V reduziert werden.
Display
LLC
Arduino
SCK
A1 - B1
13
SDA
A2 - B2
11
RES
A3-B3
8
RS
A4 . B4
9
CS
A5 - B5
10
LEDA
VA
3,3 V
VCC
VB
5V
OE (via 1kOhm)
3,3 V
Code
#include <Adafruit_GFX.h>
#include <Fonts/FreeSansBold9pt7b.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>
Adafruit_ST7735 tft = Adafruit_ST7735 (10 , 8 , 9 );
void setup (void ) {
tft.initR (INITR_GREENTAB);
tft.fillScreen (ST77XX_BLACK);
delay (500 );
testbild ();
delay (1000 );
tft.setTextColor (ST77XX_WHITE, ST77XX_BLACK);
tft.setTextSize (2 );
tft.setFont ();
}
void loop () {
for (uint8_t i = 0 ; i < 100 ; i++) {
changing_value (i);
delay (100 );
}
}
void testbild () {
tft.setFont (&FreeSansBold9pt7b);
tft.fillScreen (ST77XX_BLACK);
tft.setTextColor (ST77XX_RED);
tft.setCursor (14 , 22 );
tft.print ("Testbild" );
tft.drawFastHLine (0 , 35 , 128 , ST77XX_GREEN);
tft.drawTriangle (1 , 45 , 28 , 70 , 55 , 45 , ST77XX_WHITE);
tft.fillTriangle (78 , 70 , 104 , 45 , 127 , 70 , 0xA3F6 );
tft.drawRect (1 , 80 , 50 , 30 , ST77XX_BLUE);
tft.fillRoundRect (78 , 80 , 50 , 30 , 5 , 0x2D4E );
tft.fillCircle (25 , 135 , 15 , 0x5BA9 );
tft.drawCircle (102 , 135 , 15 , ST77XX_GREEN);
tft.drawLine (45 , 150 , 80 , 40 , ST77XX_ORANGE);
}
void changing_value (uint8_t value) {
if (value < 10 ) {
tft.setCursor (15 , 88 );
tft.print ("0" );
tft.print (value);
} else {
tft.setCursor (15 , 88 );
tft.print (value);
}
}
1,8 Zoll 128x160 RGB Display (rot)
Anschluss
Display
Arduino
Bedeutung
LED
3,3 V
Hintergrundbeleuchtung
SCK
13
Taktgeber
SDA
11
MOSI: Datenübetragung Arduino - Display
A0
9
RES, RST
Pin 8
Reset
CS
10
Chip Select
GND
GND
VCC
5V
Code
#include <Adafruit_GFX.h>
#include <Adafruit_ST7735.h>
#include <SPI.h>
#define TFT_CS 10
#define TFT_RST 8
#define TFT_DC 9
Adafruit_ST7735 tft = Adafruit_ST7735 (TFT_CS, TFT_DC, TFT_RST);
void setup (void ) {
Serial.begin (9600 );
tft.initR (INITR_BLACKTAB);
tft.fillScreen (ST77XX_BLACK);
drawtext ("Hallo!" , ST77XX_RED);
Serial.println ("Setup abgeschlossen!" );
}
void loop () {
tft.invertDisplay (true );
delay (500 );
tft.invertDisplay (false );
delay (500 );
}
void drawtext (char *text, uint16_t color) {
tft.setCursor (0 , 50 );
tft.setTextColor (color);
tft.setTextSize (2 );
tft.setTextWrap (true );
tft.print (text);
}
void fillScreenBlink (uint16_t color1, uint16_t color2) {
tft.fillScreen (color1);
delay (1000 );
tft.fillScreen (color2);
}