New Firmware and Python Script

This commit is contained in:
hodginsa 2018-02-13 20:32:00 -05:00
parent 582cbe8ea9
commit e1fbd998c5
5 changed files with 570 additions and 109 deletions

View File

@ -0,0 +1,201 @@
/*
Accerlerometer Pong for the PIXO Pixel.
Utilizes the Adafruit GFX Libraries as well as the DotStar Libraries.
This version is created to use with the MPU6050
Developed by Sean Hodgins and is licensed under GPL 3.0
*/
#include <Wire.h> // For I2C communication
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_DotStarMatrix.h>
#include <Adafruit_DotStar.h>
#include <ArduinoJson.h>
#include "I2Cdev.h"
#include "MPU6050.h"
MPU6050 mpu;
#define WIDTH 16 // Display width in pixels
#define HEIGHT 16 // Display height in pixels
#define MAX_FPS 45 // Maximum redraw rate, frames/second
#define SCALE 128
int ballx = 5 * SCALE;
int bally = 5 * SCALE;
int ballvx = 20;
int ballvy = 10;
int p1 = 6;
int p2 = 6;
int PW = 5;
int lasty = 0;
int curry = 0;
int p2a = 1;
int p2v = 0;
int p2loc = 256;
int p1score = 0;
int p2score = 0;
int difficulty = 0;
uint32_t prevTime = 0;
int16_t rax, ray, raz;
int16_t rgx, rgy, rgz;
#define DATAPIN 19
#define CLOCKPIN 18
#define BRIGHTNESS 30
Adafruit_DotStarMatrix pixo = Adafruit_DotStarMatrix(
16, 16, DATAPIN, CLOCKPIN,
DS_MATRIX_TOP + DS_MATRIX_LEFT +
DS_MATRIX_ROWS + DS_MATRIX_PROGRESSIVE,
DOTSTAR_BGR);
void setup(void) {
uint8_t i, j, bytes;
Serial.begin(115200);
#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
Wire.begin();
#elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE
Fastwire::setup(400, true);
#endif
Serial.println("Initializing I2C devices...");
mpu.initialize();
Serial.println("Testing device connections...");
Serial.println(mpu.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
pixo.begin();
pixo.setBrightness(BRIGHTNESS);
}
void loop() {
uint32_t t;
while (((t = micros()) - prevTime) < (1000000L / MAX_FPS));
prevTime = t;
// Read accelerometer...
mpu.getMotion6(&rax, &ray, &raz, &rgx, &rgy, &rgz);
randomSeed(A7);
ballx = ballx + ballvx; //Move Ball
bally = bally + ballvy;
curry = (0.90 * lasty) + (0.1 * ray); //Filter Accelerometer data for user paddle
lasty = curry;
p1 = map(curry, -4000, 4000, 0, (16 - PW) * SCALE);
int p1s = p1 / SCALE;
p1s = constrain(p1s, 1, 16 - PW);
p2v = constrain(p2v, -25, 25);
p2loc = p2loc + p2v;
p2 = p2loc / SCALE;
p2 = constrain(p2, 1, 16 - PW);
int bys = bally / SCALE;
if (ballx > (14 * SCALE)) {
if (bys >= p2 && bys <= (p2 + PW)) {
ballvx = (ballvx) * -1.1;
ballvx = constrain(ballvx, -40, 40);
difficulty++;
paddleDeflect(p2loc, bally, PW);
}
if (ballx > (15 * SCALE) + 50) {
if (bys < p2 || bys > (p2 + PW)) {
delay(2000);
p1score++;
resetGame();
}
}
}
if (ballx < SCALE) {
if (bys >= p1s && bys <= (p1s + PW)) {
ballvx = (ballvx ) * -1.1;
ballvx = constrain(ballvx, -40, 40);
difficulty++;
paddleDeflect(p1, bally, PW);
}
if (ballx < 10) {
if (bys < p1s || bys > (p1s + PW)) {
delay(2000);
p2score++;
resetGame();
}
}
}
if (bally > (15 * SCALE) || bally < SCALE + 10) {
ballvy = ballvy * -1;
}
if ((p2loc + ((PW / 2) * SCALE)) < bally) {
p2v = p2v + p2a;
}
if ((p2loc + ((PW / 2) * SCALE)) > bally) {
p2v = p2v - p2a;
}
//SEND TO DISPLAY
pixo.fillScreen(0);
pixo.drawFastHLine(0, 0, 16, pixo.Color(100, 0, 0));
pixo.drawFastHLine(5, 0, 6, pixo.Color(100, 100, 0));
if (p2score > 0) {
pixo.drawFastHLine(17, 0, -p2score, pixo.Color(0, 200, 0));
}
if (p1score > 0) {
pixo.drawFastHLine(0, 0, p1score, pixo.Color(0, 200, 0));
}
pixo.drawFastVLine(0, p1s, PW, pixo.Color(200, 255, 255));
pixo.drawFastVLine(15, p2, PW, pixo.Color(200, 255, 255));
pixo.drawPixel((ballx / SCALE), (bally / SCALE), pixo.Color(200, 255, 255));
pixo.show();
//GAME HAS ENDED
if (p1score == 5 || p2score == 5) {
while (1);
}
}
void paddleDeflect(int ploc, int bloc, int pwidth) {
int err = bloc - (ploc + (pwidth * SCALE) / 2);
int diff = difficulty / 2;
//Serial.println(diff);
err = map(err, -300, 300, -10 - diff, 10 + diff);
err = constrain(err, -25, 25);
ballvy = err;
}
void resetGame() {
ballx = 5 * SCALE;
bally = 5 * SCALE;
ballvx = 20;
ballvy = 10;
p1 = 6;
p2 = 6;
p2a = 1;
p2v = 0;
p2loc = 256;
}

View File

@ -0,0 +1,290 @@
//--------------------------------------------------------------------------
// This code is modified from the following Adafruit tutorial: https://learn.adafruit.com/animated-led-sand/overview
/*
This code is modified from the following Adafruit tutorial: https://learn.adafruit.com/animated-led-sand/overview
This program shows an upvote arrow 3 times then on the 4th it breaks into particles that will move based on accelerometer readings.
*/
#include <Wire.h> // For I2C communication
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_DotStarMatrix.h>
#include <Adafruit_DotStar.h>
#include <ArduinoJson.h>
#include "I2Cdev.h"
#include "MPU6050.h"
MPU6050 mpu;
uint8_t upvote[256][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}};
//int N_GRAINS = 0;
#define N_GRAINS 114 // Number of grains of sand
#define WIDTH 16 // Display width in pixels
#define HEIGHT 16 // Display height in pixels
#define MAX_FPS 45
#define SCALE 128
#define WBOUNCE -2
#define BBOUNCE -2
#define MAX_X (WIDTH * SCALE - 1)
#define MAX_Y (HEIGHT * SCALE - 1)
struct Grain {
int16_t x, y;
int16_t vx, vy;
} grain[N_GRAINS];
int16_t rax, ray, raz;
int16_t rgx, rgy, rgz;
uint32_t prevTime = 0;
uint8_t backbuffer = 0,
img[WIDTH * HEIGHT];
#define DATAPIN 19
#define CLOCKPIN 18
#define SHIFTDELAY 30
#define BRIGHTNESS 20
Adafruit_DotStarMatrix matrix = Adafruit_DotStarMatrix(
16, 16, DATAPIN, CLOCKPIN,
DS_MATRIX_TOP + DS_MATRIX_LEFT +
DS_MATRIX_ROWS + DS_MATRIX_PROGRESSIVE,
DOTSTAR_BGR);
void setup(void) {
uint8_t i, j, bytes;
Serial.begin(115200);
#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
Wire.begin();
#elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE
Fastwire::setup(400, true);
#endif
Serial.println("Initializing I2C devices...");
mpu.initialize();
Serial.println("Testing device connections...");
Serial.println(mpu.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");
matrix.begin();
matrix.setBrightness(BRIGHTNESS);
notification();
notification();
notification();
notificationhalf();
memset(img, 0, sizeof(img)); // Clear the img[] array
int grain_num = 0;
for (int x = 0; x < 256; x++) {
if (upvote[x][0] > 0) {
int NX = x % 16;
int NY = x / 16;
grain[grain_num].x = (NX * SCALE); // Assign random position within
grain[grain_num].y = (NY * SCALE);
grain_num++;
}
}
for (i = 0; i < N_GRAINS; i++) { // For each sand grain...
img[(grain[i].y / SCALE) * WIDTH + (grain[i].x / SCALE)] = 255; // Mark it
grain[i].vx = grain[i].vy = 0; // Initial velocity is zero
}
}
void loop() {
uint32_t t;
while (((t = micros()) - prevTime) < (1000000L / MAX_FPS));
prevTime = t;
backbuffer = 1 - backbuffer; // Swap front/back buffer index
// Read accelerometer...
mpu.getMotion6(&rax, &ray, &raz, &rgx, &rgy, &rgz);
randomSeed(A7);
int16_t ax = -rax / SCALE, // Transform accelerometer axes
ay = ray / SCALE, // to grain coordinate space
az = abs(raz) / 128; // Random motion factor
az = (az >= 3) ? 1 : 4 - az; // Clip & invert
ax -= az; // Subtract motion factor from X, Y
ay -= az;
long az2 = az * 2 + 1; // Range of random motion to add back in
int32_t v2; // Velocity squared
float v; // Absolute velocity
for (int i = 0; i < N_GRAINS; i++) {
grain[i].vx += ax + random(az2); // A little randomness makes
grain[i].vy += ay + random(az2); // tall stacks topple better!
v2 = (int32_t)grain[i].vx * grain[i].vx + (int32_t)grain[i].vy * grain[i].vy;
if (v2 > 65536) { // If v^2 > 65536, then v > SCALE
v = sqrt((float)v2); // Velocity vector magnitude
grain[i].vx = (int)(SCALE * (float)grain[i].vx / v); // Maintain heading
grain[i].vy = (int)(SCALE * (float)grain[i].vy / v); // Limit magnitude
}
}
uint8_t i, bytes, oldidx, newidx, delta;
int16_t newx, newy;
// const uint8_t *ptr = remap;
randomSeed(A7);
int list[N_GRAINS];
for (int num = 0; num < N_GRAINS; num++) {
list[num] = num;
}
for (int a = 0; a < N_GRAINS; a++)
{
int r = random(a, (N_GRAINS));
int temp = list[a];
list[a] = list[r];
list[r] = temp;
}
for (int num = 0; num < N_GRAINS; num++) {
Serial.print(list[num]);
Serial.print(", ");
}
Serial.println(",,Done.");
for (i = 0; i < N_GRAINS; i++) {
newx = grain[list[i]].x + grain[list[i]].vx;
newy = grain[list[i]].y + grain[list[i]].vy;
if (newx > MAX_X) {
newx = MAX_X;
grain[list[i]].vx /= WBOUNCE;
} else if (newx < 0) {
newx = 0;
grain[list[i]].vx /= WBOUNCE;
}
if (newy > MAX_Y) {
newy = MAX_Y;
grain[list[i]].vy /= WBOUNCE;
} else if (newy < 0) {
newy = 0;
grain[list[i]].vy /= WBOUNCE;
}
oldidx = (grain[list[i]].y / SCALE) * WIDTH + (grain[list[i]].x / SCALE);
newidx = (newy / SCALE) * WIDTH + (newx / SCALE);
if ((oldidx != newidx) &&
img[newidx]) {
delta = abs(newidx - oldidx);
if (delta == 1) {
newx = grain[list[i]].x;
grain[list[i]].vx /= BBOUNCE;
newidx = oldidx;
} else if (delta == WIDTH) {
newy = grain[list[i]].y;
grain[list[i]].vy /= BBOUNCE;
newidx = oldidx;
} else {
if ((abs(grain[list[i]].vx) - abs(grain[list[i]].vy)) >= 0) {
newidx = (grain[list[i]].y / SCALE) * WIDTH + (newx / SCALE);
if (!img[newidx]) {
newy = grain[list[i]].y;
grain[list[i]].vy /= BBOUNCE;
} else {
newidx = (newy / SCALE) * WIDTH + (grain[list[i]].x / SCALE);
if (!img[newidx]) {
newx = grain[list[i]].x;
grain[list[i]].vx /= BBOUNCE;
} else {
newx = grain[list[i]].x;
newy = grain[list[i]].y;
grain[list[i]].vx /= BBOUNCE;
grain[list[i]].vy /= BBOUNCE;
newidx = oldidx;
}
}
} else {
newidx = (newy / SCALE) * WIDTH + (grain[list[i]].x / SCALE);
if (!img[newidx]) {
newx = grain[list[i]].x;
grain[list[i]].vy /= BBOUNCE;
} else {
newidx = (grain[list[i]].y / SCALE) * WIDTH + (newx / SCALE);
if (!img[newidx]) {
newy = grain[list[i]].y;
grain[list[i]].vy /= BBOUNCE;
} else {
newx = grain[list[i]].x;
newy = grain[list[i]].y;
grain[list[i]].vx /= BBOUNCE;
grain[list[i]].vy /= BBOUNCE;
newidx = oldidx;
}
}
}
}
}
grain[list[i]].x = newx;
grain[list[i]].y = newy;
img[oldidx] = 0;
img[newidx] = 255;
}
matrix.fillScreen(0);
for (int i = 0; i < N_GRAINS; i++) {
int x = grain[i].x / SCALE;
int y = grain[i].y / SCALE;
matrix.drawPixel(x, y, matrix.Color(205, 110, 0));
}
matrix.show();
}
void notificationhalf() {
for (int j = 15; j >= 0; j--) {
matrix.fillScreen(0);
for (int i = 0; i < 256; i++) {
matrix.setPixelColor(i + (j * 16), upvote[i][0], upvote[i][1], upvote[i][2]);
}
matrix.show();
delay(15);
}
delay(100);
}
void notification() {
for (int j = 15; j >= 0; j--) {
matrix.fillScreen(0);
for (int i = 0; i < 256; i++) {
matrix.setPixelColor(i + (j * 16), upvote[i][0], upvote[i][1], upvote[i][2]);
}
matrix.show();
delay(15);
}
delay(700);
for (int j = 0; j >= -16; j--) {
matrix.fillScreen(0);
for (int i = 0; i < 256; i++) {
matrix.setPixelColor(i + (j * 16), upvote[i][0], upvote[i][1], upvote[i][2]);
}
matrix.show();
delay(15);
}
delay(500);
matrix.fillScreen(0);
matrix.show();
}

View File

@ -1,5 +1,11 @@
// Adafruit_DotStarMatrix example for single DotStar LED matrix. /*
// Scrolls 'Adafruit' across the matrix. PIXO Pixel WIP Test Program
This program is a work in progress but will let you test your LED matrix if it is working or not.
Try out the various Demos and images in the image.h file.
Many libraries from Adafruit are needed and can be seen below.
*/
#include <SPI.h> #include <SPI.h>
#include <Adafruit_GFX.h> #include <Adafruit_GFX.h>
@ -11,155 +17,100 @@
#define DATAPIN 19 #define DATAPIN 19
#define CLOCKPIN 18 #define CLOCKPIN 18
int mario[256][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {112, 104, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {248, 171, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {248, 171, 0}, {112, 104, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {216, 0, 0}, {112, 104, 0}, {112, 104, 0}, {216, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {216, 0, 0}, {112, 104, 0}, {112, 104, 0}, {216, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {248, 171, 0}, {248, 171, 0}, {112, 104, 0}, {216, 0, 0}, {248, 171, 0}, {216, 0, 0}, {216, 0, 0}, {248, 171, 0}, {216, 0, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {248, 171, 0}, {248, 171, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {0, 0, 0}, {0, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}};
#define SHIFTDELAY 100
#define BRIGHTNESS 50 #define BRIGHTNESS 30
// MATRIX DECLARATION: // MATRIX DECLARATION:
// Parameter 1 = width of DotStar matrix Adafruit_DotStarMatrix pixo = Adafruit_DotStarMatrix(
// Parameter 2 = height of matrix
// Parameter 3 = pin number (most are valid)
// Parameter 4 = matrix layout flags, add together as needed:
// DS_MATRIX_TOP, DS_MATRIX_BOTTOM, DS_MATRIX_LEFT, DS_MATRIX_RIGHT:
// Position of the FIRST LED in the matrix; pick two, e.g.
// DS_MATRIX_TOP + DS_MATRIX_LEFT for the top-left corner.
// DS_MATRIX_ROWS, DS_MATRIX_COLUMNS: LEDs are arranged in horizontal
// rows or in vertical columns, respectively; pick one or the other.
// DS_MATRIX_PROGRESSIVE, DS_MATRIX_ZIGZAG: all rows/columns proceed
// in the same order, or alternate lines reverse direction; pick one.
// See example below for these values in action.
// Parameter 5 = pixel type:
// DOTSTAR_BRG Pixels are wired for BRG bitstream (most DotStar items)
// DOTSTAR_GBR Pixels are wired for GBR bitstream (some older DotStars)
// DOTSTAR_BGR Pixels are wired for BGR bitstream (APA102-2020 DotStars)
Adafruit_DotStarMatrix matrix = Adafruit_DotStarMatrix(
16, 16, DATAPIN, CLOCKPIN, 16, 16, DATAPIN, CLOCKPIN,
DS_MATRIX_BOTTOM + DS_MATRIX_LEFT + DS_MATRIX_BOTTOM + DS_MATRIX_LEFT +
DS_MATRIX_ROWS + DS_MATRIX_PROGRESSIVE, DS_MATRIX_ROWS + DS_MATRIX_PROGRESSIVE,
DOTSTAR_BGR); DOTSTAR_BGR);
const uint16_t primaryColors[] = { const uint16_t primaryColors[] = {
matrix.Color(100, 0, 0), matrix.Color(0, 100, 0), matrix.Color(0, 0, 100) pixo.Color(100, 0, 0), pixo.Color(0, 100, 0), pixo.Color(0, 0, 100)
}; };
const uint16_t adaColors[] = {
matrix.Color(255, 0, 0), //A red
matrix.Color(255, 125, 0), //D orange
matrix.Color(200, 255, 0), //A yellowish
matrix.Color(0, 255, 0), //F green
matrix.Color(0, 255, 225), //R blue
matrix.Color(150, 0, 255), //U purple
matrix.Color(255, 0, 220), //I pink
matrix.Color(255, 65, 0), //T reddish
matrix.Color(255, 220, 0) //! orange/yellow
};
char adafruit[] = "ADAFRUIT!";
void setup() { void setup() {
Serial.begin(115200); Serial.begin(115200);
// uncomment to have wait // uncomment to have wait
//while (!Serial) delay(500); //while (!Serial) delay(500);
matrix.begin(); pixo.begin();
pixo.setBrightness(BRIGHTNESS);
for (byte i = 0; i < 3; i++) { for (byte i = 0; i < 3; i++) {
matrix.fillScreen(primaryColors[i]); pixo.fillScreen(primaryColors[i]);
matrix.show(); pixo.show();
delay(500); delay(500);
matrix.fillScreen(0); pixo.fillScreen(0);
matrix.show(); pixo.show();
} }
} }
int x = matrix.width(); int x = pixo.width();
int pass = 0; int pass = 0;
void loop() { void loop() {
matrix.setBrightness(BRIGHTNESS); pixo.setBrightness(BRIGHTNESS);
while(1){ //while(1){
// pongDemo(); //SinglePix();
SinglePix();
// RandomPix(); // RandomPix();
//} //}
//notification(); notification();
}
void SinglePix(){ }
for (int x = 0; x<256;x++){
void SinglePix() {
matrix.setPixelColor(x, 255, 255, 255); for (int x = 0; x < 256; x++) {
pixo.setPixelColor(x, 255, 255, 255);
delay(10); delay(10);
matrix.show(); pixo.show();
delay(200); delay(200);
} }
} }
void RandomPix(){ void RandomPix() {
randomSeed(A1); randomSeed(A1);
int x = random(0,256); int x = random(0, 256);
matrix.fillScreen(0); pixo.fillScreen(0);
matrix.setPixelColor(x, 255, 255, 255); pixo.setPixelColor(x, 255, 255, 255);
matrix.show(); pixo.show();
delay(50); delay(50);
} }
void notification(){ void notification() {
for (int j = 15; j>=0;j--){ for (int j = 15; j >= 0; j--) {
matrix.fillScreen(0); pixo.fillScreen(0);
for (int i = 0; i<256; i++) { for (int i = 0; i < 256; i++) {
matrix.setPixelColor(i+(j*16), upvote[i][0], upvote[i][1], upvote[i][2]); pixo.setPixelColor(i + (j * 16), mario[i][0], mario[i][1], mario[i][2]);
//Serial.println(i); //Serial.println(i);
//delay(1); //delay(1);
} }
matrix.show(); pixo.show();
delay(15); delay(15);
} }
delay(1000); delay(1000);
for (int j = 0; j>=-16;j--){ for (int j = 0; j >= -16; j--) {
matrix.fillScreen(0); pixo.fillScreen(0);
for (int i = 0; i<256; i++) { for (int i = 0; i < 256; i++) {
matrix.setPixelColor(i+(j*16), upvote[i][0], upvote[i][1], upvote[i][2]); pixo.setPixelColor(i + (j * 16), mario[i][0], mario[i][1], mario[i][2]);
//Serial.println(i); }
//delay(1); pixo.show();
} delay(15);
matrix.show();
delay(15);
} }
delay(1000); delay(1000);
matrix.fillScreen(0); pixo.fillScreen(0);
matrix.show(); pixo.show();
} }
float ballx = 5; float ballx = 5;
float bally = 5; float bally = 5;
float paddle1, paddle2 = 3; float paddle1, paddle2 = 3;
float ballvx = -0.3; float ballvx = -0.3;
float ballvy = 0.1; float ballvy = 0.1;
void pongDemo(){
matrix.fillScreen(0);
matrix.drawFastVLine(0, (int)paddle1, 6, (200,200,200));
matrix.drawFastVLine(15, (int)paddle2, 6, (200,200,200));
matrix.drawPixel((int)ballx,(int)bally,(200,200,200));
if (ballx > 14 || ballx<1){
ballvx = ballvx *-1;
}
if (bally > 14 || bally<0){
ballvy = ballvy * -1;
}
paddle1 = bally-3;
paddle2 = bally-3;
ballx = ballx + ballvx;
bally = bally + ballvy;
Serial.print(ballx);
Serial.print(",");
Serial.println(bally);
matrix.show();
delay(30);
}

View File

@ -3,5 +3,5 @@ int twitter[256][3] = {{40, 170, 225}, {40, 170, 225}, {40, 170, 225}, {40, 170,
int ig[256][3] = {{0, 0, 0}, {182, 45, 118}, {190, 52, 133}, {177, 58, 155}, {176, 70, 183}, {166, 79, 206}, {159, 82, 215}, {155, 79, 212}, {151, 76, 208}, {148, 73, 203}, {144, 70, 199}, {140, 67, 194}, {128, 59, 178}, {125, 57, 176}, {118, 54, 163}, {0, 0, 0}, {209, 27, 81}, {204, 35, 93}, {217, 48, 127}, {184, 51, 134}, {169, 59, 155}, {158, 68, 177}, {148, 77, 200}, {143, 76, 200}, {141, 72, 193}, {138, 69, 189}, {133, 66, 184}, {129, 62, 180}, {129, 61, 179}, {142, 66, 199}, {121, 56, 171}, {118, 54, 163}, {221, 21, 56}, {241, 31, 82}, {206, 36, 94}, {184, 49, 120}, {197, 50, 125}, {184, 55, 144}, {169, 61, 161}, {155, 72, 185}, {147, 77, 201}, {144, 75, 195}, {143, 71, 196}, {142, 71, 198}, {131, 65, 172}, {129, 61, 178}, {142, 66, 198}, {121, 56, 170}, {236, 13, 35}, {232, 21, 56}, {213, 24, 65}, {202, 35, 92}, {215, 48, 127}, {197, 56, 146}, {184, 64, 167}, {176, 72, 190}, {165, 81, 211}, {155, 81, 214}, {153, 78, 210}, {145, 73, 199}, {137, 68, 189}, {127, 63, 178}, {129, 62, 181}, {128, 60, 179}, {255, 6, 18}, {235, 10, 28}, {213, 26, 67}, {239, 31, 81}, {203, 35, 93}, {194, 42, 112}, {196, 53, 138}, {175, 57, 151}, {163, 66, 171}, {162, 78, 202}, {148, 77, 202}, {133, 69, 185}, {138, 69, 190}, {137, 68, 188}, {128, 63, 179}, {141, 67, 195}, {255, 8, 3}, {246, 3, 8}, {226, 18, 46}, {245, 21, 56}, {216, 28, 75}, {210, 36, 95}, {192, 46, 118}, {171, 53, 137}, {171, 62, 161}, {157, 71, 180}, {155, 76, 198}, {148, 77, 204}, {150, 76, 205}, {139, 71, 192}, {136, 65, 184}, {143, 70, 198}, {255, 33, 1}, {246, 15, 1}, {241, 8, 24}, {253, 13, 34}, {234, 22, 59}, {216, 28, 71}, {199, 34, 89}, {205, 43, 113}, {190, 53, 138}, {176, 54, 142}, {151, 72, 176}, {155, 75, 196}, {159, 83, 219}, {143, 72, 196}, {137, 68, 186}, {147, 73, 202}, {255, 64, 1}, {246, 47, 3}, {246, 0, 2}, {255, 6, 15}, {235, 13, 35}, {216, 23, 54}, {216, 29, 75}, {217, 38, 100}, {197, 44, 116}, {206, 60, 155}, {179, 55, 137}, {158, 68, 175}, {177, 85, 222}, {145, 77, 202}, {141, 72, 191}, {151, 76, 207}, {255, 94, 1}, {246, 75, 3}, {244, 19, 2}, {255, 12, 2}, {245, 1, 9}, {227, 20, 48}, {242, 21, 56}, {212, 27, 74}, {205, 35, 91}, {211, 48, 126}, {186, 48, 126}, {170, 62, 162}, {191, 77, 202}, {153, 73, 189}, {144, 74, 199}, {155, 79, 211}, {255, 125, 1}, {248, 103, 3}, {244, 51, 2}, {255, 40, 0}, {246, 7, 1}, {231, 7, 23}, {237, 13, 33}, {242, 21, 56}, {222, 28, 74}, {231, 40, 105}, {196, 40, 105}, {178, 53, 137}, {201, 67, 177}, {165, 63, 165}, {146, 77, 202}, {158, 82, 215}, {255, 156, 1}, {246, 131, 3}, {244, 78, 2}, {255, 71, 0}, {255, 32, 1}, {245, 14, 0}, {231, 9, 32}, {244, 14, 37}, {232, 22, 60}, {208, 29, 77}, {195, 37, 97}, {199, 43, 114}, {197, 56, 147}, {176, 56, 146}, {155, 72, 182}, {165, 79, 205}, {255, 187, 1}, {246, 155, 1}, {245, 102, 6}, {255, 105, 0}, {246, 59, 0}, {250, 32, 1}, {247, 11, 0}, {235, 0, 4}, {233, 15, 31}, {227, 18, 48}, {219, 29, 76}, {207, 35, 94}, {211, 48, 127}, {187, 48, 124}, {166, 62, 163}, {179, 71, 185}, {249, 201, 1}, {249, 182, 1}, {234, 142, 20}, {247, 117, 1}, {255, 107, 0}, {255, 70, 0}, {255, 40, 0}, {255, 11, 2}, {255, 6, 15}, {255, 15, 40}, {247, 21, 57}, {236, 30, 78}, {212, 37, 97}, {187, 42, 110}, {181, 52, 136}, {180, 59, 154}, {245, 212, 4}, {255, 225, 0}, {247, 183, 3}, {236, 132, 18}, {252, 115, 4}, {249, 84, 1}, {244, 54, 1}, {246, 24, 0}, {246, 0, 1}, {242, 5, 19}, {234, 15, 41}, {229, 25, 68}, {202, 32, 78}, {203, 35, 94}, {219, 49, 129}, {183, 50, 129}, {245, 218, 18}, {247, 214, 2}, {255, 224, 0}, {247, 181, 1}, {244, 159, 2}, {247, 135, 5}, {244, 107, 2}, {246, 79, 2}, {244, 49, 2}, {246, 16, 0}, {246, 2, 5}, {235, 9, 24}, {227, 19, 52}, {243, 32, 83}, {206, 36, 95}, {196, 39, 107}, {0, 0, 0}, {245, 217, 18}, {250, 217, 4}, {249, 201, 1}, {255, 188, 2}, {255, 155, 1}, {255, 124, 1}, {255, 94, 1}, {255, 64, 1}, {255, 33, 1}, {255, 8, 3}, {255, 7, 19}, {238, 14, 38}, {228, 21, 57}, {205, 29, 58}, {0, 0, 0}}; int ig[256][3] = {{0, 0, 0}, {182, 45, 118}, {190, 52, 133}, {177, 58, 155}, {176, 70, 183}, {166, 79, 206}, {159, 82, 215}, {155, 79, 212}, {151, 76, 208}, {148, 73, 203}, {144, 70, 199}, {140, 67, 194}, {128, 59, 178}, {125, 57, 176}, {118, 54, 163}, {0, 0, 0}, {209, 27, 81}, {204, 35, 93}, {217, 48, 127}, {184, 51, 134}, {169, 59, 155}, {158, 68, 177}, {148, 77, 200}, {143, 76, 200}, {141, 72, 193}, {138, 69, 189}, {133, 66, 184}, {129, 62, 180}, {129, 61, 179}, {142, 66, 199}, {121, 56, 171}, {118, 54, 163}, {221, 21, 56}, {241, 31, 82}, {206, 36, 94}, {184, 49, 120}, {197, 50, 125}, {184, 55, 144}, {169, 61, 161}, {155, 72, 185}, {147, 77, 201}, {144, 75, 195}, {143, 71, 196}, {142, 71, 198}, {131, 65, 172}, {129, 61, 178}, {142, 66, 198}, {121, 56, 170}, {236, 13, 35}, {232, 21, 56}, {213, 24, 65}, {202, 35, 92}, {215, 48, 127}, {197, 56, 146}, {184, 64, 167}, {176, 72, 190}, {165, 81, 211}, {155, 81, 214}, {153, 78, 210}, {145, 73, 199}, {137, 68, 189}, {127, 63, 178}, {129, 62, 181}, {128, 60, 179}, {255, 6, 18}, {235, 10, 28}, {213, 26, 67}, {239, 31, 81}, {203, 35, 93}, {194, 42, 112}, {196, 53, 138}, {175, 57, 151}, {163, 66, 171}, {162, 78, 202}, {148, 77, 202}, {133, 69, 185}, {138, 69, 190}, {137, 68, 188}, {128, 63, 179}, {141, 67, 195}, {255, 8, 3}, {246, 3, 8}, {226, 18, 46}, {245, 21, 56}, {216, 28, 75}, {210, 36, 95}, {192, 46, 118}, {171, 53, 137}, {171, 62, 161}, {157, 71, 180}, {155, 76, 198}, {148, 77, 204}, {150, 76, 205}, {139, 71, 192}, {136, 65, 184}, {143, 70, 198}, {255, 33, 1}, {246, 15, 1}, {241, 8, 24}, {253, 13, 34}, {234, 22, 59}, {216, 28, 71}, {199, 34, 89}, {205, 43, 113}, {190, 53, 138}, {176, 54, 142}, {151, 72, 176}, {155, 75, 196}, {159, 83, 219}, {143, 72, 196}, {137, 68, 186}, {147, 73, 202}, {255, 64, 1}, {246, 47, 3}, {246, 0, 2}, {255, 6, 15}, {235, 13, 35}, {216, 23, 54}, {216, 29, 75}, {217, 38, 100}, {197, 44, 116}, {206, 60, 155}, {179, 55, 137}, {158, 68, 175}, {177, 85, 222}, {145, 77, 202}, {141, 72, 191}, {151, 76, 207}, {255, 94, 1}, {246, 75, 3}, {244, 19, 2}, {255, 12, 2}, {245, 1, 9}, {227, 20, 48}, {242, 21, 56}, {212, 27, 74}, {205, 35, 91}, {211, 48, 126}, {186, 48, 126}, {170, 62, 162}, {191, 77, 202}, {153, 73, 189}, {144, 74, 199}, {155, 79, 211}, {255, 125, 1}, {248, 103, 3}, {244, 51, 2}, {255, 40, 0}, {246, 7, 1}, {231, 7, 23}, {237, 13, 33}, {242, 21, 56}, {222, 28, 74}, {231, 40, 105}, {196, 40, 105}, {178, 53, 137}, {201, 67, 177}, {165, 63, 165}, {146, 77, 202}, {158, 82, 215}, {255, 156, 1}, {246, 131, 3}, {244, 78, 2}, {255, 71, 0}, {255, 32, 1}, {245, 14, 0}, {231, 9, 32}, {244, 14, 37}, {232, 22, 60}, {208, 29, 77}, {195, 37, 97}, {199, 43, 114}, {197, 56, 147}, {176, 56, 146}, {155, 72, 182}, {165, 79, 205}, {255, 187, 1}, {246, 155, 1}, {245, 102, 6}, {255, 105, 0}, {246, 59, 0}, {250, 32, 1}, {247, 11, 0}, {235, 0, 4}, {233, 15, 31}, {227, 18, 48}, {219, 29, 76}, {207, 35, 94}, {211, 48, 127}, {187, 48, 124}, {166, 62, 163}, {179, 71, 185}, {249, 201, 1}, {249, 182, 1}, {234, 142, 20}, {247, 117, 1}, {255, 107, 0}, {255, 70, 0}, {255, 40, 0}, {255, 11, 2}, {255, 6, 15}, {255, 15, 40}, {247, 21, 57}, {236, 30, 78}, {212, 37, 97}, {187, 42, 110}, {181, 52, 136}, {180, 59, 154}, {245, 212, 4}, {255, 225, 0}, {247, 183, 3}, {236, 132, 18}, {252, 115, 4}, {249, 84, 1}, {244, 54, 1}, {246, 24, 0}, {246, 0, 1}, {242, 5, 19}, {234, 15, 41}, {229, 25, 68}, {202, 32, 78}, {203, 35, 94}, {219, 49, 129}, {183, 50, 129}, {245, 218, 18}, {247, 214, 2}, {255, 224, 0}, {247, 181, 1}, {244, 159, 2}, {247, 135, 5}, {244, 107, 2}, {246, 79, 2}, {244, 49, 2}, {246, 16, 0}, {246, 2, 5}, {235, 9, 24}, {227, 19, 52}, {243, 32, 83}, {206, 36, 95}, {196, 39, 107}, {0, 0, 0}, {245, 217, 18}, {250, 217, 4}, {249, 201, 1}, {255, 188, 2}, {255, 155, 1}, {255, 124, 1}, {255, 94, 1}, {255, 64, 1}, {255, 33, 1}, {255, 8, 3}, {255, 7, 19}, {238, 14, 38}, {228, 21, 57}, {205, 29, 58}, {0, 0, 0}};
int upvote[256][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {31, 8, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {31, 8, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {31, 8, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {31, 8, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {31, 8, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {31, 8, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {31, 8, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}}; int upvote[256][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {31, 8, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {31, 8, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {31, 8, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {31, 8, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {31, 8, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {31, 8, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {31, 8, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {255, 68, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}};
int sh[256][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 1, 1}, {2, 2, 2}, {3, 3, 3}, {3, 3, 3}, {2, 2, 2}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {3, 3, 3}, {3, 3, 3}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {22, 22, 22}, {58, 58, 58}, {78, 78, 78}, {86, 86, 86}, {69, 69, 69}, {5, 5, 5}, {1, 1, 1}, {3, 3, 3}, {0, 0, 0}, {2, 2, 2}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {86, 86, 86}, {154, 154, 154}, {114, 114, 114}, {73, 73, 73}, {49, 49, 49}, {40, 40, 40}, {39, 39, 39}, {6, 6, 6}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {93, 93, 93}, {163, 163, 163}, {118, 118, 118}, {65, 65, 65}, {17, 17, 17}, {0, 0, 0}, {0, 0, 0}, {1, 1, 1}, {14, 14, 14}, {52, 52, 52}, {0, 0, 0}, {35, 35, 35}, {0, 0, 0}, {2, 2, 2}, {3, 3, 3}, {2, 2, 2}, {0, 0, 0}, {0, 0, 0}, {30, 30, 30}, {74, 74, 74}, {114, 114, 114}, {122, 122, 122}, {54, 54, 54}, {0, 0, 0}, {21, 21, 21}, {211, 211, 211}, {4, 4, 4}, {174, 174, 174}, {48, 48, 48}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {3, 3, 3}, {2, 2, 2}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {32, 32, 32}, {131, 131, 131}, {108, 108, 108}, {0, 0, 0}, {183, 183, 183}, {38, 38, 38}, {136, 136, 136}, {130, 130, 130}, {41, 41, 41}, {75, 75, 75}, {78, 78, 78}, {0, 0, 0}, {0, 0, 0}, {2, 2, 2}, {0, 0, 0}, {0, 0, 0}, {20, 20, 20}, {51, 51, 51}, {199, 199, 199}, {152, 152, 152}, {199, 199, 199}, {116, 116, 116}, {110, 110, 110}, {193, 193, 193}, {51, 51, 51}, {46, 46, 46}, {25, 25, 25}, {0, 0, 0}, {1, 1, 1}, {0, 0, 0}, {61, 61, 61}, {154, 154, 154}, {123, 123, 123}, {76, 76, 76}, {53, 53, 53}, {173, 173, 173}, {155, 155, 155}, {123, 123, 123}, {0, 0, 0}, {181, 181, 181}, {4, 4, 4}, {0, 0, 0}, {0, 0, 0}, {2, 2, 2}, {0, 0, 0}, {49, 49, 49}, {209, 209, 209}, {32, 32, 32}, {0, 0, 0}, {0, 0, 0}, {117, 117, 117}, {126, 126, 126}, {53, 53, 53}, {135, 135, 135}, {1, 1, 1}, {134, 134, 134}, {63, 63, 63}, {2, 2, 2}, {3, 3, 3}, {1, 1, 1}, {1, 1, 1}, {24, 24, 24}, {124, 124, 124}, {87, 87, 87}, {75, 75, 75}, {126, 126, 126}, {143, 143, 143}, {11, 11, 11}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {53, 53, 53}, {126, 126, 126}, {0, 0, 0}, {3, 3, 3}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {25, 25, 25}, {35, 35, 35}, {24, 24, 24}, {0, 0, 0}, {0, 0, 0}, {2, 2, 2}, {3, 3, 3}, {0, 0, 0}, {0, 0, 0}, {35, 35, 35}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 1, 1}, {2, 2, 2}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {3, 3, 3}, {1, 1, 1}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 1, 1}, {1, 1, 1}, {1, 1, 1}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 1, 1}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}}; int sh[256][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 1, 1}, {2, 2, 2}, {3, 3, 3}, {3, 3, 3}, {2, 2, 2}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {3, 3, 3}, {3, 3, 3}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {22, 22, 22}, {58, 58, 58}, {78, 78, 78}, {86, 86, 86}, {69, 69, 69}, {5, 5, 5}, {1, 1, 1}, {3, 3, 3}, {0, 0, 0}, {2, 2, 2}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {86, 86, 86}, {154, 154, 154}, {114, 114, 114}, {73, 73, 73}, {49, 49, 49}, {40, 40, 40}, {39, 39, 39}, {6, 6, 6}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {93, 93, 93}, {163, 163, 163}, {118, 118, 118}, {65, 65, 65}, {17, 17, 17}, {0, 0, 0}, {0, 0, 0}, {1, 1, 1}, {14, 14, 14}, {52, 52, 52}, {0, 0, 0}, {35, 35, 35}, {0, 0, 0}, {2, 2, 2}, {3, 3, 3}, {2, 2, 2}, {0, 0, 0}, {0, 0, 0}, {30, 30, 30}, {74, 74, 74}, {114, 114, 114}, {122, 122, 122}, {54, 54, 54}, {0, 0, 0}, {21, 21, 21}, {211, 211, 211}, {4, 4, 4}, {174, 174, 174}, {48, 48, 48}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {3, 3, 3}, {2, 2, 2}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {32, 32, 32}, {131, 131, 131}, {108, 108, 108}, {0, 0, 0}, {183, 183, 183}, {38, 38, 38}, {136, 136, 136}, {130, 130, 130}, {41, 41, 41}, {75, 75, 75}, {78, 78, 78}, {0, 0, 0}, {0, 0, 0}, {2, 2, 2}, {0, 0, 0}, {0, 0, 0}, {20, 20, 20}, {51, 51, 51}, {199, 199, 199}, {152, 152, 152}, {199, 199, 199}, {116, 116, 116}, {110, 110, 110}, {193, 193, 193}, {51, 51, 51}, {46, 46, 46}, {25, 25, 25}, {0, 0, 0}, {1, 1, 1}, {0, 0, 0}, {61, 61, 61}, {154, 154, 154}, {123, 123, 123}, {76, 76, 76}, {53, 53, 53}, {173, 173, 173}, {155, 155, 155}, {123, 123, 123}, {0, 0, 0}, {181, 181, 181}, {4, 4, 4}, {0, 0, 0}, {0, 0, 0}, {2, 2, 2}, {0, 0, 0}, {49, 49, 49}, {209, 209, 209}, {32, 32, 32}, {0, 0, 0}, {0, 0, 0}, {117, 117, 117}, {126, 126, 126}, {53, 53, 53}, {135, 135, 135}, {1, 1, 1}, {134, 134, 134}, {63, 63, 63}, {2, 2, 2}, {3, 3, 3}, {1, 1, 1}, {1, 1, 1}, {24, 24, 24}, {124, 124, 124}, {87, 87, 87}, {75, 75, 75}, {126, 126, 126}, {143, 143, 143}, {11, 11, 11}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {53, 53, 53}, {126, 126, 126}, {0, 0, 0}, {3, 3, 3}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {25, 25, 25}, {35, 35, 35}, {24, 24, 24}, {0, 0, 0}, {0, 0, 0}, {2, 2, 2}, {3, 3, 3}, {0, 0, 0}, {0, 0, 0}, {35, 35, 35}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 1, 1}, {2, 2, 2}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {3, 3, 3}, {1, 1, 1}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 1, 1}, {1, 1, 1}, {1, 1, 1}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 1, 1}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}};
int glogo[256][3] = {{255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {11, 11, 11}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {125, 125, 125}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {116, 116, 116}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {170, 170, 170}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}, {255, 255, 255}};
int mario[256][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {112, 104, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {248, 171, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {248, 171, 0}, {112, 104, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {216, 0, 0}, {112, 104, 0}, {112, 104, 0}, {216, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {216, 0, 0}, {112, 104, 0}, {112, 104, 0}, {216, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {248, 171, 0}, {248, 171, 0}, {112, 104, 0}, {216, 0, 0}, {248, 171, 0}, {216, 0, 0}, {216, 0, 0}, {248, 171, 0}, {216, 0, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {248, 171, 0}, {248, 171, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {0, 0, 0}, {0, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}}; //int mario[256][3] = {{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {112, 104, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {248, 171, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {248, 171, 0}, {112, 104, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {216, 0, 0}, {112, 104, 0}, {112, 104, 0}, {216, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {216, 0, 0}, {112, 104, 0}, {112, 104, 0}, {216, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {248, 171, 0}, {248, 171, 0}, {112, 104, 0}, {216, 0, 0}, {248, 171, 0}, {216, 0, 0}, {216, 0, 0}, {248, 171, 0}, {216, 0, 0}, {112, 104, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {248, 171, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {248, 171, 0}, {248, 171, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {248, 171, 0}, {248, 171, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {0, 0, 0}, {0, 0, 0}, {216, 0, 0}, {216, 0, 0}, {216, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {112, 104, 0}, {0, 0, 0}, {0, 0, 0}};

19
PYTHON/CreateMatrix.py Normal file
View File

@ -0,0 +1,19 @@
import sys
from PIL import Image
img = sys.argv[1]
size = 16, 16
im = Image.open(img)
smallim = im.resize(size, Image.ANTIALIAS);
smallim = smallim.convert('RGB')
pixels = list(smallim.getdata())
imgstr = str(pixels).strip('[]')
imgstr = imgstr.replace('(','{')
imgstr = imgstr.replace(')','}')
f = open(img + '.h', 'w')
f.write('int imageArray[256][3] = {' + imgstr + '};')
f.close()