commit e2f6af583c90d83689b7c8dbad7a8e8cfd19818d Author: Sebastian Kujas Date: Thu Jun 20 18:09:33 2024 +0200 init working nv3030b display test diff --git a/nv3030b-graphicstest.ino b/nv3030b-graphicstest.ino new file mode 100644 index 0000000..97df77b --- /dev/null +++ b/nv3030b-graphicstest.ino @@ -0,0 +1,358 @@ +/*************************************************** + This is our GFX example for the Adafruit ILI9341 Breakout and Shield + ----> http://www.adafruit.com/products/1651 + + 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 "SPI.h" +#include "Adafruit_GFX.h" // https://learn.adafruit.com/adafruit-gfx-graphics-library +#include "Adafruit_NV3030B.h" + +// For the Adafruit shield, these are the default. +#define TFT_DC 8 +#define TFT_CS 9 +#define TFT_MOSI 11 +#define TFT_CLK 10 +#define TFT_RST 12 +#define TFT_MISO 14 + + +// Use hardware SPI (on Uno, #13, #12, #11) and the above for CS/DC +// Adafruit_NV3030B tft = Adafruit_NV3030B(TFT_CS, TFT_DC); +// If using the breakout, change pins as desired +Adafruit_NV3030B tft = Adafruit_NV3030B(TFT_CS, TFT_DC, TFT_MOSI, TFT_CLK, TFT_RST, TFT_MISO); + +void setup() { + Serial.begin(9600); + Serial.println("NV3030B Test!"); + + tft.begin(); + + Serial.println(F("Benchmark Time (microseconds)")); + delay(10); + Serial.print(F("Screen fill ")); + Serial.println(testFillScreen()); + delay(500); + + Serial.print(F("Text ")); + Serial.println(testText()); + delay(3000); + + Serial.print(F("Lines ")); + Serial.println(testLines(NV3030B_CYAN)); + delay(500); + + Serial.print(F("Horiz/Vert Lines ")); + Serial.println(testFastLines(NV3030B_RED, NV3030B_BLUE)); + delay(500); + + Serial.print(F("Rectangles (outline) ")); + Serial.println(testRects(NV3030B_GREEN)); + delay(500); + + Serial.print(F("Rectangles (filled) ")); + Serial.println(testFilledRects(NV3030B_YELLOW, NV3030B_MAGENTA)); + delay(500); + + Serial.print(F("Circles (filled) ")); + Serial.println(testFilledCircles(10, NV3030B_MAGENTA)); + + Serial.print(F("Circles (outline) ")); + Serial.println(testCircles(10, NV3030B_WHITE)); + delay(500); + + Serial.print(F("Triangles (outline) ")); + Serial.println(testTriangles()); + delay(500); + + Serial.print(F("Triangles (filled) ")); + Serial.println(testFilledTriangles()); + delay(500); + + Serial.print(F("Rounded rects (outline) ")); + Serial.println(testRoundRects()); + delay(500); + + Serial.print(F("Rounded rects (filled) ")); + Serial.println(testFilledRoundRects()); + delay(500); + + Serial.println(F("Done!")); + +} + + +void loop(void) { + for(uint8_t rotation=0; rotation<4; rotation++) { + tft.setRotation(rotation); + testText(); + delay(1000); + } +} + +unsigned long testFillScreen() { + unsigned long start = micros(); + tft.fillScreen(NV3030B_BLACK); + yield(); + tft.fillScreen(NV3030B_RED); + yield(); + tft.fillScreen(NV3030B_GREEN); + yield(); + tft.fillScreen(NV3030B_BLUE); + yield(); + tft.fillScreen(NV3030B_BLACK); + yield(); + return micros() - start; +} + +unsigned long testText() { + tft.fillScreen(NV3030B_BLACK); + unsigned long start = micros(); + tft.setCursor(0, 0); + tft.setTextColor(NV3030B_WHITE); tft.setTextSize(1); + tft.println("Hello World!"); + tft.setTextColor(NV3030B_YELLOW); tft.setTextSize(2); + tft.println(1234.56); + tft.setTextColor(NV3030B_RED); tft.setTextSize(3); + tft.println(0xDEADBEEF, HEX); + tft.println(); + tft.setTextColor(NV3030B_GREEN); + tft.setTextSize(5); + tft.println("Groop"); + tft.setTextSize(2); + tft.println("I implore thee,"); + tft.setTextSize(1); + tft.println("my foonting turlingdromes."); + tft.println("And hooptiously drangle me"); + tft.println("with crinkly bindlewurdles,"); + tft.println("Or I will rend thee"); + tft.println("in the gobberwarts"); + tft.println("with my blurglecruncheon,"); + tft.println("see if I don't!"); + return micros() - start; +} + +unsigned long testLines(uint16_t color) { + unsigned long start, t; + int x1, y1, x2, y2, + w = tft.width(), + h = tft.height(); + + tft.fillScreen(NV3030B_BLACK); + yield(); + + x1 = y1 = 0; + y2 = h - 1; + start = micros(); + for(x2=0; x20; i-=6) { + i2 = i / 2; + start = micros(); + tft.fillRect(cx-i2, cy-i2, i, i, color1); + t += micros() - start; + // Outlines are not included in timing results + tft.drawRect(cx-i2, cy-i2, i, i, color2); + yield(); + } + + return t; +} + +unsigned long testFilledCircles(uint8_t radius, uint16_t color) { + unsigned long start; + int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2; + + tft.fillScreen(NV3030B_BLACK); + start = micros(); + for(x=radius; x10; i-=5) { + start = micros(); + tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(0, i*10, i*10)); + t += micros() - start; + tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(i*10, i*10, 0)); + yield(); + } + + return t; +} + +unsigned long testRoundRects() { + unsigned long start; + int w, i, i2, + cx = tft.width() / 2 - 1, + cy = tft.height() / 2 - 1; + + tft.fillScreen(NV3030B_BLACK); + w = min(tft.width(), tft.height()); + start = micros(); + for(i=0; i20; i-=6) { + i2 = i / 2; + tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0)); + yield(); + } + + return micros() - start; +} \ No newline at end of file