LOL Shield. Liquid Box

I wanted to use the lol shield to create an illusion of liquid that obey the law of gravity. For each side of the box, I created three functions: sideA, Transition animation A->B, sideB and so on. For that I used 4 photoresistors, one for each side and played with the sensor’s ranges. Whenever one photoresistor is at the bottom, its value is low and the liquid shifts.

 

code >>


///

#include <Charliplexing.h> //Imports the library, which needs to be

byte line = 0; //Row counter
char buffer[10];
int value;

int threshold1 = 300;
int threshold2 = 250;
int threshold3 = 350;
int threshold4 = 250;
int lightPin1 = 1; // A1 = H1
int lightPin2 = 2; // A2 = V1
int lightPin3 = 5; // A3 = H2
int lightPin4 = 4; // A4 = V2

void setup()
{
 LedSign::Init(); //Initializes the screen
 Serial.begin(9600);
}

void loop(){

Serial.print("lightPin1 = ");
 Serial.print(analogRead(lightPin1));

Serial.print(" lightPin2 = ");
 Serial.print(analogRead(lightPin2));

Serial.print(" lightPin3 = ");
 Serial.print(analogRead(lightPin3));

Serial.print(" lightPin4 = ");
 Serial.println(analogRead(lightPin4));
 if((analogRead(lightPin1) < threshold1) && (analogRead(lightPin2) > threshold2) && (analogRead(lightPin3) > threshold3) && (analogRead(lightPin4) > threshold4)){
 h1();
 }
if((analogRead(lightPin1) < 750) && (analogRead(lightPin1) > threshold1+10) && (analogRead(lightPin3) > threshold3) && (analogRead(lightPin4) > threshold4)){
 h1tov1();
 }
 if((analogRead(lightPin1) > threshold1) && (analogRead(lightPin2) < threshold2) && (analogRead(lightPin3) > threshold3) && (analogRead(lightPin4) > threshold4)){
 v1();
 }

if((analogRead(lightPin1) > threshold1) && (analogRead(lightPin2) < 750) && (analogRead(lightPin2) > threshold2+50) && (analogRead(lightPin3) > threshold3) && (analogRead(lightPin4) > threshold4)){
 v1toh2();
 }
 if ((analogRead(lightPin2) > threshold2) && (analogRead(lightPin3) < threshold3) && (analogRead(lightPin4) > threshold4) && (analogRead(lightPin1) > threshold1)){
 h2();
 }
 if((analogRead(lightPin1) > threshold1) && (analogRead(lightPin3) < 750) && (analogRead(lightPin3) > threshold3+30) && (analogRead(lightPin4) > threshold4)){
 h2tov2();
 }
 if((analogRead(lightPin1) > threshold1) && (analogRead(lightPin2) > threshold2) && (analogRead(lightPin3) > threshold3) && (analogRead(lightPin4) < threshold4)){
 v2();
 }

 if((analogRead(lightPin4) < 600) && (analogRead(lightPin4) > threshold4+100) && (analogRead(lightPin3) > threshold3-100) && (analogRead(lightPin1) > threshold1) && (analogRead(lightPin2) > threshold2)){
 v2toh1();
 }

delay(100);

}

&nbsp;

void DisplayBitMap(int lineint)
{
 //int data[9] = {95, 247, 123, 511, 255, 1, 5, 31, 15};

//for(line = 0; line < 9; line++) {
 for (byte led=0; led<14; ++led) {
 if (lineint & (1<<led)) {
 LedSign::Set(led, line, 1);
 }
 else {
 LedSign::Set(led, line, 0);
 }
 }

line++;
 if(line >= 9) line = 0;
}
//Functions://
void h1(){
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
}

