Propeller LED Pendulum Clock

by inventor KR in Circuits > Arduino

570 Views, 2 Favorites, 0 Comments

Propeller LED Pendulum Clock

Propeller LED Pendulum Clock.jpg
how to make propeller clock arduino nano, science project , electronics ,jlcpcb

Creating a propeller LED pendulum clock is a unique and interesting project that combines elements of mechanical design, electronics, and programming. Here's a general guide to help you get started:

Supplies

Screenshot (113).png

Circuit diagram

Screenshot (194).png
Screenshot (195).png
Screenshot (196).png
Screenshot (197).png
Screenshot (198).png
Screenshot (199).png
Screenshot (200).png
Screenshot (201).png
Screenshot (202).png
Screenshot (203).png
Screenshot (204).png
Screenshot (205).png
Screenshot (206).png
Screenshot (208).png
Screenshot (209).png
Screenshot (210).png
Screenshot (211).png
Screenshot (212).png
Screenshot (213).png

### Materials Needed:


1. **Clock Mechanism:**

  - Clock movement kit with pendulum (available in hobby stores or online).


2. **Propeller:**

  - Lightweight propeller (you can find suitable ones in hobby or drone stores).


3. **LEDs:**

  - Addressable RGB LEDs (such as WS2812B or APA102).


4. **Microcontroller:**

  - Arduino (or similar microcontroller) for programming and controlling the LEDs.


5. **Power Supply:**

  - Depending on the number of LEDs and their power requirements, choose an appropriate power supply (battery or AC adapter).


6. **Frame and Base:**

  - Wood or acrylic for creating the clock frame and base.


7. **Wires, Connectors, and Tools:**

  - Jumper wires, soldering iron, solder, screwdriver, drill, saw, etc.


### Steps:


1. **Design the Clock Frame:**

  - Plan and design the frame that will hold the clock mechanism, propeller, and LEDs. Ensure it's stable and aesthetically pleasing.


2. **Assemble the Clock Mechanism:**

  - Follow the instructions provided with the clock movement kit to assemble the clock mechanism and pendulum.


3. **Attach the Propeller:**

  - Attach the lightweight propeller to the clock movement spindle. Ensure it's balanced to prevent wobbling.


4. **Prepare the LEDs:**

  - Arrange the addressable RGB LEDs along the length of the propeller blades. Secure them in place using glue or other appropriate means.


5. **Connect LEDs to Microcontroller:**

  - Connect the LEDs to the microcontroller using jumper wires. Make sure to follow the specifications of the LED strip.


6. **Power Supply Setup:**

  - Connect the power supply to the microcontroller and ensure it can provide enough power for both the microcontroller and LEDs.


7. **Programming:**

  - Write a program for the microcontroller to control the LEDs in a way that creates visually appealing patterns or displays the time. You can use the Arduino IDE for programming.


8. **Mounting and Testing:**

  - Mount the entire assembly on the frame. Test the clock to ensure that the LEDs light up and the propeller spins correctly.


9. **Final Assembly:**

  - Once everything is working as expected, finalize the assembly by securing all components in place.


10. **Fine-tuning:**

  - Adjust the programming and mechanics as needed to achieve the desired visual effects and ensure accurate timekeeping.


Remember to follow safety precautions, especially when working with power tools and soldering irons. Additionally, customize the design and programming according to your preferences to make your propeller LED pendulum clock unique.

Screenshot (214).png

Programming code


// inventor KR

// 10-02-2019 Arduino_NANO_Propeller_LED_Analog_Clock


unsigned int i,n,k,d,y;

unsigned long previousTime = 0;


byte hours = 12;  // start time

byte minutes = 15;

byte seconds = 00;


int val;


void setup() 

{

 DDRD = 0xFE;

 DDRB = 0xFF;

 DDRC = 0xFE;

 PORTC = 0x01;  

 PORTD = 0x03;

 PORTB = 0x00;

  

 if(hours == 12)

 hours = 0;

}


void loop() 

{

   while(bit_is_clear(PINC, 0))

   { 

   }

 if (millis() >= (previousTime)) 

 {

   previousTime = previousTime + 1000;

   seconds = seconds +1;

   if (seconds == 60)

   {

    seconds = 0;

    minutes = minutes +1;

   }

   if (minutes == 60)

   {

    minutes = 0;

    hours = hours +1;

   }

   if (hours == 12)

   {

    hours = 0;

   }  

 }  

 k=30;

 n=0;

 while(n < 60)

 {

 PORTC |= (1<<5);

 if ((k==0) || (k==5) || (k==10) || (k==15) || (k==20) || (k==25) || (k==30) || (k==35) || (k==40) || (k==45) || (k==50) || (k==55))

 {

 PORTC |= (1<<4);

 PORTC |= (1<<3);  

 }

 if ((k==0) || (k==15) || (k==30) || (k==45))

 {

 PORTC |= (1<<2);

 PORTC |= (1<<1);   

 }

 if((k == hours*5) || (( k == 0 ) && (hours == 0)))

 {

 PORTD |= (1<<2); 

 PORTD |= (1<<3); 

 PORTD |= (1<<4); 

 PORTD |= (1<<5); 

 PORTD |= (1<<6); 

 PORTD |= (1<<7); 

 PORTB |= (1<<0); 

 }

 if(k == minutes)

 {

 PORTD |= (1<<2); 

 PORTD |= (1<<3); 

 PORTD |= (1<<4); 

 PORTD |= (1<<5); 

 PORTD |= (1<<6); 

 PORTD |= (1<<7); 

 PORTB |= (1<<0); 

 PORTB |= (1<<1);

 PORTB |= (1<<2);   

 }

 if(k == seconds)

{

 PORTD |= (1<<2); 

 PORTD |= (1<<3); 

 PORTD |= (1<<4); 

 PORTD |= (1<<5); 

 PORTD |= (1<<6); 

 PORTD |= (1<<7); 

 PORTB |= (1<<0); 

 PORTB |= (1<<1);

 PORTB |= (1<<2); 

 PORTB |= (1<<3);

 PORTB |= (1<<4);

}

 delayMicroseconds(140);

 PORTD = 0x03;

 PORTB = 0x00;

 PORTC = 0x01; 

 PORTD |= (1<<2); 

 delayMicroseconds(30);

 PORTD &= ~(1<<2);   

 delayMicroseconds(600);

 n++;

 k++;

 if(k == 60)

 k=0;

 }

 while(bit_is_set(PINC, 0))

 { 

 }   

}