0% found this document useful (0 votes)
9 views10 pages

Tepe Report

The document outlines a project for creating a mechanical clock using various electronic components, including an Arduino Uno and multiple servos. It details the design, manufacturing process, and roles of team members, along with a breakdown of costs totaling 3810. Additionally, it includes the code used for programming the clock's functionality.

Uploaded by

ineedadobe8090
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views10 pages

Tepe Report

The document outlines a project for creating a mechanical clock using various electronic components, including an Arduino Uno and multiple servos. It details the design, manufacturing process, and roles of team members, along with a breakdown of costs totaling 3810. Additionally, it includes the code used for programming the clock's functionality.

Uploaded by

ineedadobe8090
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

MECHANICAL CLOCK

NAME OF TEAM MEMBERS:

NAME ROLL NO.

VARUN 2024005625

JOEL 2024003553

SRI HARSHINI 2024003942

HARSHA 2024007462

SAMPATH 2024004108

JATIN 2024005744

WORKING STILLS:

DESIGN:
ELECTRONIC CIRCUIT IN TINKERCAD :

LIST OF COMPONENTS:

 Arduino Uno
 DS1302 Clock Module
 2 x PCA9685 16Ch Servo Drivers
 28 x Micro Servos
 Ribbon Cable
 Power Supply

MATERIAL OF EACH COMPONENT:

 Arduino Uno – Fiberglass (PCB), copper traces, plastic casing, metal pins
(steel/brass)
 DS1302 Clock Module – Fiberglass PCB, silicon chip, copper, plastic headers
 PCAG685 Servo Driver (x2) – Fiberglass PCB, copper, plastic, electronic
components (resin, silicon)
 Micro Servos (x28) – Plastic casing, metal gears (often brass or steel), copper
windings, PCBs inside
 Ribbon Cable – Copper (wires), PVC (plastic insulation)
 Male– metal-plated brass pins, plastic base

How is the component going to be manufactured (built using tools or 3D printing or buying
ready made parts, or assembling from individual parts)?

components are either 3D printed, assembled from individual parts, or purchased as


ready-made electronics. The segments and digit frames are 3D printed using PLA filament.
Electronics like the Arduino, servos, RTC, and servo drivers are bought pre-made. These
are then assembled and wired together on a custom-built MDF frame, which is cut and
painted manually.

 Arduino Uno – Bought Ready Made


 DS1302 Clock Module - Bought Ready Made
 2 x PCA9685 16Ch Servo Drivers - Bought Ready Made
 28 x Micro Servos - Bought Ready Made

CODE:

#include <virtuabotixRTC.h>

#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwmH = Adafruit_PWMServoDriver(0x40);


Adafruit_PWMServoDriver pwmM = Adafruit_PWMServoDriver(0x41);

int servoFrequency = 50;

int segmentHOn[14] =
{385,375,385,375,382,375,354,367,375,385,375,368,371,375};

int segmentMOn[14] =
{382,395,378,315,375,340,345,380,385,365,290,365,315,365};

int segmentHOff[14] =
{200,200,550,480,200,520,200,200,200,480,550,200,515,200};

int segmentMOff[14] =
{200,200,550,440,200,480,200,200,200,550,450,200,430,200};

int digits[10][7] =
{{1,1,1,1,1,1,0},{0,1,1,0,0,0,0},{1,1,0,1,1,0,1},{1,1,1,1,0,0,1},{0,
1,1,0,0,1,1},
{1,0,1,1,0,1,1},{1,0,1,1,1,1,1},{1,1,1,0,0,0,0},{1,1,1,1,1,1,1},{1,1
,1,1,0,1,1}};

virtuabotixRTC myRTC(6, 7, 8);

int hourTens = 0;

int hourUnits = 0;

int minuteTens = 0;

int minuteUnits = 0;

int prevHourTens = 8;

int prevHourUnits = 8;

int prevMinuteTens = 8;

int prevMinuteUnits = 8;

int midOffset = 100;

