#include void setup() { M5.begin(); } void createGrid() { M5.Lcd.drawLine(0, 80, 320, 80, WHITE); M5.Lcd.drawLine(0, 160, 320, 160, WHITE); M5.Lcd.drawLine(106, 0, 106, 320, WHITE); M5.Lcd.drawLine(212, 0, 212, 320, WHITE); } void createCross(int coord_x, int coord_y) { int COORDS[3][3][4] = { {{30, 20, 70, 60}, {136, 20, 176, 60}, {242, 20, 282, 60}} , {{30, 100, 70, 140}, {136, 100, 176, 140}, {242, 100, 282, 140}} , {{30, 180, 70, 220}, {136, 180, 176, 220}, {242, 180, 282, 220}} }; M5.Lcd.drawLine(COORDS[coord_x][coord_y][0],COORDS[coord_x][coord_y][1],COORDS[coord_x][coord_y][2],COORDS[coord_x][coord_y][3], WHITE); M5.Lcd.drawLine(COORDS[coord_x][coord_y][0],COORDS[coord_x][coord_y][3],COORDS[coord_x][coord_y][2],COORDS[coord_x][coord_y][1], WHITE); } void createCircle(int coord_x, int coord_y) { int COORDS[3][3][4] = { {{30, 20, 70, 60}, {136, 20, 176, 60}, {242, 20, 282, 60}} , {{30, 100, 70, 140}, {136, 100, 176, 140}, {242, 100, 282, 140}} , {{30, 180, 70, 220}, {136, 180, 176, 220}, {242, 180, 282, 220}} }; M5.Lcd.drawCircle((COORDS[coord_x][coord_y][0] + COORDS[coord_x][coord_y][2]) / 2, (COORDS[coord_x][coord_y][1] + COORDS[coord_x][coord_y][3]) / 2, 20, WHITE); } void loop() { createGrid(); int x; int y; for (x = 0; x < 3; x++) { for (y = 0; y < 3; y++) { if ((rand() % 2) == 0) { createCross(x, y); delay(500); } else { createCircle(x, y); delay(500); } } } M5.Lcd.clear(); }