#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#define TFT_DC 6
#define TFT_CS 10
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
#define R ILI9341_RED
#define W ILI9341_WHITE
#define B ILI9341_BLACK
#define SPRITE_W 16
#define SPRITE_H 8
#define SPRITE_L SPRITE_W*SPRITE_H
PROGMEM const uint16_t sprite[] = {
R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,
R,W,W,W,B,B,B,R,R,W,W,W,B,B,B,R,
R,W,W,W,B,B,B,R,R,W,W,W,B,B,B,R,
R,W,W,W,B,B,B,R,R,W,W,W,B,B,B,R,
R,B,B,B,W,W,W,R,R,B,B,B,W,W,W,R,
R,B,B,B,W,W,W,R,R,B,B,B,W,W,W,R,
R,B,B,B,W,W,W,R,R,B,B,B,W,W,W,R,
R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,
};
uint32_t m1, m2;
void clearScreen( uint16_t color=0 ){
tft.startWrite();
tft.setAddrWindow(0,0,320,240);
for (byte b=0; b<32; b++){
for (uint16_t i=0; i<2400; i++) {
tft.SPI_WRITE16(color); // 36276 8
}
}
tft.endWrite();
}
void setup() {
/*
Serial.begin(115200);
Serial.print("RED ");
Serial.println( ILI9341_RED, HEX );
Serial.print("WHITE ");
Serial.println( ILI9341_WHITE, HEX );
Serial.print("BLACK ");
Serial.println( ILI9341_BLACK, HEX );
*/
tft.begin();
tft.setRotation(1);
tft.setTextColor(ILI9341_RED);
tft.setTextSize(2);
tft.println("Test");
m1 = micros();
clearScreen( ILI9341_YELLOW );
m2 = micros();
uint32_t m3 = m2-m1;
m1 = micros();
tft.fillScreen( ILI9341_BLUE );
m2 = micros();
tft.println(m3);
tft.println(m2-m1);
m1 = micros();
for( int y=30; y<130; y+=20 ){
for (int x=120; x<320; x+=20) {
tft.drawRGBBitmap(x,y,sprite,SPRITE_W,SPRITE_H); // 6ms one
}
}
m2 = micros();
tft.println(m2-m1);
m1 = micros();
for( int y=150; y<250; y+=20 ){
for (int x=120; x<320; x+=20) {
tft.startWrite();
tft.setAddrWindow(x,y,SPRITE_W,SPRITE_H);
for (int i=0; i<SPRITE_L; i++) {
//tft.pushColor( pgm_read_word(&sprite[i]) ); // 68476 4.2
tft.SPI_WRITE16(pgm_read_word(&sprite[i])); // 36276 8
}
tft.endWrite();
}
}
m2 = micros();
tft.println(m2-m1);
}
void loop() {
// put your main code here, to run repeatedly:
}