How to build another useless machine: easy to make, and hard to use!

Picture of How to build another useless machine: easy to make, and hard to use!
So many useless machines are built, why building another one? Simply, it is really fun :), fun to build and fun to play with.

I tried to give this version a character, as I always felt there is somebody  "thinking inside the box", so here I tried, I hope I succeeded to give "her" a life!

I am really happy to share with you all the steps, with all hopes that you will be easily building yours and giving it a bitter or better character! My version is based on Arduino, you may think it is an overkill, but given the flexibility it gave me, I think it is worth it.

Here is a video of everything  put all together. Later, we will move into the parts, steps, schematics and code

Let me know your comments and/or questions if any.

Hope you enjoy!

Remove these adsRemove these ads by Signing Up

Step 1: How it works?

Everything is connected to an Arduino board, the board waits till the switch is set to logic HIGH , that is, when you flick the switch, the board signals two servo motors to move in a specific way (more on that later), after which, the servo connected to the "hand" will flick the switch back to OFF-position, and return back into the box, followed by the "door" servo. then everything repeats.

If you saw the above video, each time the switch is toggled, the machine responds in a different way, and this is done by simply writing different functions with different timings in the Arduino code, (I am calling them "Moves"). Each time the switch is toggled, I am calling a new move until all are done, I start over. note that in step 9, I provided another version of the code that picks random moves instead of sequential. You can add as many moves as you want, as long you have enough memory on the Arduino.

The Arduino is always ON, this is why I added a switch for the battery to save some power when the machine is not in use. I am already planning to use an interrupt on the switch, instead of the current simple HIGH/LOW detection, and coupling it with sleep mode. This shall save power when the machine is not in use ,and also allowing it to be always ready (but this will also complicate the code) So, for now, it is just a simple ON/OFF switch, and the board is always powered.
1-40 of 151Next »
melton1313 made it!2 months ago
Code helped a lot. Thanks
riachi (author)  melton13131 month ago

AWESOME!! :) would be great if you an post a video too :)

br1pro2 months ago
Very fun! hard job fixing the servos and design the hand. Thanks for this instructable!
riachi (author)  br1pro1 month ago

Great work man! really nice :) any video?

areyoutrying3 months ago

Thanks for this! I made my first Arduino project based on this instructable: a useless dragon!

riachi (author)  areyoutrying3 months ago

You are awesome :) !!!

Great personality for a Dragon! I wish you can redo the video while having the dragon directly facing the camera (top-view), I feel this will be hilarious, so see the tongue sneaking out!

Thanks for sharing your video and glad my i'able has helped

I tried top view in an earlier stage but it didn't work (saw too much of the messy insides) so I dismissed it when I took this video. I think you are right though: in the final stage it would've looked great! Unfortunately I already gave the dragon away... So on to the next project!

clincoln1 year ago
Watch the video on it first then laugh you ass off
TobiasV clincoln4 months ago

I know I did ! :D

rileyw1 year ago
Super cool the video made it seem like it had a mind of its own
My useless machine with arduino and riachis code! Made into a tardis from Dr.who. :)
riachi (author)  Elitekilla1171 year ago
LOVE IT!!!! :)) really well done man, so happy to see your bombbox alive! I also the dramatization and the music :p just can't stop myself to suggest 3 small modifications if i may:)?

- it would be great to put the machine in standing position, i know that this will make lose the help of gravity to close the door, but a simple solution is to put 2 rubber bands attached to the inside of the door on one side and to the inner side of the box for the other end, this will make the door close when the door servo is closing...check my build steps,you will see the rubber band in Step 6...

- also what about painting the hands in black, it will be more sneaky and slick
! Also the hand tip can be painted in bloody red or decorated with a crazy face or something like that..

- remove the last move as nothing happens in it(supposed to be the one the moves the box) and write your own move...

Nevertheless, forget the suggestions,i loved your machineeee! And thanks for the so many thanks man, please you can reduce them and keep the video focused on the machine :)

Hope your gf liked it!
Hahah Thank you for the compliments :) I actually wanted to do much more to it but because of the time crunch I couldn't fit in a lot of the details i wanted to. I would like to add some color to the arms but didn't have time for those. And I wanted to draw a face on the arm with a sharpie but its already wrapped up and ready to give to her for Christmas. Hehehe. I think she'll love it. I also did want to have it stand up but was afraid the rubber bands would put too much weight on the servos. The door is already pretty heavy. The last move I kept because it keeps you in suspense waiting for it to pop out. Hahaha but I appreciate all the help my friend! Definitely worth it!
This I have to's awesome
wrs7151 year ago
This is the first project I've seen using an Arduino where I thought, "Yeah, that's worth it. Now I have to get one." Fantastic job!
Wow, awesome take on a common project! Love your spin on making it more interesting!
bob30301 year ago
One man's useless device is another's totally awesome, out of this world, we'll thought out, fun to have, coveted by many, useless device. Thanks for your updates to the project. Thanks for posting.
wobbler1 year ago
Thought 1: Using an Arduino for this is just ridiculous overkill
Thought 2: After watching the video-Using an Arduino for this is just pure genius!

