My project is called Fayd فيض. which in Arabic means a flow of emotions and feelings that embraces you. It is a mental health robot and mobile application that helps people build new habits and overcome negative emotions. It acts as your daily companion, guiding you to discover yourself in a better way.
I care deeply about this project because it is one of my main goals for this year, and I have a strong interest in psychology and mental health. That makes working on this project very meaningful to me.
Fusion 360
Using Fusion 360, I designed glasses by combining 2D and 3D modeling. The front face was sketched in 2D and exported as a DXF file for laser cutting. The arms were modeled in 3D, saved as an STL file, and prepared for 3D printing in Cura.
We used UltiMaker Cura 5.10.1 as the slicer software to convert our 3D models into G-code, which was then sent to the Creality Ender 3 3D printer. The printing material was PLA, an eco-friendly and easy-to-use filament made from organic sources, available in a wide range of colors.
We used LaserWorkV6 to prepare the 2D designs, convert DXF files into SLD format, and adjust the laser cutter settings. The designs were then produced using the El Malky laser cutter machine on 3mm plywood, chosen for its durability and ease of cutting.
I did not use any references; I started with sketches and hand drawings on paper to fully visualize the idea.
2. After that, I started designing the slots where the cards would be placed *5, making sure to leave space at the back to ensure the cards stay in place and do not fall out.
I started by creating the design as a 2D sketch using Fusion 360.
This is the side design of the box where we will place the candy.
I designed the base of the box to support the overall structure.
I designed the back of the box following the same approach.
I made sure the plywood sheet was properly aligned.
I checked the laser focus.
I set the speed to 15 and the power to 65.
I verified the size and frame.
Finally, I started the cutting process.
3D printing
Load the G-code file onto the printer’s SD card.
Ensure the build plate is clean and free of any debris.
Preheat the nozzle to the required temperature.
Check that the filament is properly inserted and ready.
On the printer’s menu, choose the file you want to print.
Finally, begin the printing process.
Joystick
LED
5v Power Adaptor
The connections started by wiring the project in Fritzing software, 🟢 First: understand Anode & Cathode
Anode (+) = the positive leg, goes to Arduino pin (through resistor if needed).
Cathode (–) = the negative leg, always goes to GND (ground).
So: Positive goes out from Arduino, Negative goes back to ground.
Role: Displays instructions, questions, and options to the user during the interaction.
Wiring:
VCC → Arduino 5V.
GND → Arduino GND.
SDA → A4
SCL → A5.
Role: Represents movement or a physical response in the project (e.g., pointing or moving when the user makes a choice).
Wiring:
VCC (Red) → Arduino 5V.
GND (Brown/Black) → Arduino GND.
Signal (Yellow/Orange) → D10.
Role: Provide user input, where each button corresponds to a specific feeling or choice.
Wiring:
Each button has 2 legs:
One leg goes to Arduino pin.
The other leg goes to GND.
Pin setup:
Sad → Pin 2
Happy → Pin 3
Angry → Pin 7
Calm → Pin 8
Confirm/Yes → Pin 9
Role: The LED lights up to indicate the location of the card that the user should pull.
Wiring:
LEDs connected to Arduino pins (D13, D12, D11, A4, A3).
Anode (positive leg) → connected to the pin.
Cathode (negative leg) → connected to GND through a resistor (220Ω).
5 pins:
VCC → 5V
GND → GND
VRx (X-axis) → A0
VRy (Y-axis) → A1
SW (button press) → Pin 6
Project Wiring Explanation:
The power source used in the project is a 5V adapter.
To connect it, I took a male-to-male jumper wire from the Arduino to the breadboard.
Instead of powering the circuit from the computer, I connected a Barrel Screw Adapter, linking the negative wire to GND and the positive wire to 5V.
Make sure the Arduino is not connected to the laptop while using the adapter to avoid damaging the board.
With a complete electrical connection on the breadboard, the project was successfully powered.
An additional note: I made the same wiring on Tinkercad, but since the Fritzing doesn’t support code simulation, and because Tinkercad doesn’t have all the components I used in the project, I replaced the joystick with push buttons to move and select. The purpose was only to make sure the project works and performs its function.
Circuit Implementation
In this video, there is a real-life simulation that shows the same circuit.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
This part calls the libraries:
Wire and LiquidCrystal_I2C → to make the LCD screen work.
Servo → to control the servo motor.
LiquidCrystal_I2C lcd(0x27, 20, 4);
Servo rewardServo;
Here we tell Arduino:
We have an LCD with address 0x27 size 20x4.
We have a servo named rewardServo.
const int buttonHappy = 2;
const int buttonSad = 3;
const int buttonAngry = 7;
const int buttonCalm = 8;
const int buttonConfirm = 9;
These are the push buttons.
Each button has its own pin → so Arduino knows which feeling was pressed.
const int ledHappy = 13;
const int ledSad = 12;
const int ledAngry = 11;
const int ledCalm = A3;
const int ledNeutral = A4;
These are the LED pins.
Each LED will light up when Arduino decides which card the user should pull.
const int servoPin = 10;
This tells Arduino that the servo is connected to pin 10.
int currentEmotion = -1;
This variable remembers which feeling the user chose.
-1 means nothing selected yet.
String questionsHappy[] = {...};
String questionsSad[] = {...};
These are arrays of questions for each feeling.
Example: if user presses "Sad" → Arduino will ask from questionsSad[].
void setup() {
lcd.init();
lcd.backlight()
rewardServo.attach(servoPin);
rewardServo.write(0);
When Arduino starts:
LCD is turned on.
Servo is connected and moved to 0° (locked position).
pinMode(buttonHappy, INPUT_PULLUP);
pinMode(buttonSad, INPUT_PULLUP);
All buttons are set as inputs.
Means Arduino will wait until they are pressed
pinMode(ledHappy, OUTPUT);
pinMode(ledSad, OUTPUT);
All LEDs set as outputs (they will light up when Arduino tells them).
lcd.setCursor(0,0);
lcd.print("Welcome to Fayd");
delay(2000);
Screen will say “Welcome to Fayd” for 2 seconds when powered on.
lcd.setCursor(0,0);
lcd.print("How do you feel?");
First message always → “How do you feel today?”.
if (digitalRead(buttonHappy) == LOW) currentEmotion = 0;
else if (digitalRead(buttonSad) == LOW) currentEmotion = 1;
Arduino checks buttons.
If user pressed “Happy button” → save currentEmotion = 0.
If pressed “Sad button” → save currentEmotion = 1.
askQuestions(currentEmotion);
After user chooses feeling → Arduino calls function askQuestions().
It will show a few questions one by one from that feeling’s list.
User answers using joystick (in final version).
if (currentEmotion == 0) digitalWrite(ledHappy, HIGH);
else if (currentEmotion == 1) digitalWrite(ledSad, HIGH);
Based on the final result → the LED for that card lights up.
Example: if sad → ledSad turns on.
LCD says → “Please pull the Sad card”.
lcd.print("Did you finish? Yes/No")
After a few seconds, Arduino asks if user finished reading/doing the task.
User presses confirm button.
if (confirmed) {
rewardServo.write(90);
lcd.print("Here is your reward!");
delay(2000);
rewardServo.write(0);
}
If user says Yes → servo moves (90°) → drops the reward.
After 2 seconds → servo goes back (0°).
lcd.print("Return card");
delay(2000);
turnOffAllLeds();
lcd.print("Have a nice day!");
Tells user to put the card back.
Turns off LEDs.
Wishes them a happy day.
Then cycle restarts again asking → “How do you feel today?”.
✅ That’s the flow.
It’s like a mini interactive game:
User picks feeling →
Arduino asks questions →
Arduino decides which card →
LED shows card →
User pulls card →
If finished → servo gives reward →
User returns card → restart.
The coding stage went through several phases, starting with writing the user journey on paper and defining the main functions, then testing using brackets on Tinkercad and converting them into code. I also relied on AI tools, YouTube tutorials, and GitHub resources until I reached the best and most accurate version of the code for implementing the project.
User Journey
The user powers on the device → LCD displays: "Welcome to Fayd".
LCD asks: "How do you feel today?"
The user presses the push button with their emotion (Happy, Sad, Angry, Calm).
LCD asks several questions about their state (multiple choice / true-false). The user answers using the joystick.
The algorithm determines their final emotion.
The corresponding card is selected → the LED for that card lights up, LCD says: "Pull the [Sad, for example] card".
After a few seconds, LCD asks: "Did you finish? Yes/No".
If user presses Yes → the servo moves and releases a reward.
If No → LCD says: "Take your time".
After the reward, LCD says: "Return the card".
LED turns off → LCD says: "Have a nice day!".
The cycle restarts with: "How do you feel today?"
Prompt for AI
"I want a complete and professional Arduino code for a project called Fayd. The project is a mental health device with: an LCD 20x4 (I2C), 5 push buttons (4 emotions: Happy, Sad, Angry, Calm + 1 Confirm button), 5 LEDs (each one represents a card), and a Servo motor for rewards. When powered on, the device says: 'Welcome to Fayd', then asks: 'How do you feel today?'. The user presses the button of their emotion. After that, the device asks some questions (write them for each emotion). The answers are selected with a Joystick Module. Then the device determines the right card, lights up the LED, and shows on the LCD: 'Pull the [emotion] card'. After a few seconds, it asks: 'Did you finish the task? Yes/No'. If Yes → the servo moves and gives a reward. If No → LCD says 'Take your time'. After that, LCD says 'Return the card', turns off the LED, and displays 'Have a nice day'. The code must include inline comments explaining every step."
Website Design
For QR Code Design
Using ChatGPT for Image Design and Gemini
Figma
Flutter Programming
Design Steps
I started first by designing the cards in Figma. The design began by giving a simple AI prompt describing the nature of the image, such as a faceless white person wearing a scarf in a fantasy setting representing happiness. From that, I generated the happiness image. Then, I took the card dimensions, which are 920 by 490, and started repeating the same process for the rest of the cards.
After designing and finishing the cards, I started designing the website pages. The website is interactive, consisting of a digital card whose content changes dynamically. I used Figma to design the layouts, and in the future, to make the website more professional, I plan to use Flutter programming and AI to create interactive questions specific to the site. I began designing each part, then clicked on the prototype icon in Figma
When you click on the Prototype icon, Figma allows you to create a prototype of the project. If you have a student subscription, you can generate instant code and publish the website; if not, you can stick to the prototype only. You define the key interaction points for each design—for example, the card will rotate. For instance, in the happiness screen, the interaction is that when the user clicks on the card, it rotates and the content inside changes. This part involves programming.
To create a QR code, click on Flow 1 or any flow, and Figma will generate a link for you. You take this link and enter it on a QR code generator website. It will create a shortened QR code that you can copy and add to the cards. Any changes made to the design will automatically update the QR code.
بسم الله
In this project, I faced several challenges. Starting with the design, there were many issues with the project dimensions. Additionally, since I was not fully dedicated most of the time, I forgot to make openings for certain parts, like the Arduino, and had to rely on double-sided tape. Technical problems with my device also hindered my use of Fusion 360.
The solution to this was to avoid opening multiple browsers while using Fusion, constantly run the join and simulation functions, and plan carefully before each step.
I also encountered issues with the push button openings. I initially designed using a large push button, but to solve this, I added a large nut on each side to secure its position.
I recommend creating a T-slot for this project because it requires permanent fixation at all times
Working on this project helped me learn and discover many aspects, both in myself and in the stages of design and construction in general.
I plan to add a button and sound effects to make the project more interactive, expressive, and engaging. If time permits, I would make the screen a smart one, showing the robot's facial expressions.
I aim to improve the user experience and the final finish of the external design using Fusion 360, professionally program the website, share it more widely, and build a community of Fayd users.
I also plan to add a sensor to detect the environment, which will influence the user's mood, making it a complete companion for the user