DIY Time Control Machine




About: I like to create things, handmade weapon, arduino projects, science and some crazy staff! Also I like to capturing videos about my projects and I have YouTube channel - MadGyver!

This project is about how to make a time machine! This machine looks like a glove, and can "stop" any moving subject. At first, watch a video with some demonstration and experiments, guess how it works, and then read about how to make it =)

This effect looks like better in real life (by naked eye, not through a camera), without black lines. Smooth perfect time stop effectc!! IT IS REAL "OH MY GOD" REACTION!

Step 1: All We Need

Generally this project is about Arduino, high-power LED and some tricky magic with soldering iron. Here is some list with links to Aliexpress

Step 2: Wiring

Step 3: Assembling Power Part

At first connect battery, DCDC and MOSFET. Also you need to tune DCDC to 34 V output voltage.

Step 4: Assembling Logic Part

Connect potentiometer and IMU to arduino

Step 5: Fixing on Glove

Fix all parts on glove, using cable ties and velcro strip.

Step 6: LED and Cooling Plate

Fix LED on copper plate, and don't forget to smear thermal paste between them.

Step 7: Fixing LED

Finely, place LED on it's place on glove in order:

  • Metal mount
  • Glove fiber
  • Lense
  • LED
  • Cooling plate

Step 8: Flashing Arduino

You can download sketch and schemes on project's project page on GitHub, also arduino code you can find in attached files.

Step 9: How to Control Time?

This "Time Machine" is just a stroboscope with frequency adjustment. Shake your hand in Z direction of accelerometer (fast move your hand forward), LED will be turned on. Shake again to turn it off.

Use potentiometer for coarse tuning, and glove tilt for accurate tuning. When frequency of object coincide with frequency of LED, it will "stop". And you can adjust "time" for it, tilting your hand, so object will slowly move at normal direction, or reverse. You can watch video about how it works and "freeze" some fast moving objects.

You can use this for pranks and demonstration of stroboscopic effect. Enjoy!



  • Classroom Science Contest

    Classroom Science Contest
  • Paint Challenge

    Paint Challenge
  • Backyard Contest

    Backyard Contest

65 Discussions


3 months ago

Hello Guys I'm doing this Right now for my project With some twist my Professor told me to add I2C LCD to print the measurement of RPM while adjusting the potentiometer. What program should i use or add to use this i2c LCD

1 reply

Question 9 days ago

Please help me in programming. What i should do with kalman.h file....its our project...please reply fast


Question 2 months ago on Step 1

when i try to compile your code, its showing error compiling for board
i tried changing nano to uno and mega aslo the same problem happens
please helo


Question 2 months ago

I AM SO DRAINED :( guys can you help me how to do the triggering On and OFF light of the system, i have shaken every angle but it wont turn ON/OFF what should i do? :(


Question 2 months ago on Step 3

Can we use ac DC adapter of 35volt for this project , I was using 12volts 5amp ac DC adapter but my led I not working which is 80watt


Question 3 months ago on Step 8

how can i upload the program in arduino nano? should i upload both programs individually or i have to paste both programs in a single folder and upload main program and the called program kalman.h will be uploaded simultaneously.


Question 3 months ago

hey every one am a young boy of 16 yrs good at robotics and in ma country i lack supporters...can i get one


4 months ago

how can i get code for this project..


Tip 12 months ago

VERY IMPORTANT: You have to have the Arduino IDE 1.6, otherwise it wont work! Alex Gyver did not post this here! It took me weeks till I figured that out, seriously.

With that said, the time machine is very nice and actually not that hard to do. You could go with the more expensiv and quicker way, buy all the same parts on amazon with prime (at least I have prime), which would cost me about 50€, not included the XT60 connectors, in my case li.ion batteries and the charger for your battery pack. You may need to buy some smaller srews that fit, some zip ties, if you dont have any and the copper platte, which i bought from ebay for 18€(10x10cm) .I should have bought it with the other parts, it would cost about 3€. But unfortunately I bought it when all the parts came, and I didnt want to wait for another 2-3 weeks. However, i bought all the parts on ebay for 15€, exclusive the XT60 connector, Batteries, battery charger, and screws. So if you want to do this project, do not forget about the parts i mentioned. Buy all them at once on Aliexpress or Ebay.

4 replies

Reply 4 months ago

Which program should be used in Arduino .....kalman.h or time glove accept....rply me sir fast as u can...


Reply 12 months ago

Hi, what battery do you use for your glove? I can´t find the same battery as the original proyect and I don´t want to fuse the led


Reply 12 months ago

Hi, I just bought 3x 3.7v 2200mah li-ion batteries at my local electronics store. And I connected them all in series, for 12v of course. Some of these batteries are pretty expensive, but i bought the cheapest, one for 4€. So I they costed me 12€. But if you have a broken laptop/Notebook, you can reuse those. I bought online some broken laptops for very cheap just to reuse their batteries and other stuff that might be usefull. Hope I could help you.


5 months ago

What do I have to do with the Kalman.h ? do I just need to flash my Arduino with the normal code or what ?


Question 5 months ago on Step 2

Shall we use aluminium sheet instead of copper sheet


1 year ago

This is awesome.... so awesome I followed the guide and made my own :) (pics to follow later) BUT, I'm having an issue.... I can't turn it on / off like you do in the video. I can't shake it in any direction to turn on/off?

Also, my light "flashes" what I mean is, other than the strobe effect it turns on and off, so let's say it strobes for 500ms then turns off for 500ms, it's not constant strobing like your video.

I've triple checked my wiring so I'm stuck. For what it's worth, during testing I'm powering from a 12v 2a mains supply, so no battery to go flat

2 replies

Reply 1 year ago

Another quick update... For some strange reason, it didn't like the i2cread and i2cwrite method used in the sketch... I adjusted mine and now it works perfectly :)

Thanks again for an awesome project :)

