TheFutureCraft Logo|Lab

Discreet LED Marquee

Arduino / Material Exploration

Less is more

We believe that every object in our daily lives has the opportunity to be rethought.

The LED marquees commonly seen in public transportation always have a large black area that cannot blend in with the interior, no matter what. Traditionally, the displayed content has been the focus. If we could find a way to hide the blank areas, it might be an unspoken yet delightful improvement for passengers.

LED-Marquee-now

We discovered that certain materials have unique molecular arrangements that can obscure the components behind them while also guiding light through. This makes them a perfect solution for our vision. Additionally, using an Arduino to control the LED array with a gradual breathing effect faithfully brings our design intentions to life.

Result

We successfully found a balance between concealing electronic components and ensuring light transmission in the choice of LED and materials, and effectively controlled the lighting using an Arduino program.

Arduino Code (C++)

main.ino

#define st1 8
#define st2 7
#define Showcase 6
#define BreathTime (5000/2)
int swRead1 = 0;
int swRead2 = 0;

void setup() {
    Serial.begin(9600);
    pinMode(st1,INPUT);
    digitalWrite(st1,HIGH);
    pinMode(st2,INPUT);
    digitalWrite(st2,HIGH);
    pinMode(Showcase,OUTPUT);
}

void loop() {
    swRead1 = digitalRead( st1 );
    swRead2 = digitalRead( st2 );
    Serial.print(swRead1);
    Serial.println(swRead2);
    
    if( swRead1 == HIGH && swRead2 == LOW){
        for(int i =1; i <= 255; i++){
            analogWrite(Showcase, 255 - i);
            delay(BreathTime / 255);
        }
        delay( BreathTime / 10);
        for(int i =1; i <= 255; i++){
            analogWrite(Showcase, i);
            delay(BreathTime / 255);
        }
    }
    else if( swRead1 == LOW && swRead2 == HIGH){
        analogWrite(Showcase, 255);
        delay(10000);
        for (int k =1; k <= 6; k++){
            for(int i =1; i <= 255; i++){
                analogWrite(Showcase, 255 - i);
                delay(BreathTime / 255);
            }
            delay( BreathTime / 10);
            for(int i =1; i <= 255; i++){
                analogWrite(Showcase, i);
                delay(BreathTime / 255);
            }
        }
        }
    else{
    analogWrite(Showcase, 255);
    }
}