void setup()
{ pwmH.begin();

pwmM.begin();

pwmH.setOscillatorFrequency(27000000);

pwmM.setOscillatorFrequency(27000000);

pwmH.setPWMFreq(servoFrequency);

pwmM.setPWMFreq(servoFrequency);

//myRTC.setDS1302Time(00, 10, 16, 5, 8, 4, 2020);

for(int i=0 ; i<=13 ; i++)

pwmH.setPWM(i, 0, segmentHOn[i]);

delay(10);

pwmM.setPWM(i, 0, segmentMOn[i]);

delay(10);

delay(2000);

void loop()

myRTC.updateTime();

int temp = myRTC.hours;

hourTens = temp / 10;

hourUnits = temp % 10; temp = myRTC.minutes;


minuteTens = temp / 10;

minuteUnits = temp % 10;

if(minuteUnits != prevMinuteUnits)

updateDisplay();

prevHourTens = hourTens;

prevHourUnits = hourUnits;

prevMinuteTens = minuteTens;

prevMinuteUnits = minuteUnits;

delay(500);

void updateDisplay ()

updateMid();

for (int i=0 ; i<=5 ; i++)

if(digits[hourTens][i]==1)

pwmH.setPWM(i+7, 0, segmentHOn[i+7]);

Else

pwmH.setPWM(i+7, 0, segmentHOff[i+7]);

delay(10);

if(digits[hourUnits][i]==1)

pwmH.setPWM(i, 0, segmentHOn[i]);
Else

pwmH.setPWM(i, 0, segmentHOff[i]);

delay(10);

if(digits[minuteTens][i]==1)

pwmM.setPWM(i+7, 0, segmentMOn[i+7]);

Else

pwmM.setPWM(i+7, 0, segmentMOff[i+7]);

delay(10);

if(digits[minuteUnits][i]==1)

pwmM.setPWM(i, 0, segmentMOn[i]);

Else

pwmM.setPWM(i, 0, segmentMOff[i]);

delay(10);

void updateMid()

if(digits[minuteUnits][6]!=digits[prevMinuteUnits][6])

if(digits[prevMinuteUnits][1]==1)

pwmM.setPWM(1, 0, segmentMOn[1]-midOffset);
if(digits[prevMinuteUnits][6]==1)

pwmM.setPWM(5, 0, segmentMOn[5]+midOffset);
}

delay(100);

if(digits[minuteUnits][6]==1)

pwmM.setPWM(6, 0, segmentMOn[6]);

Else

pwmM.setPWM(6, 0, segmentMOff[6]);

if(digits[minuteTens][6]!=digits[prevMinuteTens][6])

if(digits[prevMinuteTens][1]==1)

pwmM.setPWM(8, 0, segmentMOn[8]-midOffset);
if(digits[prevMinuteTens][6]==1)

pwmM.setPWM(12, 0, segmentMOn[12]+midOffset);

delay(100);

if(digits[minuteTens][6]==1)

pwmM.setPWM(13, 0, segmentMOn[13]);

Else

pwmM.setPWM(13, 0, segmentMOff[13]);

if(digits[hourUnits][6]!=digits[prevHourUnits][6])

if(digits[prevHourUnits][1]==1)

pwmH.setPWM(1, 0, segmentHOn[1]-midOffset);
if(digits[prevHourUnits][6]==1) pwmH.setPWM(5, 0,
segmentHOn[5]+midOffset); } delay(100);

if(digits[hourUnits][6]==1)

pwmH.setPWM(6, 0, segmentHOn[6]);

Else

pwmH.setPWM(6, 0, segmentHOff[6]);

if(digits[hourTens][6]!=digits[prevHourTens][6])

if(digits[prevHourTens][1]==1)

pwmH.setPWM(8, 0, segmentHOn[8]-midOffset);

if(digits[prevHourTens][6]==1)

pwmH.setPWM(12, 0, segmentHOn[12]+midOffset);

delay(100);

if(digits[hourTens][6]==1)

pwmH.setPWM(13, 0, segmentHOn[13]);

Else

pwmH.setPWM(13, 0, segmentHOff[13]);

}
ROLE OF EACH MEMBER:

NAME ROLE
VARUN Assembling
JOEL Carpenting and wood work
SRI HARSHINI Financial Management
HARSHA Documentation
SAMPATH Circuits connections & Code
JATIN Carpenting and wood work

Total bill :-

· DS1302 Clock Module - 190


· 2 x PCA9685 16Ch Servo Drivers 3 / 10 - 250x2 - 500
· 28 x Micro Servos - 105x28 - 2940
· Jumper wires (30MM,30 MF,30 FF) - 60X3 - 180
· Power Supply - 190
· TOTAL  3810

You might also like