void h1tov1 (){

// delay(50);
 // DisplayBitMap(0);
 // DisplayBitMap(0);
 // DisplayBitMap(0);
 // DisplayBitMap(0);
 // DisplayBitMap(0);
 // DisplayBitMap(16383);
 // DisplayBitMap(16383);
 // DisplayBitMap(16383);
 // DisplayBitMap(16383);
 // delay(50);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(1);
 DisplayBitMap(8191);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(1);
 DisplayBitMap(3);
 DisplayBitMap(4095);
 DisplayBitMap(8191);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(1);
 DisplayBitMap(3);
 DisplayBitMap(31);
 DisplayBitMap(511);
 DisplayBitMap(4095);
 DisplayBitMap(8191);
 DisplayBitMap(16383);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(3);
 DisplayBitMap(15);
 DisplayBitMap(63);
 DisplayBitMap(255);
 DisplayBitMap(2047);
 DisplayBitMap(4095);
 DisplayBitMap(8191);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(1);
 DisplayBitMap(3);
 DisplayBitMap(15);
 DisplayBitMap(127);
 DisplayBitMap(255);
 DisplayBitMap(1023);
 DisplayBitMap(4095);
 DisplayBitMap(4095);
 delay(50);
 DisplayBitMap(1);
 DisplayBitMap(3);
 DisplayBitMap(15);
 DisplayBitMap(31);
 DisplayBitMap(63);
 DisplayBitMap(255);
 DisplayBitMap(511);
 DisplayBitMap(1023);
 DisplayBitMap(2047);
 delay(50);
 DisplayBitMap(3);
 DisplayBitMap(7);
 DisplayBitMap(31);
 DisplayBitMap(31);
 DisplayBitMap(63);
 DisplayBitMap(127);
 DisplayBitMap(511);
 DisplayBitMap(511);
 DisplayBitMap(1023);
 delay(50);
 DisplayBitMap(15);
 DisplayBitMap(15);
 DisplayBitMap(31);
 DisplayBitMap(31);
 DisplayBitMap(63);
 DisplayBitMap(127);
 DisplayBitMap(255);
 DisplayBitMap(255);
 DisplayBitMap(511);
 delay(50);
 DisplayBitMap(31);
 DisplayBitMap(31);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(127);
 DisplayBitMap(127);
 DisplayBitMap(255);
 delay(100);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);

}

void v1() {
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);

}
void v1toh2() {
 DisplayBitMap(127);
 DisplayBitMap(127);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(31);
 DisplayBitMap(31);
 delay(100);
 DisplayBitMap(255);
 DisplayBitMap(127);
 DisplayBitMap(127);
 DisplayBitMap(127);
 DisplayBitMap(63);
 DisplayBitMap(63);
 DisplayBitMap(31);
 DisplayBitMap(15);
 DisplayBitMap(15);
 delay(100);
 DisplayBitMap(511);
 DisplayBitMap(255);
 DisplayBitMap(255);
 DisplayBitMap(127);
 DisplayBitMap(127);
 DisplayBitMap(63);
 DisplayBitMap(15);
 DisplayBitMap(7);
 DisplayBitMap(3);
 delay(100);
 DisplayBitMap(2047);
 DisplayBitMap(511);
 DisplayBitMap(255);
 DisplayBitMap(127);
 DisplayBitMap(63);
 DisplayBitMap(31);
 DisplayBitMap(15);
 DisplayBitMap(7);
 DisplayBitMap(1);
 delay(100);
 DisplayBitMap(4095);
 DisplayBitMap(1023);
 DisplayBitMap(511);
 DisplayBitMap(255);
 DisplayBitMap(63);
 DisplayBitMap(31);
 DisplayBitMap(7);
 DisplayBitMap(1);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(8191);
 DisplayBitMap(2047);
 DisplayBitMap(1023);
 DisplayBitMap(127);
 DisplayBitMap(127);
 DisplayBitMap(31);
 DisplayBitMap(1);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(16383);
 DisplayBitMap(8191);
 DisplayBitMap(2047);
 DisplayBitMap(511);
 DisplayBitMap(127);
 DisplayBitMap(44);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(8191);
 DisplayBitMap(2047);
 DisplayBitMap(1012);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(4095);
 DisplayBitMap(1472);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(8191);
 DisplayBitMap(2560);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);

}
void h2() {

DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);

}