I bow down to your creativity!
stumitch1 year ago
Thats seriously great! Kind of reminds me of a Wall-E personality. Thanks for such a great project!
Truly useless! Nice 'ible. I'm inspired and need to build one for my desk. Thanks.
robot7971 year ago
i realy realy want that thing
makendo1 year ago
Glad I watched the video to the end. It was already entertaining, but the twist was brilliant.
alzie1 year ago
Ha, i nearly pissed my self watching the vid!
Got some personality.
Way cool, well done.
rpotts21 year ago
Finally! A Christmas present my in-laws will enjoy! I love thus!
jpow1 year ago
Best useless machine I've seen! It is on my build list... for sure! I have lots of RC stuff, so all I need is an arduino now :)

thanks for sharing!
diy_bloke1 year ago
lowpro1 year ago
So awesome!
This is useless...
I like it !! ^.^
nice job, like how you make it "come to life"
chaosrob1 year ago
This is awesome. Can't wait to see all your improvements and (maybe) a new video. This is a great candidate for a halloween candy bowl... thingiee! Instead of physical switch, a photo resistor to detect candy removal. KEWL.... keep it up!
riachi (author)  chaosrob1 year ago
go for it chaosrob! let me know if i can help!
bob30301 year ago
Cool. Very creative adding the "taunting" and "side" moves. You have inspired me to add this to my list of projects . Thanks for posting and sharing.
riachi (author)  bob30301 year ago
Please let me know when you build yours! thanks
I like the personality! Very funny

Anything new on this? I'm going to build this, but I'd like to do the sleep version using interrupts to save battery life. Did you ever get around to doing that?

HansB215 days ago


What a great and fun project, this actually made me get an arduino kit.. :-)

This far i have got everything to work just fine until step 8. Now when i´m trying to add the software debouncing routine i mess up the code because i get a lot of error when trying to verify the code.. I really dont understand where to put the debouncing code, any chance getting help to get this to work?


riachi (author)  HansB213 days ago


Great to hear that :) below is a snippet from previous post I made in the comments answering exactly your question:

- For a software debounce routine, below is a snippet adapted for my code, it is based on the Arduino classical debounce circuit found here

Use the variable debounceDelay to fine tune when you will consider the switch is stable.

(note: below is the code that is only related to the switch debounce, don't forget to add the other variables initialization and loop setup from "Step 8")


const int switch_pin= 2; // the number of the pushbutton pin
int switch_pinState; // the current reading from the input pin
int lastButtonState = LOW; // the previous reading from the input pin
long lastDebounceTime = 0; // the last time the output pin was toggled

long debounceDelay = 50; // the debounce time; increase if the output flickers

void setup() {
pinMode(switch_pin, INPUT);

void loop() {
// read the state of the switch into a local variable:
int reading = digitalRead(switch_pin);

check to see if you just pressed the button
// (i.e. the input went from LOW to HIGH), and you've waited
// long enough since the last press to ignore any noise:

// If the switch changed, due to noise or pressing:
if (reading != lastButtonState) {
// reset the debouncing timer
lastDebounceTime = millis();

if ((millis() - lastDebounceTime) > debounceDelay) {
// whatever the reading is at, it's been there for longer
// than the debounce delay, so take it as the actual current state:

// if the button state has changed:
if (reading != switch_pinState) {
switch_pinState = reading;

// only activate the hand and door servo if the switch button state is HIGH
if (switch_pinState == HIGH) {
//do all the machine's code here because you've detected that the user has actually switched the box ON, it wasn't noise
//here is a snippet to show you where to start inserting the code from Step 8;

//if (Testmove == 0)
//if(randomize == false) ....

// save the reading. Next time through the loop,
// it'll be the lastButtonState:
lastButtonState = reading;

// and here you put all the move functions...


Hope this helps

HansB2 riachi12 days ago

Thanks for helping out, (i do have read your previous answer of the same thing but still don´t get it :-0)

Still i get the following error code:

"Arduino: 1.6.0 (Windows 7), Board: "Arduino Uno"
Useless_led_debounce.ino: In function 'void loop()':
Useless_led_debounce.ino:110:5: error: a function-definition is not allowed here before '{' token
Useless_led_debounce.ino:575:5: error: expected '}' at end of input
Useless_led_debounce.ino:575:5: error: expected '}' at end of input
Error compiling."

see attached picture, is this code placed correctly?


I had the same issue. You need to close out the previous steps with 3 } ... right above the first basic move.


Thanks for helping out, i finally got it to work.

Now i will start to add some other sensors, this is fun :-)

1-40 of 151Next »