some videos that inspire me
this project is 3D printing 7 segment shows from 0 to 9 that work as clock with alarm function to set reminders. and color control as feature i get inspiration from channel on YouTube that make a 7 segment and add letters The idea came from a YouTube project where someone designed a 7-segment display with letters. I really liked it because it had an awesome shape, and I wanted to add more functionality, such as an alarm or color control.
How it works
there will be Leds That will light up and turn off to change the figure of number that will show by using Arduino as brain of project and connect Leds with breadboard to deliver current to Leds. there will be a joystick to control color of segment . it will be elegant to decorate room
my project consists of 7 segments Separated from the body
then make a box for electronics encloser
components
neopixil led: it is the source of light and can control brightness and color of it
Joystick Module : To navigate settings (e.g., adjusting time, changing colors).
RTC Module (Real-Time Clock) : Keeps track of time accurately, even if the power is off
Breadboard: Used to place and connect various electronic components
Arduino Uno: The microcontroller used to control the circuit.
Jumper Wires (Male-Male / Male-Female): Used to make electrical connections between components on the breadboard and other terminals.
5V Adapter: Regulates the voltage to 5V to protect the components.
Arduino Cable: Connects the Arduino to a PC for uploading code or powering the Arduino.
software
Arduino IDE: A software platform used for writing and uploading text-based code to the Arduino.
fusion 360: as design software i used it to design parts of project the 2D parts as box / 3D parts
ultimaker cura :i upload STL files on it, it can produce G code can show numbers of layer and if it needs support and work on all 3D printing machine
Laser CAD as software to prepare 2D files
Tinkercad /fritzing: I used them to simulate my electronic circuit because some components i can't find it on tinkercad so i used fritzing
tools
screw : i used m 3 screw to make sure parts are attach to each other
nut: use it with screw
Screwdriver: For use in inserting and fastening screws
TAPE: to enhance attachment of wires (male female )
materiel
plywood 3mm as material
PLA: as 3D printing materiel
machines
3D printing FDM ( creality - ender-3/ender-3 v2)
Lasser cutter elmaliky
CAD processing
first i low-fidelity cardboard prototype by carboard to take right dimensions that i will apply in fusion 360
then start to draw the parts on fusion
startز a new component and called it 7 segments
then start sketch from top plane and draw segments by lines and rectangle after that i start to modify dimensions, angles to make the digits and make it fully define / extrude of sketch 7 mm / do offset (.8 ) to digit face and make extrude cut 6.8
second part body of segments
make new component and start new sketch then draw rectangle and make projection for the digit to make cut in the body after that i draw a hole in the corner to put screws in it and stabilize 7 segments to the back of it. / Extrude 7mm
third part back of 7 segment
i download neopixil step file to make holes for it in the back part in the right position / start new sketch and draw a rectangle then draw the holes depending on neopixil position / extrude 3 mm
front part of box
Create a large rectangle Inside it, design a smaller rectangle with holes (slots) for mounting and ventilation.
Project the shape of the adapter jack and Arduino to ensure precise cutouts.
Add a dedicated space to securely attach the adapter or cable, ensuring easy access and stability.
bottom / top of box
make a new sketch and draw rectangles then make project to draw slots on taps / download Arduino step file - breadboard step file then draws holes by project for holes of arduino / extrude 3 mm except hole and slots
then i take copy of the bottom but remove the holes of Arduino and breadboard
after that i see someone on maker studio for breadboard to stabilize it in the plywood by drawing rectangle and in middle of it circle 3 mm. then make a sketch in new plan to draw the rest of breadboard stabilizer then extrude 4 mm
sides of box
start new sketch and draw rectangle and tabs with t slot then duplicate it / in one of the 2 sides i make place for two joysticks
assembly on fusion
first i insert components to make joint between them and download step files for electronics such as arduino and breadboard
back with neopixil
body with digit
body of segment
2 7 segment
2 segment with neopixil
segment with back
segment and top part
segment with bottom part
bottom part with arduino
bottom with arduino and breadboard
side of joystick with the box
add wood apperance and pPLA
first i started with 3D printing parts the segments and body
1. Preparing the Model in Ultimaker Cura ( segments )
Set infill to 0% to eliminate unwanted shadows inside the print.
Added supports since the model was positioned flat to increase the base of support.
Applied a brim for extra adhesion and stability during printing.
layer high( .2) : it is good for provides a balance between detail and print time
2. Exporting and Printing
Exported the prepared model as G code to an SD card and transferred it to the 3D printer.
Started the printing process, ensuring all settings were optimized
( body)
for the body it requires 8 hours to print, it was scheduled it for overnight printing to save time. and it need infile 10 % without brim or support because it was lying flat and have a big base of support
( holder for breadboard)
it needs a support material, infille 10% and brim because it has small base of support, so it has risk to move from bed during printing. all of them used PLA materiel the body needed black color an segment white color
laser cutting parts ( back - front - side - side with joystick - top-bottom)
they all were cut except the side i made it once speed cut but i did not like it so i made it again by engrave
.I prepare the file by selecting where I want to cut or speed cut or engrave and chose a different color for each order
black for cutting : outer circle made it black to cut it and adjust the parameters of speed and power according to the machine speed 10 / power 65
blue for speed cutting: i choice inner circle and body as speed cut it draw linens as in dfx file speed 100 / power 50
Red for engrave : penguin beak engrave speed 300/ power 50
After finishing, I export the file in DFX format to laptop and then download it to the machine through the download button and then I specify the place where the Machin can start by pressing the origin button and check if the area is suitable by pressing the square button
after i finished from fabrication i start to assembly it with components to figure if there is any problem in it
input
Components and Their Functions
RTC Sensor: Tracks real-world time and sends it to the Arduino.
Joystick: Controls brightness and color.
NeoPixel: Displays numbers using light patterns.
2. Testing the Electronics
After receiving the electronic components, I tested them individually to check for any issues. I discovered that one NeoPixel was not working.
3. Research and Code Setup
To ensure proper functionality, I searched on Arduino Hub for information on NeoPixel, joystick, and RTC connections and code. I found the following useful libraries:
Adafruit NeoPixel (for controlling NeoPixels)
RTClib (for working with the RTC module)
4. Code Testing and Integration
I first tested each component separately using individual codes. Once they were working correctly, I started integrating them into a single system.
One challenge I faced was mapping the joystick values correctly. To solve this, I used AI assistance to understand and apply the correct mapping for the joystick.
so the final code funcution was send data from rtc and joystick and display it by neopixil
neopixil:
vcc to the positive of circuit
ground to the negative
data in to pin signal of Arduino
data out to the next neopixil data in
joystick
ms to signal in of arduino (2)
vrx to A1
vry to A0
VCC to positive of circuit
ground to negative of circuit
RTC
VCC : to positive of breadboard
ground : to negative of breadboard
SCL : A4
SDA : A5
Arduino make common ground for it and take a wire form postive to v in in arduino by adaptor 5v 2A
adaptor 5v 2A / i read how much each component will consumed V / A and findout that 5 V and 2A will be enough
How code works:
i use RTC as input that track the time and import this data Arduino which as connected to neopixil that i define it as segment so i made Arduino show the time by numbers by this segment that i define each one of it to arrange it to display the number
after each minute it display digit of minutes instead of hours for 10 seconds then return to display hours again
i use joystick to control color and brightness and when press on it will save the data of color and brightness and make as lock mode until i press on it again
library that i use in code
Joystick X-axis (A0) → Controls color.
Joystick Y-axis (A1) → Controls brightness.
Joystick button (Pin 2) → Toggles fixed/dynamic color mode
NeoPixel LED strips are connected to Pin 11 and Pin 12.
Each display uses 7 LEDs to represent a 7-segment digit.
strip1 → Controls the first 7-segment display.
strip2 → Controls the second 7-segment display.
rtc → Manages real-time clock functions.
hue → Controls the color (HSV format).
brightness → Controls brightness (0-255).
colorFixed → False = dynamic mode (joystick controls color).
fixedHue / fixedBrightness → Stores the last selected color & brightness when the button is pressed.
lastDisplayedMinutes → Ensures the display updates only when minutes change
Initializes Serial Monitor for debugging.
Configures the button as an input with a pull-up resistor.
Initializes NeoPixel strips and sets brightness.
Checks if the RTC module is connected.
If RTC lost power, it sets the time to the compilation time.
Starts the display at "00".
Reads the current minutes from the RTC module
Extracts the tens and ones place of the minutes.
Updates the display only when minutes change.
Uses fixed colors if colorFixed is true, otherwise, joystick values.
Lights up the correct segments based on the number.
Video of testing adafruit neopixil library with the neopixil connection
Video of testing rtc lib library with rtc connection on serail monitor
after that tests i start to work these 2 modules together after i searched on Arduino hub and library to know how to write the code
assembly of 7 segment
after that i start to assembly the wood parts as showen in the photos
neopixil with front face
segment after amounting neopixil
bottom with Arduino
bottom with aruino and breaboard
assembely front face and bottom after connected neopixil
i explain how this project work
My friend Abdullah told me that I can download these parts when I told him I couldn't find some components on Fritzing
one of the faces has taps that is bigger than slots
solutions
i grinding it to leave some space i know this solution because i used it before in one of my assignments
second problem
was use of joystick when i made hole for it still has limit and can't use it correctly
solutions
i put the joystick out of the box
third problem
i did not know what the best mapping is for the joy stick because it is first time i use this module
solution
i search on Arduino hub and use chat gpt to know what the best mapping for joystick is then know i can determine it by use serail monitor by see values it can produce / specialist Mahmoud told us about Arduino hub site that can help us
Arduino hub
https://www.bing.com/ck/a?!&&p=5eb8cb889ab34b0a1bec46668ddd66bad69972df62b48c6991ab2b9c38609b4eJmltdHM9MTc0MTkxMDQwMA&ptn=3&ver=2&hsh=4&fclid=181c9426-4cc5-6fd1-3fc2-80214db26e09&psq=arduino+hub&u=a1aHR0cHM6Ly9wcm9qZWN0aHViLmFyZHVpbm8uY2Mv&ntb=1
make for segment not 2 and add alarm in it + make an applecation to control the alarm and setting time