void h2tov2()
{

DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16382);
 DisplayBitMap(8192);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16382);
 DisplayBitMap(16368);
 DisplayBitMap(15360);
 DisplayBitMap(8192);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(16383);
 DisplayBitMap(16382);
 DisplayBitMap(16380);
 DisplayBitMap(16352);
 DisplayBitMap(16128);
 DisplayBitMap(12288);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(16382);
 DisplayBitMap(16380);
 DisplayBitMap(16376);
 DisplayBitMap(16352);
 DisplayBitMap(16256);
 DisplayBitMap(14336);
 DisplayBitMap(8192);
 DisplayBitMap(0);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(16380);
 DisplayBitMap(16376);
 DisplayBitMap(16368);
 DisplayBitMap(16320);
 DisplayBitMap(16256);
 DisplayBitMap(15360);
 DisplayBitMap(14336);
 DisplayBitMap(8192);
 DisplayBitMap(0);
 delay(100);
 DisplayBitMap(16368);
 DisplayBitMap(16368);
 DisplayBitMap(16352);
 DisplayBitMap(16320);
 DisplayBitMap(16320);
 DisplayBitMap(15872);
 DisplayBitMap(14336);
 DisplayBitMap(12288);
 DisplayBitMap(8192);
 delay(100);
 DisplayBitMap(16352);
 DisplayBitMap(16352);
 DisplayBitMap(16320);
 DisplayBitMap(16320);
 DisplayBitMap(16256);
 DisplayBitMap(15872);
 DisplayBitMap(15872);
 DisplayBitMap(14336);
 DisplayBitMap(12288);
 delay(100);
 DisplayBitMap(16320);
 DisplayBitMap(16352);
 DisplayBitMap(16320);
 DisplayBitMap(16256);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(15872);
 DisplayBitMap(15360);
 DisplayBitMap(14336);
 delay(100);
 DisplayBitMap(16128);
 DisplayBitMap(16256);
 DisplayBitMap(16256);
 DisplayBitMap(16256);
 DisplayBitMap(16256);
 DisplayBitMap(16256);
 DisplayBitMap(16128);
 DisplayBitMap(15872);
 DisplayBitMap(15360);
 delay(100);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16256);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(15872);
 delay(100);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
}
void v2()
{

DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
}

&nbsp;

void v2toh1()
{

DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 delay(100);
 DisplayBitMap(15872);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16256);
 delay(100);
 DisplayBitMap(15360);
 DisplayBitMap(15872);
 DisplayBitMap(15872);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16128);
 DisplayBitMap(16256);
 DisplayBitMap(16256);
 DisplayBitMap(16320);
 delay(100);
 DisplayBitMap(14336);
 DisplayBitMap(15360);
 DisplayBitMap(15872);
 DisplayBitMap(15872);
 DisplayBitMap(16128);
 DisplayBitMap(16256);
 DisplayBitMap(16256);
 DisplayBitMap(16320);
 DisplayBitMap(16352);
 delay(100);
 DisplayBitMap(8192);
 DisplayBitMap(13312);
 DisplayBitMap(15360);
 DisplayBitMap(16128);
 DisplayBitMap(16256);
 DisplayBitMap(16256);
 DisplayBitMap(16320);
 DisplayBitMap(16320);
 DisplayBitMap(16368);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(12288);
 DisplayBitMap(14336);
 DisplayBitMap(15872);
 DisplayBitMap(16256);
 DisplayBitMap(16256);
 DisplayBitMap(16352);
 DisplayBitMap(16368);
 DisplayBitMap(16376);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(8192);
 DisplayBitMap(12288);
 DisplayBitMap(15360);
 DisplayBitMap(16128);
 DisplayBitMap(16320);
 DisplayBitMap(16368);
 DisplayBitMap(16376);
 DisplayBitMap(16380);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(8192);
 DisplayBitMap(12288);
 DisplayBitMap(16000);
 DisplayBitMap(16352);
 DisplayBitMap(16376);
 DisplayBitMap(16380);
 DisplayBitMap(16382);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(4096);
 DisplayBitMap(15040);
 DisplayBitMap(16352);
 DisplayBitMap(16376);
 DisplayBitMap(16382);
 DisplayBitMap(16383);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(3712);
 DisplayBitMap(16368);
 DisplayBitMap(16380);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(80);
 DisplayBitMap(16376);
 DisplayBitMap(16382);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(4);
 DisplayBitMap(16382);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 delay(100);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(0);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 DisplayBitMap(16383);
 delay(100);

}

&nbsp;