"THE LANGUAGE OF FLOWERS"
Valery Magne Merida
Instrutor: Viola He
VIDEO DOCUMENTATION
CONCEPTION AND DESIGN
PURPOSE
The Language of Flowers is an interactive game that combines technology and art to inspire players to reflect on growth, communication, and the beauty of perseverance. By engaging with a Morse-code-based game, players uncover the word "Perseverance", a reminder of their potential to overcome challenges and trust in their decisions. This project highlights the parallels between human perseverance and the beauty of nature, encouraging players to take curiosity, focus, and effort to unlock meaningful messages hidden in the world around them.
CONCEPT
Initially, I wanted to create a challenging game that would leave a lasting impression. However, after experimenting with a few ideas, I decided to build an interactive game where users decode the word perseverance using Morse code. The word, defined as “continued effort despite difficulty” (Cambridge Dictionary), became the central theme of the game, aiming to encourage users to persist through challenges.
To begin, users press a button to start the game, watch an instructional video, and then a countdown starts. I decided to play the Morse code twice to give users a better chance to decode it. Additionally, I incorporated flowers into the design, symbolizing resilience, since just as flowers must persevere to grow, users are reminded to persist in their own endeavors.
During the user testing session, several valuable suggestions emerged. Testers recommended:
Adding pauses between the Morse code words.
Providing instructions for those unfamiliar with Morse code.
Including a clearer introductory guide to the game.
Making the game more interactive.
Initially, my plan was for users to input their decoded message using buttons, but this feature didn’t work as expected. After receiving feedback and consulting with my teacher, I revised the interaction. Instead of using buttons, I made the game more engaging by allowing users to light up a flower on the board after decoding the word. Yellow flowers represent perseverance, while red flowers represent patience. When users selected a yellow flower, a hidden light sensor activated an LED strip in the shape of a heart, which lit up in layers, symbolizing the growing strength of perseverance.
Additionally, I added pauses between the Morse code words and created an introductory video to guide users through the process.
The changes proved effective. The pauses made it easier for users to decode the Morse code, and the instructional video clarified the gameplay. Most importantly, the interactive lighting system provided meaningful feedback, making the experience more rewarding. Ultimately, these adaptations enhanced both the usability and emotional impact of the game.
FABRICATION AND PRODUCTION
TASK 1 Beginning to User Testing Day Process
A) CRAFT
i) Sketch
Figure 1 Sketch of the final project
The first step taken for this project was to create the initial sketch. When I began thinking about what to do, I immediately decided I wanted to blend art with the creation of a challenging game. For this reason, I decided to sketch a game where users would not only experience the machine's movements but also have the opportunity to interact with it. However, as the project progressed, it evolved in ways that were different from what I initially planned for user interaction. This step may not have resulted in the perfect sketch, but it was essential in helping me visualize my final project, which I found to be incredibly helpful. Moreover, this specific step taught me the importance of perseverance and trusting the process, even when things don’t go as expected.
ii) Making the board of flowers
Figure 2 Process of making the board
After completing the sketch, I began working on the project, starting with the board of flowers. To begin with, I gathered the necessary materials, including a cutter, hot glue, scissors, a pen, a ruler, and a compass to draw a circle. Next, using a large compass, I drew and cut out a circle from cardboard. In order to create a sturdy base for the 25 flowers, I made a second identical circle and glued the two layers together. Once the base was ready, I moved on to the next step.
At first, I thought this would be the easiest part of the project since it didn’t seem particularly challenging. However, I quickly realized the value of exploring the lab resources and asking for help. For instance, I discovered a large compass that I didn’t even know existed before asking, which made this step much smoother. As a result, this experience highlighted how my communication skills and willingness to ask questions helped me complete this stage successfully.
Figure 3 Process of making the flowers
The next step was creating four flowers by hand. Since I had previously made handmade flowers during one of my recitations, this step felt a bit easier and more familiar. To start, I cut several fabric squares using material I found in the lab. Then, I measured and marked 10x10 cm squares on the fabric using a ruler. For each flower, I needed 12 squares, so I cut a total of 48 squares for the four flowers. Once I had the squares ready, I began the process of folding each one into specific shapes, similar to origami, to form the petals. To speed up the process, I used a stapler to secure each folded square, which made the task more efficient. Afterward, I glued the 12 petals together with hot glue and waited for them to dry. Finally, I cut out a small cardboard circle for the base of each flower and glued it to the bottom to provide support. I repeated this process four times to complete all four flowers.
Although this step seemed easy at first glance, it turned out to be more challenging than expected. I quickly realized that it required a lot of patience to carefully fold and assemble each petal. The most difficult part, however, was gluing everything together, as I burned my fingers while working on the first two flowers. Nevertheless, I felt that the effort was worth it. While I could have purchased ready-made flowers on Taobao, I chose to make them by hand because I wanted my project to reflect the message of perseverance. Moreover, I saw this as an opportunity to challenge and improve my crafting abilities. In the end, I’m proud that I made the flowers by hand. This process not only reinforced my message of perseverance but also helped me develop greater patience and attention to detail.
B) CODING
1) Arduino
Figure 4 Diagram & breadboard and soldering wires
FIRST
To start the project, I needed to connect my Arduino to my computer and test the brightness of the LEDs. I used a breadboard to test different LEDs and decided to use small, very bright ones for better visibility. After assembling the circuit with four LEDs, I soldered wires to each LED to make sure they would stay connected during the project. Once I had everything set up, I proceeded to write the Arduino code for the Morse code game.
HARDWARE SETUP
In the hardware setup, I connected four LEDs to the Arduino using individual pins (pins 2, 3, 4, and 5). I used resistors (220K) to limit the current flowing through the LEDs and protect them from damage. The cathodes of the LEDs were connected to the ground (GND) pin of the Arduino, and the anodes were connected to the specific pins I defined in the Arduino code. Additionally, I connected the Arduino’s ground to the breadboard’s ground rail, and its 5V pin to the power rail of the breadboard to provide power to the LEDs.
CONTROLLING LEDs WITH ARUDINO CODE
The core components for the Arduino code were the four LEDs, serial communication to receive input from Processing, and basic timing to control the duration of dots and dashes. In the setup() function, I initialized the LED pins as outputs and set up serial communication at a rate of 9600. This allowed the Arduino to receive the Morse code characters (dots and dashes) from the Processing code.
In the loop() function, the Arduino checks for incoming serial data. If it receives a dot (.) or dash (-), it calls the lightUpLEDs() function, which turns the LEDs on for the duration of the symbol. The LEDs are then turned off after the specified duration (1 second for a dot and 2 seconds for a dash). I found the logic to control the LEDs on a website called "C Code for LED Light Up - CodePal," which made it easy to implement the LED control in a clean and efficient way.
2) Processing
Figure 5 Process of trying LED lights
SECOND
Once the Arduino was ready, I focused on the Processing code. The goal of the Processing code was to send the Morse code to the Arduino using serial communication. The code starts when the user presses the spacebar, triggering the Morse code sequence for the word "perseverance." The code sends each symbol (. or -) to the Arduino in sequence. When the Arduino receives these symbols, it turns the LEDs on for the corresponding duration and plays sounds for the dot and dash.
Therefore in Processing, I set up the serial communication using the Serial class to send data to the Arduino. The keyPressed() function listens for the spacebar press, and once detected, the startMorseCode() function begins the Morse code sequence. I created this function to work by setting the isRunning variable to true and resetting the currentIndex to 0 to start the sequence from the first symbol. It then calls the startNextSymbol() function to send each symbol of the Morse code to the Arduino in order. Furthermore, I used sound files (dot.wav and dash.wav) to play corresponding sounds for each symbol in Morse code, which was essential since it added the auditory element to the project where the Morse code sound will project the sound.
FINAL THOUGHTS
Initially, I wasn’t sure how to begin, so I researched Arduino Morse code projects on YouTube and Google. I couldn’t find exactly what I needed, but after discovering the CodePal website, I gained a better understanding of how to control LED brightness with Arduino. I then proceeded to test various LEDs and build the circuit using basic logic, even though I didn’t have the proper cables. Instead, I learned how to solder the wires myself, which was a valuable skill. The soldering process took longer than I anticipated, but it was rewarding to see everything come together.
Furthermore, the coding process also presented some difficulties. At first, the codes weren't working, and I was frustrated. However, after reviewing the codes line by line, I discovered a missing semicolon in the Arduino that was causing the issue. Once I fixed it, everything worked perfectly, and I felt a great sense of accomplishment.
In the end, the project worked as intended, with Processing sending Morse code symbols to Arduino, which controlled the LEDs and played sounds. Lastly, I feel that this first part of the project improved my skills in both hardware and software, and it gave me the confidence to continue working on this project for the final.
TASK 2 User Testing Day to Final Presentation Process
A) CODING
1) Make Introductory Video
Figure 6 Process of making the introductory video
CREATING THE INTRODUCTORY VIDEO
After user testing, I decided to create an introductory video guide to explain the game, as I realized some people might not understand the instructions if they were only in English. With the help of a Chinese friend, I translated the subtitles to ensure clarity. Once the video content was ready, I researched how to play videos in Processing and found guidance on the official Processing website. Furthermore, in order to make the video fit my screen, I resized it to 1900x1200 pixels and used an online tool to convert it to an MP4 format, which is compatible with Processing’s Movie (3) library.
DESIGNING THE BUTTON
Next, I designed a circular green button at the center of the screen using the PGraphics class, which allowed me to create custom graphics. After investigating how PGraphics (4) worked I used createGraphics() to define the button's size and drew it using functions like ellipse() for the circle and text() for the English and Chinese subtitles. The text was positioned in the middle with the English text above and Chinese text below the center. Furthermore, I initially paused the video using video.stop() (5) so that it wouldn’t play until the user interacted with the button. This step ensured the video only started when the player was ready to press the button.
INTEGRETING BUTTON WITH VIDEO
To combine the video playback and button functionality, I introduced a boolean variable (6) called videoStarted to track whether the video had begun. In the draw() function, I used a condition to check the value of videoStarted, so if it was false, the program displayed the green button over a black background; if it was true, the video played full-screen. Later, I added interactive functionality in the mousePressed() function, where I used distance calculations to detect if the user clicked within the button's area. If the button was pressed, the videoStarted variable was set to true, and the video began playing using video.play(). To ensure the video played without any problem, I used the movieEvent() (7) function, which continuously updates video frames as they are loaded, which enabled a smooth video.
THOUGHTS
This step took longer than I expected, as I had to research extensively to understand how to write the code. Fortunately, Processing has an official page that helped me discover many new functions I hadn’t learned before. Additionally, a friend from another recitation helped me figure out how to play the video, as it initially wouldn’t work. She suggested using an online tool to convert YouTube videos to MP4, so I uploaded my video to YouTube and followed the same process. However, despite the code, I encountered issues with the video not playing. After careful review, I realized I had missed some parentheses and semicolons, which took me another two hours to fix. Finally, after fixing the problem I understanded that this process improved my research skills, and I felt even prouder when everything finally worked.
2) Make Code for Led Sensor
Figure 7 Diagram, breadboard and arduino wiring
INVESTIGATION
After making the introductory video for my project, I wanted to implement interactivity and at the same time making it both memorable and visually appealing. To achieve this, I decided to implement a light sensor that would turn on an LED strip when exposed to a flashlight. So, I began by searching for a specfific code and diagram in the internet and after some hours I was able to find one on a website called ArduinoGetStarted (8). As shown in Figure 7, what I did first after finding the code and diagram is to prepare the wiring to initially test the circuit with a simple LED light and light sensor setup without soldering.
MODIFYING THE CODE
However, I noticed an issue: the original code turned the LED light on when the sensor blocked light, but I wanted it to work in the opposite way. To correct this, I modified the code to ensure the LED would light up in response to higher light intensity rather than lower. Specifically, I changed the condition in the if statement to trigger the LED when the sensor's value exceeded the threshold (analogValue > ANALOG_THRESHOLD), rather than when it was below the threshold (analogValue < ANALOG_THRESHOLD). This change allowed the LED to light up in brighter light conditions, which was essential for the project interactivity.
Once the simple LED setup was successfully tested, I shifted my focus to adapting the code for an LED strip. To do so, I incorporated the Adafruit_NeoPixel library, which is essential for controlling NeoPixel LED strips. This library allows me to manage the color and timing of individual LEDs on the strip. So, i was able to define the strip’s pin and total number of LEDs, set up the light sensor, and initialized the strip within the setup() function. Then, to ensure the proper functioning of the circuit, I added 220k resistors between the LED lights and connected an external 5V power supply, which was necessary to provide sufficient current for the LED strip , since the Arduino could proabably have short circuit.
CREATION OF FINAL EFFECT
In the loop() function, I continuously checked the value from the light sensor to compare it with a predefined threshold. If the light intensity exceeded the threshold, this indicated that there was enough light to trigger the LED strip. As a result, the lightUpSequence function was created and used to make a sequencial effect on the strip. Specifically, this function gradually lit up each LED one by one, starting with the first LED and continuing in sequence. Each LED turned on with a yellow color, and the delay between each LED lighting up was controlled by the delayTime parameter. Once all the LEDs on the strip were illuminated, they remained on for 20 seconds before turning off. This created a smooth and visually effect, making the LED strip appear lively and vibrant. Moreover, this dynamic effect significantly enhanced the overall aesthetic of the project, making it more memorable and engaging.
THOUGHTS
I was very lucky to find a code that was perfectly suited for the purpose I wanted to achieve. It made my project much easier to execute. However, I believe one of the biggest challenges wasn’t just the code, but the soldering of the sensor. It was more difficult than working with the LED lights, so I had to be very careful. Additionally, working with the LED strip proved to be more complicated. When I resumed my project after December 1st, there were no LED strips available, and I was in a bit of a bind. Luckily, a classmate lent me a 10-meter LED strip, which turned out to be a blessing. The length of the strip added even greater significance to the project, because as seen in future steps, I was able to build something beautiful. Finally, from this process, I realized how important it is to implement resistors and take other precautions to prevent accidents. This experience helped me mature, as I understood the importance of properly managing the materials I’m working with and now I recognize that this project could be dangerous if I don't handle everything carefully.
3) Join full code
i) Modify the Processing User Testing code to add the following instructions (sequence):
Text 1 -> FIRST TIME-> "At the same time Perseverance Morse Code reproduces sound"
Countdown of 10s -> Start Second Cycle 10s
Text 2 -> SECOND TIME ->"At the same time Perseverance Morse Code reproduces sound"
Countdown of 80s -> Time to decipher code (ENGLISH/CHINESE)
Create image-> to instruct audience to use their phone flashlight
Text 3 -> Add final text-> "Please, light a Yellow Flower if the message is Perseverance & Light a Red Flower if the message is Patience"
Add a final message-> after the light show-> "Perseverance is the key to life. Believe in yourself!"
As seen above, it is an outline of how I made the game instructions sequence. However, I want to explain them how I did part by part:
TEXT AND CYCLES (INTRODUCTION)
In the modified Processing code, I structured the sequence of events to create a more engaging and interactive experience for the user. The first step was adding two text prompts that display during the Morse code cycles: "FIRST TIME" and "SECOND TIME". These prompts are controlled by the isFirstCycle flag. When isFirstCycle is true, the program displays "FIRST TIME" while the Morse code is running for the first cycle. Once the first cycle is completed, the isFirstCycle flag is set to false, and "SECOND TIME" is displayed during the second cycle. This structure ensures that the user knows when they are starting the first and second cycles.
COUNTDOWN TIMERS FOR EACH CYCLE
Next, I introduced countdown timers for both cycles to help the user understand the flow of the activity. The first countdown is set to 10 seconds and is controlled by the isCountdownRunning flag. This countdown starts once the first cycle finishes, and when it reaches zero, the second cycle begins. For the second cycle, I added a countdown of 80 seconds, which gives the user a long time to decipher the Morse code. This countdown updates every second using the millis() function to track the elapsed time. By doing this, I provided clear intervals to manage the transitions between cycles and ensure the user can engage with each stage effectively.
MORSE CODE SYMBOLS AND SOUND PLAYBACK
To improve the timing of the Morse code and sound effects, I modified the program to check if the current symbol has finished playing using the condition millis() - symbolStartTime >= symbolDuration. The program handles two types of symbols: dots and dashes. For each dot (.) or dash (-), the program sends the appropriate signal to the Arduino (myPort.write('.') or myPort.write('-')) and plays the corresponding sound (soundDot.play() or soundDash.play()). The duration of the symbols is managed by the symbolDuration variable, which is set differently for dots and dashes. This change allows for accurate timing between the symbol transitions and their corresponding sounds.
DISPLAY INSTRUCTIONAL IMAGES
Another significant addition was the inclusion of an image display to guide users in using their phone flashlight. After the second countdown finishes, an image appears instructing the user to use their phone flashlight. This part of the program was designed to make the activity more interactive and to reinforce the engagement with the Morse code message. The image is displayed when the second countdown reaches zero, ensuring that the user knows when and how to use their flashlight.
FINAL TEXT INSTRUCTIONS
After displaying the instructional images, I added a final text message to guide the user in interpreting the Morse code. The program displays the text:
"Please, light a Yellow Flower if the message is Perseverance & Light a Red Flower if the message is Patience."
This message provides clear instructions on how the user should respond after decoding the Morse code. It ties directly to the interactive and thematic elements of the project, encouraging the user to reflect on the message they deciphered and to make a meaningful decision.
FINAL MESSAGE
Once the light show concludes, I added a final message: "Perseverance is the key to life. Believe in yourself!". This message appears after the light show completes, providing the user with an encouraging conclusion to the activity. It reinforces the central theme of the project and offers a positive takeaway, reminding users about the importance of perseverance and belief in themselves.
ii) Modify the Processing User Testing code to add the button with introductory video
STARTING THE VIDEO WITH USER INTERACTION
After having all the codes ready, I needed to make the final step of adding the beggining of the introductory video to the morse code game. Therefore, to begin the video, a interactive button was created on the screen using a circle and mouse interaction logic (mousePressed function). When the user clicked the button, the video started playing, and it included a countdown to prepare players for the game. The countdown provided a sense of anticipation and set the tone for the interactive experience that would follow. Therefore, this step helped align the video with the game’s concept and created an engaging opening.
TRANSITIONING FROM VIDEO TO GAME
Once the video concluded, a smooth transition into the game was necessary to maintain the flow. To handle this, a flag variable (9), videoEnded, was declared and initialized to false. The program then continually checked if the video had finished using the isPlaying() method. When the video stopped, the flag variable was set to true, triggering the automatic start of the Morse code game. This automated transition allowed the game to begin without additional input from the player, ensuring a seamless and uninterrupted experience.
THOUGHTS
At first, I didn’t expect the code to take so much time. However, it turned out to be one of the hardest things I’ve done as a student. I took a big risk because the game would only work if everything I made worked together. When I finally put all the parts together, I felt really proud, especially since I had to figure out new ways to connect them.
In addition, the hardest part was adding the video to the game. After two days of trying, I finally made it work by using a flag variable. This made the transition from the video to the game smooth. Overall, the process taught me a lot about perseverance, and I’m proud to have finished the code.
B) CRAFT
i) Laser Cut
Figure 8 Process of making the morse code board
The first step for crafting the final presentation was using laser cutting to make the acrylic board for my Morse code. I chose acrylic because I had seen the Interaction Lab nameplates made from acrylic for the learning assistants, and I thought it looked nice with the LED lights underneath. So, I decided to do the same for my project.
Before starting, I made an appointment with Mr. Daly, who helped me print out the files for the laser cutting. Once the acrylic was cut, I needed to figure out how to show it. I decided to make a custom case for it. I used a pencil, ruler, and cutter to measure the acrylic and the base. After cutting some black cardboard, I was able to make the case. Finally, I added fabric to the case, and every time I connected everything, I was really happy with how it turned out.
This part didn’t seem too hard, but I had to look up how to create an image for laser cutting. I found a helpful YouTube video called "Easy Diode Laser LED Acrylic Signs! xTool D1 10 Watt Diode Laser Engraver "(10), which showed me exactly what to do. After following the instructions, I gave the image file to Mr. Daly, and he helped me engrave and cut the design with the laser cutter. Finally, I felt impressed with the resources of the university and this experience made me realize how many resources we have as students in the Interaction Lab.
i) Finish Board of Flowers
Figure 9 Making more flowers and testing lights process
After completing the acrylic Morse code board, my next task was to create 22 more flowers and attach them to the board. For each flower, I had to cut around 12 10x10 cm squares, not including the larger flowers, which required about 20 squares each. Once all the flowers were made, I focused on creating a heart shape on the board using an LED strip. After searching around the lab for a solution, I decided to use pins to secure the LED strip in place. The arrangement of the flowers and the pins helped me form the heart shape. Furthermore, once the heart was created, I needed to drill two holes: one for the LED sensor cable to be soldered to a yellow flower, and another for the remaining LED strip, where the cables would connect to the Arduino. After completing these tasks, I tested the code, and I was amazed when it worked on the first try. To finish, I added black fabric behind the flowers so that, when lit, the heart shape would appear in a sequence of three layers.
Finally, this step was both fun and demanding. Making the flowers took about three days, as I had to be very careful with the details of each one. Despite the time commitment, I am proud of crafting these flowers by hand. As I mentioned earlier, they symbolize one of the main reasons I created this project to demonstrate perseverance to my users. My final challenge was ensuring the LED strip worked. I didn’t think I’d be able to find one at that point until a friend lent me her 10-meter LED strip. It was perfect for my project, as it allowed me to highlight the heart shape. I feel that this experience taught me a lot, and at the same time I feel my crafting skills have improved.
ii) Last Details
Figure 10 Process of last details and final project pictures
My final steps involved adding some cardboard to cover the cables and securing the entire board and Arduino to the base to prevent any movement of the wiring. As shown in Figure 10, I created an access point for the 5V power cable and another hole to connect the USB to my computer. I also added black masking tape around the board to keep the LED lights and LED sensor in place, ensuring they wouldn’t shift. Afterward, I covered everything with fabric and secured it using hot glue. Additionally, as seen in the figure, I incorporated a display and speakers to make it easier for users to read and hear the instructions.
For me, this part of the process was a relief. After testing the code multiple times to ensure it worked, I was finally able to focus on the finishing details of the project. Moreover, I was excited to present my work at the IMA show and felt proud of myself for successfully completing and showcasing my project.
CONCLUSIONS
Looking back on my project, I am happy to say that all my goals were achieved. The game encouraged participants to value perseverance and growth, showing them how effort can lead to discovering beauty. This was clear in the final step when they used flashlights to find the hidden flowers. The game also allowed users to experience Morse code in a fun and interactive way.
From watching the audience, I noticed that most participants were surprised by the final step, as it was unexpected. This surprise added to the idea of interaction, where people exchange ideas by speaking, listening, and thinking (Crawford 11). In my project, the machine communicated through Morse code sounds, while users responded by thinking about the game and activating the LED sensor. Although the interaction was simple, it encouraged creativity and reflection. If I had more time, I would improve the game by adding a second LED sensor with a new function to make it more interactive. I would also include the final message in the code, which I couldn’t complete due to time constraints.
This project taught me many new skills and lessons. I am proud to have created something this complex with coding for the first time. Furthermore, one big challenge was soldering cables about 40 times, because someone stolen my F & M cables. While this was frustrating, it taught me how to solder and made me more patient. I am also proud of making the flower board by hand. I cut around 320 pieces of fabric to finish it, which helped me become more determined and careful. Lastly, I am very happy with the final result. This project showed me how much I can achieve with hard work and perseverance.
DISASSEMBLY
Figure 11 Disassembly pictures
APPENDIX
1) ARDUINO CODE
Link: ARDUINO FINAL CODE
2) PROCESSING CODE
Link: PROCESSING FINAL CODE
2) PROCESSING END CODE (MESSAGE THAT WASN'T ADDED TO FINAL CODE)
Link: PROCESSING END CODE
BIBLIOGRAPHY
1."Perseverance." Cambridge Dictionary, Cambridge University Press, www.dictionary.cambridge.org/zht/%E8%A9%9E%E5%85%B8/%E8%8B%B1%E8%AA%9E-%E6%BC%A2%E8%AA%9E-%E7%B9%81%E9%AB%94/perseverance. Accessed 1 Dec. 2024.
2. C Code for LED Light Up - CodePal." CodePal, www.codepal.com/c-code-for-led-light-up. Accessed 1 Dec. 2024,
3.Processing Foundation. "Movie." Processing Video Reference, Processing Foundation, https://processing.org/reference/libraries/video/Movie.html. Accessed 1 Dec. 2024.
4.Processing Foundation. "createGraphics." *Processing*, Processing Foundation, https://processing.org/examples/creategraphics.html#:~:text=PGraphics%20is%20the%20main%20graphics%20and%20rendering%20context,to%20maintain%20two%20drawing%20surfaces%20with%20different%20properties. Accessed 1 Dec. 2024.
5.Processing Foundation. "Movie.stop()". Processing Reference, Processing Foundation, https://processing.org/reference/libraries/video/Movie_stop_.html. Accessed 1 Dec. 2024.
6. Study.com. "Boolean Expressions, Statements, & Logic Operators: Examples." Study.com, https://study.com/learn/lesson/boolean-expressions-statements-logic-operators-examples.html. Accessed 1 Dec. 2024.
7.Processing Foundation. "movieEvent()". *Processing Reference*, Processing Foundation, https://processing.org/reference/libraries/video/movieEvent_.html. Accessed 1 Dec. 2024.
8."Arduino Light Sensor Triggers LED." ArduinoGetStarted, ArduinoGetStarted.com. https://arduinogetstarted.com/tutorials/arduino-light-sensor-triggers-led#content_the_best_arduino_starter_kit. Accessed 1 Dec. 2024.
9."What Is a Flag Variable?" Stack Overflow, 25 Oct. 2013, stackoverflow.com/questions/17402125/what-is-a-flag-variable. Accessed 1 Dec. 2024.
10. “Easy Diode Laser LED Acrylic Signs! xTool D1 10 Watt Diode Laser Engraver.” YouTube, uploaded by Kim and Garette Make It!, 28 Apr. 2023, https://youtu.be/hdlBe0wztxY?si=wMMsaY06hUg-0Xme.
11. Crawford, Chris. The Art of Interactive Design: A Euphonious and Illuminating Guide to Building Successful Software. 1st ed., No Starch Press, 2002, pp. 2-7.