#include "SPI.h"
#include "Adafruit_GFX.h"
#include "Adafruit_ILI9341.h"
#include <Fonts/FreeSansBold12pt7b.h>
#define TFT_DC 9
#define TFT_CS 10
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC);
uint16_t TFT_WIDTH = 320;
uint16_t TFT_HEIGHT = 240;
#define BLACK 0x0000
#define WHITE 0xFFFF
#define FG 0xFFFF
#define BG 0x0000
void setup() {
tft.begin();
tft.setRotation(3);
tft.fillScreen(BLACK);
//tft.fillRect(0, 0, 320, 240, MIDGREY);
randomSeed(analogRead(0));
}
void loop() {
// Pick 2 random block functions
int rand_1 = random(1, 17); // 1–16 inclusive
int rand_2 = random(1, 17);
for (int y = 0; y < TFT_HEIGHT; y += 40) {
for (int x = 0; x < TFT_WIDTH; x += 40) {
// Draw tile at this grid position
drawTile(rand_1, rand_2, x, y);
}
}
delay(2000); // pause before next full redraw
}
typedef void (*BlockFunc)(int, int);
BlockFunc blocks[] = {
block_1, block_2, block_3, block_4,
block_5, block_6, block_7, block_8,
block_9, block_10, block_11, block_12,
block_13, block_14, block_15, block_16
};
void drawTile(int rand_1, int rand_2, int x, int y) {
blocks[rand_1 - 1](x, y);
blocks[rand_2 - 1](x + 20, y);
blocks[rand_2 - 1](x, y + 20);
blocks[rand_1 - 1](x + 20, y + 20);
}
void pixel(int x, int y) {
tft.fillRect(x, y, 10, 10, FG);
}
void blank(int x, int y) {
tft.fillRect(x, y, 10, 10, BG);
}
void block_1(int x, int y) {
blank(x,y);
blank(x+10, y);
blank(x+10, y+10);
blank(x, y+10);
}
void block_2(int x, int y) {
pixel(x,y);
pixel(x+10, y);
pixel(x+10, y+10);
pixel(x, y+10);
}
void block_3(int x, int y) {
pixel(x,y);
blank(x+10, y);
blank(x+10, y+10);
blank(x, y+10);
}
void block_4(int x, int y) {
blank(x,y);
pixel(x+10, y);
blank(x+10, y+10);
blank(x, y+10);
}
void block_5(int x, int y) {
blank(x,y);
blank(x+10, y);
pixel(x+10, y+10);
blank(x, y+10);
}
void block_6(int x, int y) {
blank(x,y);
blank(x+10, y);
blank(x+10, y+10);
pixel(x, y+10);
}
void block_7(int x, int y) {
pixel(x,y);
blank(x+10, y);
blank(x+10, y+10);
pixel(x, y+10);
}
void block_8(int x, int y) {
pixel(x,y);
pixel(x+10, y);
blank(x+10, y+10);
blank(x, y+10);
}
void block_9(int x, int y) {
blank(x,y);
pixel(x+10, y);
pixel(x+10, y+10);
blank(x, y+10);
}
void block_10(int x, int y) {
blank(x,y);
blank(x+10, y);
pixel(x+10, y+10);
pixel(x, y+10);
}
void block_11(int x, int y) {
pixel(x,y);
blank(x+10, y);
pixel(x+10, y+10);
pixel(x, y+10);
}
void block_12(int x, int y) {
pixel(x,y);
pixel(x+10, y);
blank(x+10, y+10);
pixel(x, y+10);
}
void block_13(int x, int y) {
pixel(x,y);
pixel(x+10, y);
pixel(x+10, y+10);
blank(x, y+10);
}
void block_14(int x, int y) {
blank(x,y);
pixel(x+10, y);
pixel(x+10, y+10);
pixel(x, y+10);
}
void block_15(int x, int y) {
pixel(x,y);
blank(x+10, y);
pixel(x+10, y+10);
blank(x, y+10);
}
void block_16(int x, int y) {
blank(x,y);
pixel(x+10, y);
blank(x+10, y+10);
pixel(x, y+10);
}