Concept
I created this project to introduce the viewers to 4 regions in the Northern Caucasus: Adyghea, Dagestan, Ingushetia, Checnya.
As a physical object, i pivoted and decided to build with four distinct doors, each representing one of the regions. Each door is embedded with a color-coded button, inviting the user to press and explore a region.
-
Red Button – Ingusheita
-
Green Button – Dagestan
-
Blue Button – Chechnya
-
Yellow Button – Adyghea
This interaction was designed to make the user feel like a traveler stepping into a new cultural experience. Upon pressing a door button, users are “teleported” to a selected region. Each region features:
-
Must-See Spots: Highlighted landscapes, canyons and mountains
-
Traditions: Rituals, dances, or cultural practices—some of which are interactive
-
Taste of Region: Food visuals
Code
P5: Link to no arduino version
Arduino code:
const int buttonPin1 = 4; // Dagestan button const int buttonPin2 = 2; // Adyghea button const int buttonPin3 = 5; // Checnya button const int buttonPin4 = 3; // Ingushetia button int buttonState1 = 0; int buttonState2 = 0; int buttonState3 = 0; int buttonState4 = 0; int lastButtonState1 = HIGH; int lastButtonState2 = HIGH; int lastButtonState3 = HIGH; int lastButtonState4 = HIGH; void setup() { Serial.begin(9600); pinMode(buttonPin1, INPUT_PULLUP); pinMode(buttonPin2, INPUT_PULLUP); pinMode(buttonPin3, INPUT_PULLUP); pinMode(buttonPin4, INPUT_PULLUP); } void loop() { // Read button states buttonState1 = digitalRead(buttonPin1); buttonState2 = digitalRead(buttonPin2); buttonState3 = digitalRead(buttonPin3); buttonState4 = digitalRead(buttonPin4); // Check for button presses and only send once on press if (buttonState1 == LOW && lastButtonState1 == HIGH) { Serial.println("DAGESTAN"); } if (buttonState2 == LOW && lastButtonState2 == HIGH) { Serial.println("ADYGHEA"); } if (buttonState3 == LOW && lastButtonState3 == HIGH) { Serial.println("CHECNYA"); } if (buttonState4 == LOW && lastButtonState4 == HIGH) { Serial.println("INGUSHETIA"); } // Save current button states for next comparison lastButtonState1 = buttonState1; lastButtonState2 = buttonState2; lastButtonState3 = buttonState3; lastButtonState4 = buttonState4; delay(50); // Debounce delay }
Reflections:
This project cost me a lot of all nighters, confusion and frustration. At the same time, it taught me so much both in technical and non-technical aspects and became one of the most rewarding learning experiences I’ve had so far.
Originally, my idea was to create a compass-based interaction, but I struggled to get the p5.js and Arduino integration to work properly. After a whole night night of troubleshooting and brainstorming, I pivoted the concept and fully committed to building a physical house. To bring that idea to life, I had to learn Adobe Illustrator from scratch to design the house structure, prepare it for laser cutting, and assemble it manually. I also learned how to solder and wire hardware components, connecting each button to the Arduino and ensuring smooth communication with the p5.js interface.
Even though my project wasn’t a game or something instantly engaging for everyone, I was quite surprised by the positive reactions at the showcase. Many visitors had never heard of the Caucasus before, yet they showed genuine curiosity to learn about its culture through an interactive format. Several people commented on the effort it must have taken to build the physical installation and to research and create the digital content for each region.
Overall, this project and the entire class had its highs and lows, but I truly loved the creative process—from just having an idea to actual execution of it. Even when it seemed impossible at times, the process pulled me into a state of creative flow and i enjoyed it.