Positive Messages Box
The Positive Messages Box is a small, desk-friendly gadget that displays motivational quotes on an LCD screen.
The box only shows a new message when the user presses a push button and then tilts the box.
If the tilt happens without pressing the button first, the message will not change.
This gives the user full control over when a new positive message appears.
I Care About This Idea because Positive reminders can improve mood and productivity.
Even short messages like “Keep Going!” or “Believe in You” can make a big difference during the day.
I wanted to bring this concept from mobile apps into a fun, physical, and artistic device for the work desk.
I was inspired by motivational quote gadgets.
I combined the ideas of displaying text on an LCD and using simple sensors (push button and tilt) to create a device that is interactive, artistic, and uplifting.
Software
I used Tinkercad to simulate the circuit.
This helped me make sure it works correctly, without errors or damage to components 🙂.
I used Arduino IDE to write and upload the code directly to the Arduino UNO .
Materials (for the Enclosure)
4 Peaces of cardboard
Cutter
Scissors
Ruler
Glue Gun & Wax
Compasses
Scissors
Glue Gun & Wax
Cutter
Compasses
Ruler
Cardboard
Materials (for the circuit)
Tilt Sensor
Arduino UNO - Arduino Cable
LCD I2C
Male-Female Jumper Wires
Male-Male Jumper Wires
Buzzer
Breadboard
Push Button
First: To Simulate the Circuit
1- I opened the Tinker cad website in the browser.
2- logged in with my email.
3- Then I started creating a new circuit.
Second: Creating The Circuit
1- I searched for the components I needed:
a- Breadboard b- Arduino UNO c- Push Button d- Buzzer e- Slide Switch (Instead of Tilt Sensor in the simulation Only)
f- LCD I2C
2- I connected the Arduino GND to the Breadboard GND rail.
3- Then, I connected the LCD: its VCC to Arduino 5V
4- LCD GND to Arduino GND
5- LCD SDA to Arduino SDA
6- LCD SCL to Arduino SCL.
7- After that, I added the Slide switch (Simulation Only). Terminal1 of the button goes to breadboard's Positive Rail.
8- Terminal2 Connected to D7 on the Arduino.
9- Common to the GND rail on the breadboard.
10- For the buzzer, I connected the positive leg to D8 of the Arduino.
11- And the Negative leg to GND rail.
12- Then I added the Pushbutton, Positive Leg connected to the D6 of the Arduino
13- The Negative Leg connected to the GND rail.
Applying the Circuit in Real
To apply the circuit in real life, I followed the same steps I did in Tinkercad.
1- I started with the push button by connecting its negative pin to the breadboard GND rail.
2- Then the Push Button positive pin to pin D6 on the Arduino.
3- I placed the Tilt sensor on the breadboard, connecting its signal pin to D7 with a gray wire.
4- Then the negative pin of the sensor to the GND rail with a black wire.
5- The positive pin of the sensor to the positive rail with a red wire.
6- After that, I added the buzzer, wiring its positive leg to D8 on the Arduino with a yellow wire.
7- And its negative leg to the GND rail with a black wire.
8- I also connected the Arduino GND to the GND rail with a blue wire to make the ground connections united.
For the LCD:
1- I prepared male-female jumper wires: red for VCC, black for GND, orange for SDA, and yellow for SCL.
2- Then I connected the LCD GND to the breadboard GND rail.
3- The LCD VCC to the Arduino 5V.
4- The LCD SDA to the Arduino SDA pin (second pin on the digital side).
5- The LCD SCL to the Arduino SCL pin (first pin on the digital side).
Now the circuit is ready for Coding.👍
Coding
After completing the wiring, I moved on to writing the code in the Arduino IDE Software.
1- I began by including the required libraries (Wire.h) and (LiquidCrystal_I2C.h) to control the LCD screen.
2- Then, I defined the pins for the push button (D6), tilt sensor (D7), and buzzer (D8), along with variables to store their states (Button, Tilt Sensor)
3- I also created an array of motivational quotes that the LCD can display.
4- Then I set up a variable (int quoteIndex = 0;) to keep track of which quote is currently selected.
Void Setup
5- In the setup() function, I initialized the button and tilt sensor as INPUT_PULLUP (so they read LOW when pressed/tilted).
6- And the buzzer as an output.
7- I also initialized the LCD, turned on its backlight, and cleared the screen.
Void Loop
8- The main logic was written in the loop() function:
When the push button is pressed, the program switches to the next quote in the list.
If it reaches the end of the list, it loops back to the beginning.
When the tilt sensor is activated, the LCD clears, the buzzer beeps briefly, and then the selected quote appears on the screen letter by letter with a typing effect.
When the tilt sensor is released, the LCD clears again.
At the end of each cycle, the program updates the “last state” of the button and tilt sensor so it can detect changes correctly in the next loop.
Uploading the Code to the Arduino
After writing the code, I uploaded it to the Arduino, tested it with the actual circuit, and confirmed that everything worked as expected👍👌
Steps:
1- I first connected my Arduino UNO to my laptop using a USB cable.
2- Then, I opened the Arduino IDE and wrote my code.
3- After that, I went to Tools and made sure to select the correct board (Arduino UNO) and the right port for my device.
4- Before sending the code, I clicked on the Verify button to check for any errors.
5- Once it was verified, I clicked the Upload button to upload the code to the Arduino.
6- After a few seconds, the circuit work,
First, I prepared the box.
1- I made it from cardboard with the following dimensions: the upper and bottom pieces were (20×10) cm, the two smaller sides were (8×10) cm, and the two larger sides were (8×20) cm.
2- To make the assembly easier, I designed it in four pieces only by drawing the top together with one of the sides as a single piece and doing the same for the bottom with the opposite side.
3- On the top cover, I made a hole in the right side to insert the push button through it.
4- And a rectangular cutout for the LCD (for the dimensions, I took the game kit as a reference, LCD Rectangle, Push button circle and the Arduino power rectangle.
5- I started by placing the LCD into the rectangle I had cut earlier and fixed it using two nuts and two screws after making the holes with a compass.
6- Then, I installed the push button in its hole, removed the safety piece from it, and put it back again.
7- For the Arduino, I first tested the position, marked and made the holes, and fixed it in place.
8- To make sure it was mounted the right way without touching the bottom directly, I placed two nuts on each screw before setting the Arduino, then added another nut on top to secure it firmly.
9- After that, I attached the first cardboard piece to the bottom using a glue gun.
10- Next, I brought the breadboard, reconnected all the wires.
11- Then I fixed it to the bottom with a piece of glued cardboard so it wouldn’t move when I tilt the box.
(I chose to fix it on its small side because of the box design, so it could fit properly inside and also match the tilt direction)
12- Once everything was secure, I tested the circuit to make sure it was working well.
13- Finally, I closed the enclosure by gluing the remaining cardboard pieces and tested it again.
14- Everything worked perfectly. 👌👍
After completing the wiring, coding, and assembly, I focused on the finishing design of the box. I painted the Positive Box in black to give it a clean and modern look.
To make it stand out even more, I added a touch of gold for a shiny effect, which gave the box an elegant and artistic appearance.
This week, unfortunately, I didn’t watch all the videos before the end-of-week session.
So, during the session, I took the role of navigator while my colleague Mostafa was the driver.
He guided me through the process and taught me how to wire all the components needed for the activity to build the planter project, as well as how to do the coding for it.
This teamwork helped me understand both the wiring and the programming more effectively, and it showed me the value of peer support in the learning process.
The main challenge I faced was with the code.
Since I was trying to add new features and actions, I had to pause several times to search and learn how to implement them.
I tested different solutions I found, and after a few trials, everything worked successfully. ✌
From this experience, I learned that it’s normal to get stuck when coding something new, but persistence and research always help.
A tip for others doing this assignment is to be patient with the code, test step by step, and not be afraid to look for resources or examples before moving forward.
This is Me 😅
Learning how to properly wire components and connect them with the Arduino will help me design the hardware part of my project more confidently.
In addition, practicing coding with new features gave me experience in testing, troubleshooting, and improving the program step by step. These skills will allow me to combine hardware and software smoothly, making my final project more reliable and functional.
The coolest thing I learned this week was building the planter circuit, coding it, and seeing it work perfectly.
It really felt like a “wow” moment for me because before that, I didn’t know how it worked or what the exact steps were.
I also got to learn about the Moisture Sensor and how it can be used to detect soil moisture, which was a completely new and exciting experience for me.
The unforgettable moment was when my colleagues Mostafa & Yousef and I were reflecting on our planter project, and suddenly the cup of water spilled and made everything wet. But الحمد لله, nothing was damaged 😌, it was a funny and memorable experience I’ll never forget.
Title of Media