#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
#define MID 0xc284
void setup() {
tft.begin();
tft.setRotation(3);
tft.fillScreen(BLACK);
//tft.fillRect(0, 0, 320, 240, MIDGREY);
randomSeed(analogRead(0));
}
void loop() {
tft.fillScreen(BLACK); // clear screen before redraw
// Pick 3 random block functions
int rand_1 = random(1, 17); // 1–16 inclusive
int rand_2 = random(17, 32);
int rand_3 = random(32, 45);
for (int y = 0; y < TFT_HEIGHT; y += 60) {
for (int x = 0; x < TFT_WIDTH; x += 60) {
// Draw tile at this grid position
drawTile(rand_1, rand_2, rand_3, 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, block_17, block_18, block_19, block_20, block_21, block_22, block_23, block_24, block_25, block_26, block_27, block_28, block_29, block_30, block_31, block_32, block_33, block_34, block_35, block_36, block_37, block_38, block_39, block_40, block_41, block_42, block_43, block_45
};
void drawTile(int rand_1, int rand_2, int rand_3, int x, int y) {
blocks[rand_1 - 1](x, y);
blocks[rand_2 - 1](x + 20, y);
blocks[rand_3 - 1](x + 40, y);
blocks[rand_2 - 1](x, y + 20);
blocks[rand_3 - 1](x + 20, y + 20);
blocks[rand_1 - 1](x + 40, y + 20);
blocks[rand_3 - 1](x, y + 40);
blocks[rand_1 - 1](x + 20, y + 40);
blocks[rand_2 - 1](x + 40, y + 40);
}
void pixel(int x, int y) {
tft.fillRect(x, y, 10, 10, FG);
}
void grixel(int x, int y) {
tft.fillRect(x, y, 10, 10, MID);
}
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);
}
void block_17(int x, int y) {
grixel(x, y);
grixel(x + 10, y);
grixel(x + 10, y + 10);
grixel(x, y + 10);
}
void block_18(int x, int y) {
grixel(x, y);
blank(x + 10, y);
blank(x + 10, y + 10);
blank(x, y + 10);
}
void block_19(int x, int y) {
blank(x, y);
grixel(x + 10, y);
blank(x + 10, y + 10);
blank(x, y + 10);
}
void block_20(int x, int y) {
blank(x, y);
blank(x + 10, y);
grixel(x + 10, y + 10);
blank(x, y + 10);
}
void block_21(int x, int y) {
blank(x, y);
blank(x + 10, y);
blank(x + 10, y + 10);
grixel(x, y + 10);
}
void block_22(int x, int y) {
grixel(x, y);
blank(x + 10, y);
blank(x + 10, y + 10);
grixel(x, y + 10);
}
void block_23(int x, int y) {
grixel(x, y);
grixel(x + 10, y);
blank(x + 10, y + 10);
blank(x, y + 10);
}
void block_24(int x, int y) {
blank(x, y);
grixel(x + 10, y);
grixel(x + 10, y + 10);
blank(x, y + 10);
}
void block_25(int x, int y) {
blank(x, y);
blank(x + 10, y);
grixel(x + 10, y + 10);
grixel(x, y + 10);
}
void block_26(int x, int y) {
grixel(x, y);
blank(x + 10, y);
grixel(x + 10, y + 10);
grixel(x, y + 10);
}
void block_27(int x, int y) {
grixel(x, y);
grixel(x + 10, y);
blank(x + 10, y + 10);
grixel(x, y + 10);
}
void block_28(int x, int y) {
grixel(x, y);
grixel(x + 10, y);
grixel(x + 10, y + 10);
blank(x, y + 10);
}
void block_29(int x, int y) {
blank(x, y);
grixel(x + 10, y);
grixel(x + 10, y + 10);
grixel(x, y + 10);
}
void block_30(int x, int y) {
grixel(x, y);
blank(x + 10, y);
grixel(x + 10, y + 10);
blank(x, y + 10);
}
void block_31(int x, int y) {
blank(x, y);
grixel(x + 10, y);
blank(x + 10, y + 10);
grixel(x, y + 10);
}
void block_32(int x, int y) {
pixel(x, y);
grixel(x + 10, y);
grixel(x + 10, y + 10);
grixel(x, y + 10);
}
void block_33(int x, int y) {
grixel(x, y);
pixel(x + 10, y);
grixel(x + 10, y + 10);
grixel(x, y + 10);
}
void block_34(int x, int y) {
grixel(x, y);
grixel(x + 10, y);
pixel(x + 10, y + 10);
grixel(x, y + 10);
}
void block_35(int x, int y) {
grixel(x, y);
grixel(x + 10, y);
grixel(x + 10, y + 10);
pixel(x, y + 10);
}
void block_36(int x, int y) {
pixel(x, y);
grixel(x + 10, y);
grixel(x + 10, y + 10);
pixel(x, y + 10);
}
void block_37(int x, int y) {
pixel(x, y);
pixel(x + 10, y);
grixel(x + 10, y + 10);
grixel(x, y + 10);
}
void block_38(int x, int y) {
grixel(x, y);
pixel(x + 10, y);
pixel(x + 10, y + 10);
grixel(x, y + 10);
}
void block_39(int x, int y) {
grixel(x, y);
grixel(x + 10, y);
pixel(x + 10, y + 10);
pixel(x, y + 10);
}
void block_40(int x, int y) {
pixel(x, y);
grixel(x + 10, y);
pixel(x + 10, y + 10);
pixel(x, y + 10);
}
void block_41(int x, int y) {
pixel(x, y);
pixel(x + 10, y);
grixel(x + 10, y + 10);
pixel(x, y + 10);
}
void block_42(int x, int y) {
pixel(x, y);
pixel(x + 10, y);
pixel(x + 10, y + 10);
grixel(x, y + 10);
}
void block_43(int x, int y) {
grixel(x, y);
pixel(x + 10, y);
pixel(x + 10, y + 10);
pixel(x, y + 10);
}
void block_44(int x, int y) {
pixel(x, y);
grixel(x + 10, y);
pixel(x + 10, y + 10);
grixel(x, y + 10);
}
void block_45(int x, int y) {
grixel(x, y);
pixel(x + 10, y);
grixel(x + 10, y + 10);
pixel(x, y + 10);
}