/*
Empowerment Technology
iParol v1 (PHS - STEM)
s.2023
*/
//******************************************
// USE write() in replace to digitalWrite()
// The diagram uses 16x16 matrix. Note that the 16th adress will not work
// This will work with 15x15 boards
//******************************************
byte spiral[] = {1,16,196,211,212,224,225,210,30,15,14,2,17,107,197,203,209,119,29,23,93,108,123,187,188,189,133,118,103,39,38,37,49,64,79,109,139,154,169,170,171,173,175,176,177,162,147,117,87,72,57,56,55,53,51,50,65,80,95,125,140,155,156,157,159,160,161,146,131,101,86,71,70,69,67,66,81,111,141,143,145,115,85,83,97,112,127,128,129,114,99,98,113};
byte clark[] = {1,2,3,4,5,6,7,16,17,18,19,20,21,22,31,32,33,34,35,36,37,46,47,48,49,50,51,52,61,62,63,64,65,66,67,76,77,78,79,80,81,82,91,92,93,94,95,96,97,121,122,123,124,125,126,127,136,137,138,139,140,141,142,151,152,153,154,155,156,157,166,167,168,169,170,171,172,181,182,183,184,185,186,187,196,197,198,199,200,201,202,211,212,213,214,215,216,217,129,130,131,132,133,134,135,144,145,146,147,148,149,150,159,160,161,162,163,164,165,174,175,176,177,178,179,180,189,190,191,192,193,194,195,204,205,206,207,208,209,210,219,220,221,222,223,224,225,9,10,11,12,13,14,15,24,25,26,27,28,29,30,39,40,41,42,43,44,45,54,55,56,57,58,59,60,69,70,71,72,73,74,75,84,85,86,87,88,89,90,99,100,101,102,103,104,105};
byte spread[] = {113,112,128,114,98,111,143,115,83,110,158,116,68,109,173,117,53,108,188,118,38,107,203,119,23,106,218,120,8};
byte sprite[] = {15,30,45,60,75,74,59,44,29,14,13,28,43,58,73,72,57,42,27,12,11,26,41,56,71,70,55,40,25,10,9,24,39,54,69,68,53,38,23,8,7,22,37,52,67,66,51,36,21,6,5,20,35,50,65,64,49,34,19,4,3,18,33,48,63,62,47,32,17,2,1,16,31,46,61,76,91,106,121,136,137,122,107,92,77,78,93,108,123,138,139,124,109,94,79,80,95,110,125,140,141,126,111,96,81,82,97,112,127,142,143,128,113,98,83,84,99,114,129,144,145,130,115,100,85,86,101,116,131,146,147,132,117,102,87,88,103,118,133,148,149,134,119,104,89,90,105,120,135,150,165,180,195,210,225,224,209,194,179,164,163,178,193,208,223,222,207,192,177,162,161,176,191,206,221,220,205,190,175,160,159,174,189,204,219,218,203,188,173,158,157,172,187,202,217,216,201,186,171,156,155,170,185,200,215,214,199,184,169,154,153,168,183,198,213,212,197,182,167,152,151,166,181,196,211};
#include "MUX_iParol.h"
void setup() {
iParol_Init();
}
void loop() {
//rectangle(0, 0, 10, 10, 1, 1, HIGH);
/*
circle(0,12,1,HIGH,30);
circle(12,20,1,HIGH,30);
circle(20,32,1,HIGH,15);
circle(32,56,1,HIGH,15);
circle(56,76,1,HIGH,15);
circle(76,84,1,HIGH,30);
circle(84,92,1,HIGH,50);
circle(92,94,1,HIGH,50);
delay(500);
offer(94,0,1,LOW,0);
write(1,LOW);
delay(100);
circle(0,93,1,HIGH,0);
delay(100);
offer(94,0,1,LOW,0);
delay(100);
circle(0,93,1,HIGH,0);
write(103,HIGH);
delay(100);
offer(94,92,1,LOW,50);
offer(92,84,1,LOW,50);
offer(84,76,1,LOW,30);
offer(76,56,1,LOW,15);
offer(56,32,1,LOW,15);
offer(32,20,1,LOW,30);
offer(20,12,1,LOW,50);
offer(12,0,1,LOW,30);
write(1,LOW);
delay(300);
circle(0,93,1,HIGH,0);
delay(100);
offer(94,0,1,LOW,0);
write(1,LOW);
delay(100);
circle(0,93,1,HIGH,0);
delay(100);
offer(94,0,1,LOW,0);
write(1,LOW);
delay(300);
posloop(0,49,1,HIGH);
corrupt(0,1,1,HIGH,0);
delay(500);
negloop(50,0,1,LOW);
write(1,LOW);
corrupt(0,5,1,HIGH,0);
delay(500);
posloop(49,98,1,HIGH);
corrupt(5,9,1,HIGH,0);
delay(500);
negloop(97,49,1,LOW);
write(121,LOW);
corrupt(9,13,1,HIGH,0);
delay(500);
posloop(98,147,1,HIGH);
corrupt(13,17,1,HIGH,0);
delay(500);
negloop(146,97,1,LOW);
corrupt(17,21,1,HIGH,0);
delay(300);
posloop(147,196,1,HIGH);
corrupt(21,25,1,HIGH,0);
delay(500);
negloop(195,146,1,LOW);
corrupt(25,29,1,HIGH,0);
delay(50);
corrupt(0,30,1,LOW,0);
delay(500);
posloop(0,199,1,HIGH);
negloop(195,0,1,LOW);
write(1,LOW);
delay(400);
posloop(0,201,1,HIGH);
corrupt(0,30,1,HIGH,0);
delay(100);
negloop(195,0,1,LOW);
corrupt(0,30,1,LOW,0);
write(1,LOW);
delay(1000);
coke(0,5,1,HIGH);
delay(25);
coke(5,10,1,HIGH);
delay(25);
coke(10,15,1,HIGH);
delay(25);
coke(15,20,1,HIGH);
delay(25);
coke(20,25,1,HIGH);
delay(25);
coke(25,30,1,HIGH);
delay(25);
coke(30,35,1,HIGH);
delay(25);
coke(35,40,1,HIGH);
delay(25);
coke(40,45,1,HIGH);
delay(25);
coke(45,50,1,HIGH);
delay(25);
coke(50,55,1,HIGH);
delay(25);
coke(55,60,1,HIGH);
delay(25);
coke(60,65,1,HIGH);
delay(25);
coke(65,70,1,HIGH);
delay(25);
coke(70,75,1,HIGH);
delay(25);
coke(75,80,1,HIGH);
delay(25);
coke(80,85,1,HIGH);
delay(25);
coke(85,90,1,HIGH);
delay(25);
coke(90,95,1,HIGH);
delay(25);
coke(95,100,1,HIGH);
delay(25);
coke(100,105,1,HIGH);
delay(25);
coke(105,110,1,HIGH);
delay(25);
coke(110,115,1,HIGH);
delay(25);
coke(115,120,1,HIGH);
delay(25);
coke(120,125,1,HIGH);
delay(25);
coke(125,130,1,HIGH);
delay(25);
coke(130,135,1,HIGH);
delay(25);
coke(135,140,1,HIGH);
delay(25);
coke(140,145,1,HIGH);
delay(25);
coke(145,150,1,HIGH);
delay(25);
coke(150,155,1,HIGH);
delay(25);
coke(155,160,1,HIGH);
delay(25);
coke(160,165,1,HIGH);
delay(25);
coke(165,170,1,HIGH);
delay(25);
coke(170,175,1,HIGH);
delay(25);
coke(175,180,1,HIGH);
delay(25);
coke(180,185,1,HIGH);
delay(25);
coke(185,190,1,HIGH);
delay(25);
coke(190,195,1,HIGH);
delay(25);
coke(195,200,1,HIGH);
delay(25);
coke(200,205,1,HIGH);
delay(25);
coke(205,210,1,HIGH);
delay(25);
coke(210,215,1,HIGH);
delay(25);
coke(215,220,1,HIGH);
delay(25);
coke(220,225,1,HIGH);
delay(250);
coke(0,226,1,LOW);
delay(500000);
*/
//rectangle(0, 0, 10, 10, 1, 1, HIGH);
//rectangle(0, 0, 10, 10, 1, 1, LOW);
//rectangle(0, 0, 20, 20, 1, 1, HIGH);
//rectangle(0, 0, 20, 20, 1, 1, LOW);
//rectangle(0, 0, 30, 30, 1, 1, HIGH);
//rectangle(0, 0, 30, 30, 1, 1, LOW);
rombus(0, 0, 30, 1, 1, HIGH);
rombus(0, 0, 30, 1, 1, LOW);
}
void rombus(byte startx, byte starty, byte length, byte incr, byte delays, byte state)
{
//Jobb felső kvadráns
for(byte i = startx; i < startx + length; i = i + incr)
{
for(byte j = starty; j < starty + length; j = j + incr)
{
if (i <= j) write(9 * j + i, state);
delay(delays);
}
}
//Bal felső kvadráns
for(byte i = startx; i > startx - length; i = i - incr)
{
for(byte j = starty; j < starty + length; j = j + incr)
{
if (i >= j) write(9 * j + i, state);
delay(delays);
}
}
//Bal alsó kvadráns
for(byte i = startx; i > startx - length; i = i - incr)
{
for(byte j = starty; j > starty - length; j = j - incr)
{
if (i >= j) write(9 * j + i, state);
delay(delays);
}
}
//Jobb alsó kvadráns
for(byte i = startx; i < startx + length; i = i + incr)
{
for(byte j = starty; j > starty - length; j = j - incr)
{
if (i <= j) write(9 * j + i, state);
delay(delays);
}
}
}
void rectangle(byte startx, byte starty, byte length, byte width, byte incr, byte delays, byte state)
{
for(byte i = startx; i < length; i = i + incr)
{
for(byte j = starty; j < width; j = j + incr)
{
//write(i, j, state);
write(9 * j + i, state);
delay(delays);
}
}
}
void circle(byte item1, byte para1,byte add1,byte state,byte delays)
{
for(byte k=item1;k<para1; k=k+add1)
{
write(spiral[k],state);
delay(delays);
}
}
void offer(byte item2, byte para2,byte sub,byte state,byte delays2)
{
for(byte l=item2;l>para2;l=l-sub)
{
write(spiral[l],state);
delay(delays2);
}
}
void posloop(byte mine, byte lim, byte incre, byte state)
{
for(byte p=mine;p<lim;p=p+incre)
{
write(clark[p],state);
}
}
void negloop(byte mine1,byte lim1,byte incre1,byte state)
{
for(byte c=mine1;c>lim1;c=c-incre1)
{
write(clark[c],state);
}
}
void corrupt(byte fire,byte stop,byte dizon,byte state,byte inter)
{
for(byte d=fire;d<stop;d=d+dizon)
{
write(spread[d],state);
delay(inter);
}
}
void coke(byte eren,byte stopcar,byte mikasa,byte state)
{
for(byte w=eren;w<stopcar;w=w+mikasa)
{
write(sprite[w],state);
}
}