// Screen Libraries
#include "SPI.h"
#include "ILI9341_t3n.h"
// Hook Up Teensy
#define TFT_DC 9
#define TFT_CS 10
#define TFT_RST 8
DMAMEM uint16_t screenBuffer[320 * 240]; // Screen Buffer
ILI9341_t3n tft = ILI9341_t3n(TFT_CS, TFT_DC, TFT_RST); // Create Screen Object
// Framerate Timer
int frameCounter = 0;
int frameTimer = 0;
int frameInterval = 1000;
int boxX1 = -50; int boxY1 = 50;
int boxX2 = 320; int boxY2 = 150;
int boxY3 = -50; int boxX3 = 50;
int boxY4 = 320; int boxX4 = 150;
int boxSpeed = 1;
int squareSize = 50;
int screenW = 320;
int screenH = 240;
// Initialize Screen
void setup(){
Serial.begin(9600);
tft.begin(); // Connect to LCD Screen
tft.setRotation(1); // Rotate Screen 90 Degrees
tft.setFrameBuffer(screenBuffer); // Initialize Frame Buffer
tft.useFrameBuffer(1); // Use Frame Buffer
tft.fillScreen(ILI9341_BLACK); // Clear Screen
tft.updateScreen();
}
void loop() {
int squareBufferStart = boxSpeed;
int squareBuffer = boxSpeed * 2;
// Draw the Boxes
tft.fillScreen(ILI9341_BLACK); // Clear Screen
tft.setClipRect(boxX1 - squareBufferStart, boxY1 - squareBufferStart, squareSize + squareBuffer, squareSize + squareBuffer);
tft.fillRect(boxX1, boxY1, squareSize, squareSize, ILI9341_RED);
tft.updateScreen();
tft.fillScreen(ILI9341_BLACK); // Clear Screen
tft.setClipRect(boxX2 - squareBufferStart, boxY2 - squareBufferStart, squareSize + squareBuffer, squareSize + squareBuffer);
tft.fillRect(boxX2, boxY2, squareSize, squareSize, ILI9341_GREEN);
tft.updateScreen();
tft.fillScreen(ILI9341_BLACK); // Clear Screen
tft.setClipRect(boxX3 - squareBufferStart, boxY3 - squareBufferStart, squareSize + squareBuffer, squareSize + squareBuffer);
tft.fillRect(boxX3, boxY3, squareSize, squareSize, ILI9341_BLUE);
tft.updateScreen();
tft.fillScreen(ILI9341_BLACK); // Clear Screen
tft.setClipRect(boxX4 - squareBufferStart, boxY4 - squareBufferStart, squareSize + squareBuffer, squareSize + squareBuffer);
tft.fillRect(boxX4, boxY4, squareSize, squareSize, ILI9341_YELLOW);
tft.updateScreen();
// Move the Boxes
if(boxX1 > screenW){boxX1 = -squareSize;} else{boxX1 += boxSpeed;}
if(boxX2 < -squareSize){boxX2 = screenW;} else{boxX2 -= boxSpeed;}
if(boxY3 > screenH){boxY3 = -squareSize;} else{boxY3 += boxSpeed;}
if(boxY4 < -squareSize){boxY4 = screenH;} else{boxY4 -= boxSpeed;}
// Frame Timer
if(millis() - frameTimer > frameInterval){
Serial.println(frameCounter);
frameCounter = 0;
frameTimer = millis();
}
else{
frameCounter++; // Increment Frame Counter
}
}