For anyone curious, here is the "modded" code I used to get it working for me:

int light = 500; // LIGHTS ON delay, microseconds

int dark; // LIGHTS OFF delay

int min_dark = 1; // min dark delay

int max_dark = 50; // max dark delay

#define light_pin 3 // MOSFET pin // Was pin 2 - JT

#define potent_pin 6 // potentiometer pin

int angle;

boolean flag;

long lastchange;

#include <Wire.h>

#include "Kalman.h"

Kalman kalmanX;

Kalman kalmanZ;

const int MPU_addr = 0x68; // I2C address of the MPU-6050

/* IMU Data */

int16_t accX;

int16_t accY;

int16_t accZ;

int16_t tempRaw;

int16_t gyroX;

int16_t gyroY;

int16_t gyroZ;

double accXangle; // Angle calculate using the accelerometer

double accZangle;

double temp;

double gyroXangle = 180; // Angle calculate using the gyro

double gyroZangle = 180;

double compAngleX = 180; // Calculate the angle using a Kalman filter

double compAngleZ = 180;

double kalAngleX; // Calculate the angle using a Kalman filter

double kalAngleZ;

uint32_t timer;

void setup() {


pinMode(light_pin, OUTPUT);


Wire.write(0x6B); // PWR_MGMT_1 register

Wire.write(0); // set to zero (wakes up the MPU-6050)


kalmanX.setAngle(180); // Set starting angle


timer = micros();


void loop() {

measure(); // obtain acceleration and angle speeds

if (accZ > 25000 && (millis() - lastchange > 300)) { // Z axis shake detection

flag = !flag; // toggle light

lastchange = millis(); // timer



if (flag == 1) {

angle = 250 - kalAngleZ; // calculate angle (with 250 degrees offset)

// dark times calculation

dark = map(analogRead(potent_pin), 0, 1024, min_dark, max_dark);

digitalWrite(light_pin, 1); // lights up

delayMicroseconds(light); // wait

digitalWrite(light_pin, 0); // lights down

delay(dark); // wait

delayMicroseconds(2000 + angle * 10); // extra wait



// oh my god, it's some tricky sh*t

void measure() {


Wire.write(0x3B); // starting with register 0x3B (ACCEL_XOUT_H)


Wire.requestFrom(MPU_addr,14,true); // request a total of 14 registers<<8|; // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)<<8|; // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)<<8|; // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)<<8|; // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)<<8|; // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)<<8|; // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)<<8|; // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)

/* Calculate the angls based on the different sensors and algorithm */

accZangle = (atan2(accX, accY) + PI) * RAD_TO_DEG;

accXangle = (atan2(accY, accX) + PI) * RAD_TO_DEG;

double gyroXrate = (double)gyroX / 131.0;

double gyroZrate = -((double)gyroZ / 131.0);

gyroXangle += kalmanX.getRate() * ((double)(micros() - timer) / 1000000); // Calculate gyro angle using the unbiased rate

gyroZangle += kalmanZ.getRate() * ((double)(micros() - timer) / 1000000);

kalAngleX = kalmanX.getAngle(accXangle, gyroXrate, (double)(micros() - timer) / 1000000); // Calculate the angle using a Kalman filter

kalAngleZ = kalmanZ.getAngle(accZangle, gyroZrate, (double)(micros() - timer) / 1000000);

timer = micros();



Reply 5 months ago

Is your wiring the same with this code i want to use this code but gotta make sure its the same when i use the wiring as shown here