Rond 1,28 inch TFT LCD-scherm voor Arduino-projecten die een helder kleurendisplay nodig hebben.
SKU: OT8724 Artikelnummer: AJ045 EAN: 8721244302997 Locatie: AD04.08
Alternatief
1.3inch SPI TFT LCD Display RGB (ST7789, 3.3V)
€ 6,25
Bekijk dit alternatief
Zo sluit je de 1,28″ rond TFT LCD 240×240 (GC9A01, SPI) voor Arduino aan op een Arduino UNO of ESP32, met een voorbeeldsketch die je direct kunt uploaden.
Dit project initialiseert en tekent geanimeerde graphics op een ronde 1.28-inch SPI TFT-display (GC9A01-controller). Het tekent kleurrijke concentrische ringen rond het cirkelvormige scherm en laat voortdurend de kleur van een binnenste doelcirkel veranderen.
/*
* ==================================================================
* Generated by Codey.online — https://www.codey.online
* ==================================================================
* Project : 1.28 Inch Round GC9A01 TFT LCD Demo
* Board : Arduino UNO (arduino:avr:uno)
* Parts : 1.28" Round TFT LCD 240x240 (GC9A01, SPI)
* Libraries : none (built-in)
*
* Codey Online is an AI-powered browser IDE for Arduino and ESP32.
* Describe your project and Codey writes the code, draws the wiring
* diagram and uploads it to your board, straight from the browser.
* This code is free to use, modify and share, without warranty.
* ==================================================================
*/
#include <SPI.h>
#define TFT_CS 10
#define TFT_DC 9
#define TFT_RST 8
#define COLOR_BLACK 0x0000
#define COLOR_BLUE 0x001F
#define COLOR_RED 0xF800
#define COLOR_GREEN 0x07E0
#define COLOR_CYAN 0x07FF
#define COLOR_MAGENTA 0xF81F
#define COLOR_YELLOW 0xFFE0
#define COLOR_WHITE 0xFFFF
const uint16_t palette[] = {COLOR_RED, COLOR_GREEN, COLOR_BLUE, COLOR_YELLOW, COLOR_CYAN, COLOR_MAGENTA};
int colorIndex = 0;
void writeCommand(uint8_t c) {
digitalWrite(TFT_DC, LOW);
digitalWrite(TFT_CS, LOW);
SPI.transfer(c);
digitalWrite(TFT_CS, HIGH);
}
void writeData(uint8_t d) {
digitalWrite(TFT_DC, HIGH);
digitalWrite(TFT_CS, LOW);
SPI.transfer(d);
digitalWrite(TFT_CS, HIGH);
}
void setWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) {
writeCommand(0x2A);
writeData(x0 >> 8); writeData(x0 & 0xFF);
writeData(x1 >> 8); writeData(x1 & 0xFF);
writeCommand(0x2B);
writeData(y0 >> 8); writeData(y0 & 0xFF);
writeData(y1 >> 8); writeData(y1 & 0xFF);
writeCommand(0x2C);
}
void fillScreen(uint16_t color) {
setWindow(0, 0, 239, 239);
digitalWrite(TFT_DC, HIGH);
digitalWrite(TFT_CS, LOW);
uint8_t hi = color >> 8;
uint8_t lo = color & 0xFF;
for (uint32_t i = 0; i < 240UL * 240UL; i++) {
SPI.transfer(hi);
SPI.transfer(lo);
}
digitalWrite(TFT_CS, HIGH);
}
void drawHLine(int16_t x, int16_t y, int16_t w, uint16_t color) {
if (y < 0 || y >= 240 || x >= 240 || (x + w) <= 0) return;
int16_t x1 = max(0, x);
int16_t x2 = min(239, x + w - 1);
int16_t len = x2 - x1 + 1;
setWindow(x1, y, x2, y);
digitalWrite(TFT_DC, HIGH);
digitalWrite(TFT_CS, LOW);
uint8_t hi = color >> 8;
uint8_t lo = color & 0xFF;
for (int16_t i = 0; i < len; i++) {
SPI.transfer(hi);
SPI.transfer(lo);
}
digitalWrite(TFT_CS, HIGH);
}
void fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color) {
for (int16_t dy = -r; dy <= r; dy++) {
int16_t dx = sqrt((long)r * r - (long)dy * dy);
drawHLine(x0 - dx, y0 + dy, dx * 2 + 1, color);
}
}
void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color) {
int16_t f = 1 - r, ddF_x = 1, ddF_y = -2 * r, x = 0, y = r;
auto plot = [&](int16_t px, int16_t py) {
if (px >= 0 && px < 240 && py >= 0 && py < 240) {
setWindow(px, py, px, py);
writeData(color >> 8);
writeData(color & 0xFF);
}
};
plot(x0, y0 + r); plot(x0, y0 - r); plot(x0 + r, y0); plot(x0 - r, y0);
while (x < y) {
if (f >= 0) { y--; ddF_y += 2; f += ddF_y; }
x++; ddF_x += 2; f += ddF_x;
plot(x0 + x, y0 + y); plot(x0 - x, y0 + y);
plot(x0 + x, y0 - y); plot(x0 - x, y0 - y);
plot(x0 + y, y0 + x); plot(x0 - y, y0 + x);
plot(x0 + y, y0 - x); plot(x0 - y, y0 - x);
}
}
void gc9a01Init() {
pinMode(TFT_CS, OUTPUT);
pinMode(TFT_DC, OUTPUT);
pinMode(TFT_RST, OUTPUT);
digitalWrite(TFT_CS, HIGH);
digitalWrite(TFT_RST, HIGH);
delay(10);
digitalWrite(TFT_RST, LOW);
delay(20);
digitalWrite(TFT_RST, HIGH);
delay(120);
SPI.begin();
SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0));
writeCommand(0xEF);
writeCommand(0xEB); writeData(0x14);
writeCommand(0xFE);
writeCommand(0xEF);
writeCommand(0xEB); writeData(0x14);
writeCommand(0x84); writeData(0x40);
writeCommand(0x85); writeData(0xFF);
writeCommand(0x86); writeData(0xFF);
writeCommand(0x87); writeData(0xFF);
writeCommand(0x88); writeData(0x0A);
writeCommand(0x89); writeData(0x21);
writeCommand(0x8A); writeData(0x00);
writeCommand(0x8B); writeData(0x80);
writeCommand(0x8C); writeData(0x01);
writeCommand(0x8D); writeData(0x01);
writeCommand(0x8E); writeData(0xFF);
writeCommand(0x8F); writeData(0xFF);
writeCommand(0xB6); writeData(0x00); writeData(0x00);
writeCommand(0x3A); writeData(0x05);
writeCommand(0x90); writeData(0x08); writeData(0x08); writeData(0x08); writeData(0x08);
writeCommand(0xBD); writeData(0x06);
writeCommand(0xBC); writeData(0x00);
writeCommand(0xFF); writeData(0x60); writeData(0x01); writeData(0x04);
writeCommand(0xC3); writeData(0x13);
writeCommand(0xC4); writeData(0x13);
writeCommand(0xC9); writeData(0x22);
writeCommand(0xBE); writeData(0x11);
writeCommand(0xE1); writeData(0x10); writeData(0x0E);
writeCommand(0xDF); writeData(0x21); writeData(0x0C); writeData(0x02);
writeCommand(0xF0); writeData(0x45); writeData(0x09); writeData(0x08); writeData(0x08); writeData(0x26); writeData(0x2A);
writeCommand(0xF1); writeData(0x43); writeData(0x70); writeData(0x72); writeData(0x36); writeData(0x37); writeData(0x6F);
writeCommand(0xF2); writeData(0x45); writeData(0x09); writeData(0x08); writeData(0x08); writeData(0x26); writeData(0x2A);
writeCommand(0xF3); writeData(0x43); writeData(0x70); writeData(0x72); writeData(0x36); writeData(0x37); writeData(0x6F);
writeCommand(0xED); writeData(0x1B); writeData(0x0B);
writeCommand(0xAE); writeData(0x77);
writeCommand(0xCD); writeData(0x63);
writeCommand(0x70); writeData(0x07); writeData(0x07); writeData(0x04); writeData(0x0E); writeData(0x0F); writeData(0x09); writeData(0x07); writeData(0x08); writeData(0x03);
writeCommand(0xE8); writeData(0x34);
writeCommand(0x62); writeData(0x18); writeData(0x0D); writeData(0x71); writeData(0xED); writeData(0x70); writeData(0x70); writeData(0x18); writeData(0x0F); writeData(0x71); writeData(0xEF); writeData(0x70); writeData(0x70);
writeCommand(0x63); writeData(0x18); writeData(0x11); writeData(0x71); writeData(0xF1); writeData(0x70); writeData(0x70); writeData(0x18); writeData(0x13); writeData(0x71); writeData(0xF3); writeData(0x70); writeData(0x70);
writeCommand(0x64); writeData(0x28); writeData(0x29); writeData(0xF1); writeData(0x01); writeData(0xF1); writeData(0x00); writeData(0x07);
writeCommand(0x66); writeData(0x3C); writeData(0x00); writeData(0xCD); writeData(0x67); writeData(0x45); writeData(0x45); writeData(0x10); writeData(0x00); writeData(0x00); writeData(0x00);
writeCommand(0x67); writeData(0x00); writeData(0x3C); writeData(0x00); writeData(0x00); writeData(0x00); writeData(0x01); writeData(0x54); writeData(0x10); writeData(0x32); writeData(0x98);
writeCommand(0x74); writeData(0x10); writeData(0x85); writeData(0x80); writeData(0x00); writeData(0x00); writeData(0x4E); writeData(0x00);
writeCommand(0x98); writeData(0x3E); writeData(0x07);
writeCommand(0x35);
writeCommand(0x21);
writeCommand(0x11);
delay(120);
writeCommand(0x29);
delay(20);
}
void setup() {
Serial.begin(115200);
Serial.println(F("GC9A01 Round LCD Initializing..."));
gc9a01Init();
fillScreen(COLOR_BLACK);
// Draw fixed outer rings
drawCircle(120, 120, 118, COLOR_CYAN);
drawCircle(120, 120, 116, COLOR_CYAN);
drawCircle(120, 120, 100, COLOR_WHITE);
drawCircle(120, 120, 80, COLOR_BLUE);
drawCircle(120, 120, 60, COLOR_YELLOW);
Serial.println(F("Display ready!"));
}
void loop() {
// Pulse inner target circle with different colors
fillCircle(120, 120, 40, palette[colorIndex]);
Serial.print(F("Color index: "));
Serial.println(colorIndex);
colorIndex = (colorIndex + 1) % 6;
delay(800);
}
Wiring diagram and example code generated by Codey.online — https://www.codey.online
Dit project verbindt een 1.28-inch GC9A01 ronde TFT LCD via SPI met de ESP32. De sketch initialiseert het display en tekent een aangepaste ronde gauge-indeling met tekst en statusindicatoren die worden bijgewerkt.
/*
* ==================================================================
* Generated by Codey.online — https://www.codey.online
* ==================================================================
* Project : GC9A01 1.28" Round TFT LCD Demo
* Board : ESP32 DEVKIT V1 (esp32:esp32:esp32doit-devkit-v1)
* Parts : 1.28" Round TFT LCD 240x240 (GC9A01, SPI)
* Libraries : Adafruit GFX Library 1.12.6, Adafruit GC9A01A 1.1.1
*
* Codey Online is an AI-powered browser IDE for Arduino and ESP32.
* Describe your project and Codey writes the code, draws the wiring
* diagram and uploads it to your board, straight from the browser.
* This code is free to use, modify and share, without warranty.
* ==================================================================
*/
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_GC9A01A.h>
#define TFT_CS 5
#define TFT_DC 27
#define TFT_RST 4
Adafruit_GC9A01A tft(TFT_CS, TFT_DC, TFT_RST);
void drawDial() {
tft.fillScreen(GC9A01A_BLACK);
// Draw outer colored rings
tft.drawCircle(120, 120, 118, GC9A01A_CYAN);
tft.drawCircle(120, 120, 115, GC9A01A_BLUE);
tft.fillCircle(120, 120, 90, GC9A01A_NAVY);
tft.fillCircle(120, 120, 80, GC9A01A_BLACK);
// Centered labels
tft.setTextColor(GC9A01A_WHITE);
tft.setTextSize(2);
tft.setCursor(65, 80);
tft.println("GC9A01");
tft.setTextSize(1);
tft.setTextColor(GC9A01A_GREEN);
tft.setCursor(75, 105);
tft.println("ESP32 READY");
}
void setup() {
Serial.begin(115200);
Serial.println("Initializing GC9A01 Round Display...");
tft.begin();
tft.setRotation(0);
drawDial();
Serial.println("Display initialized!");
}
void loop() {
static unsigned long lastUpdate = 0;
static int counter = 0;
if (millis() - lastUpdate >= 1000) {
lastUpdate = millis();
counter++;
// Update counter display in the center
tft.fillRect(60, 130, 120, 30, GC9A01A_BLACK);
tft.setTextColor(GC9A01A_YELLOW);
tft.setTextSize(3);
tft.setCursor(95, 135);
tft.printf("%02d", counter % 60);
Serial.print("Counter: ");
Serial.println(counter % 60);
}
}
Benodigde bibliotheken: Adafruit GFX Library 1.12.6, Adafruit GC9A01A 1.1.1
Wiring diagram and example code generated by Codey.online — https://www.codey.online
Deze 1,28 inch ronde TFT LCD-display is ideaal voor Arduino-projecten die een helder en scherp scherm vereisen. Met een resolutie van 240×240 pixels en een IPS-kleurenscherm biedt het een volledig zichtbare en levendige weergave vanuit elke hoek.
Dit scherm is geschikt voor diverse toepassingen waarbij een compact, hoogwaardig kleurendisplay nodig is. Dankzij de SPI-interface is het eenvoudig aan te sluiten op Arduino en vergelijkbare microcontrollers.
| Pinafstand | 2,54 mm, 8 pins |
|---|---|
| Schermformaat | 1,28 inch rond |
| Resolutie | 240×240 pixels |
| Display type | IPS kleurenscherm voor brede kijkhoeken |
| Driver chip | GC9A01 |
| Interface | 4-Pin SPI |
| Werkspanning | 2,8V tot 3,3V |
| Werktemperatuur | -20℃ tot 70℃ |
| Werkvochtigheid | 5% tot 95% RH |
| Displaygebied | 32,4 mm diameter |
| Paneelafmetingen | 35,6 × 38,1 × 1,5 mm |
| PCB-afmetingen | 44 × 36 × 5 mm |
zeer mooi display moeilijke om goed te coderen
Niet tevreden? Je hebt 30 dagen bedenktijd na ontvangst om het product terug te sturen.
Alles over retourneren
1,28″ rond TFT LCD 240×240 (GC9A01, SPI) voor Arduino