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);
}
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);
}
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);
}

Reply