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 96Next »
rileyw8 months ago
Super cool the video made it seem like it had a mind of its own
Elitekilla1179 months ago
My useless machine with arduino and riachis code! Made into a tardis from Dr.who. :)
riachi (author)  Elitekilla1179 months 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!
clincoln11 months ago
Watch the video on it first then laugh you ass off
chuckletushy11 months ago
This I have to's awesome
wrs71511 months 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!
siliconghost11 months ago
Wow, awesome take on a common project! Love your spin on making it more interesting!
bob303011 months 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.
wobbler11 months 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!
stumitch11 months ago
Thats seriously great! Kind of reminds me of a Wall-E personality. Thanks for such a great project!
gazillabytes11 months ago
Truly useless! Nice 'ible. I'm inspired and need to build one for my desk. Thanks.
robot79711 months ago
i realy realy want that thing
makendo11 months ago
Glad I watched the video to the end. It was already entertaining, but the twist was brilliant.
alzie11 months ago
Ha, i nearly pissed my self watching the vid!
Got some personality.
Way cool, well done.
rpotts211 months ago
Finally! A Christmas present my in-laws will enjoy! I love thus!
jpow11 months 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_bloke11 months ago
lowpro11 months ago
So awesome!
michaelgohjs11 months ago
This is useless...
I like it !! ^.^
nice job, like how you make it "come to life"
chaosrob11 months 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)  chaosrob11 months ago
go for it chaosrob! let me know if i can help!
bob303011 months 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)  bob303011 months ago
Please let me know when you build yours! thanks
Mizchief10011 months ago
I like the personality! Very funny
igorrfg4 months ago

Hi ! could you send me the schematic whitout the debounce circuit?

I am sorry, I am not a expert in circuits

tanks in advaced

here's the video showing my problem with arduino, can u help me out? thanks
riachi (author)  blackwarriror02048 months ago
I can't see well from the video how you've connected the 9v to the Arduino, to which pins? also how much current your servos are drawing?

First make sure 9v+ goes in to Vin, then the -ve lead goes into Gnd (also you can try using a 2.1mm center-positive plug instead if the direct connection to Vin/gnd)

Another issue you may be encountering is that your servos are asking too much current from the on-board regulator, thus the latter is shutting down. Try powering the servos from another source just for test (make sure not to exceed your servos recommended voltage when powering them)

Last note, off-the-shelf 9v battery are not recommended, they work, but they drain so quickly, you may be simply out of juice so try changing your battery. I used a 11.1 v 1000mA battery and this works fine.
hi, yes i connected the 9v + to the vin pin, and the - to the GND pin on arduino. i did try using the 2.1 mm center-positve plug before, but sometime it works, sometimes it doesn't.
i'm using 2 futaba s3003 servos as your, so should i try using the 11v 1000mA battery?
riachi (author)  blackwarriror02048 months ago
yes, it seems your battery can't handle the load. you need a more powerful one. not necessary a 11v 1000mA battery. Point is that better to have a LiPo battery, with high capacity, that is high Ampere.
I'm having a problem with arduino when using battery as a main power, here's the link for the video thanks
Elitekilla1179 months ago
Hello! I am almost done building this project for my girlfriend. But I am completely stumped. I am looking to you riachi for help. I need to get this done by the 25th and any advice would be amazing! So a little background. All the hardware is done. The only thing that hasn't been done is the debounce and I figure its not needed until everything's perfected, otherwise it just keeps looping on its own. But heres the issue. I copied and pasted the code directly from the clipboard and for the life of me cannot figure out how to change the door servo values. I keep adjusting the 80 door value but its not changing the servo's position. I need it to be around 90 or 100. Also any way to start out the servo position at 0?
Also, secondary issue. With both servos plugged into their respective ports, one moves after the other, never both at the same time. This is making me feel like giving up but I know I shouldn't! I am looking to the masters here and specifically to you Riachi. Please help me! I am a noob at Arduinos and never knew what it was before this. I've done lots of research and tutorials but still to no avail. Could you walk me through how to change the values or better yet send me a modified file?
riachi (author)  Elitekilla1179 months ago
Hello Elitekilla, calm down! you will make it on time, you've already made it 90% through :)

Now, are you using the code from step 8 or 9?

1-  I suggest you use step 8 as it is simpler, also don't copy/paste from form as the form post removes many characters from the code like + instead, use the code file attached in the step 8.
2- most important is that you FIRST put in place the debounce, if you don't want o make a hardware debounce, then use the code I gave to "Phongnguyen" in the comments section.

3- when you say you can't adjust the door servo value, do you mean the servo is not moving? basically, as an example, the below should allow you to start at position 0 and then go to 100 then back to 0:

for(pos = 0; pos <= 100; pos += 3) 
for(pos = 100; pos>=0; pos -=3)   

If your servo is a slow type servo, then you need to increase the delay time (i.e delay(15) to delay(25) for example) this to allow time for the servo to move between steps. Also to control the speed of movement you need to change the pos -=3, and pos +=3. Increase it to go faster BUT note there is a limit that you can't exceed, as your servo will start to act weirdly, experiment only after you go the basic move happening.

4- Naively you can't move servos at the same time as the Arduino runs the code sequentially (no multitasking). There are tricks, but they will complicate the code. if you are still interested, check this link for example.
Wow fast reply! :) ok i will reanswer step by step to make sure I give a thorough reply checking all recommendations.
1. I am using the code from the attached file (Step 8 text file). Everything verifies and uploads without issue
2. There atm is no debounce made or implemented. May I ask what a debounce circuit does for this machine? I wanted to get all else perfect then work on the switch and debounce.
3. When I attempt to change the values in the code for the door servo, I don't see my arm moving any differently or higher. I try to make sure to replace all values affecting the door, but maybe I missed something?
--I am using a 3010 high torque for the door and a 3003 for the arm.
4. Ah that makes sense. However, what I meant to say is that for example: The door servo makes two moves. (Open, close.) and the hand servo has two movements. (Reach out, retract.) So the door servo is completing the open,close without the hand servo even coming out of the door gap. Any ideas why?
riachi (author)  Elitekilla1179 months ago

1. OK. Then do the following, open step 8, download the code file, open it directly in Arduino IDE, or just copy its content and past in IDE, then compile and upload code to your board. Don't copy and use the code directly from the Instructable step 8 post, as the latter introduces logical errors in the code example: (i.e the compilation will be ok, but you won't get the expected behavior, which seems to be your case!)

2. Without a debounce mechanism, the switch will switch on and off randomly, and especially for this project, this will ruin the whole point of the machine! This is why it is a priority to get your switch stable by using either a hardware or software debounce.

3. try my answer in 1, and let's see. (also, your servos are more than enough for the job!)

4. Which Arduino board are you using and which pins are connected to servos? also give me your updated code so I can have a look.

I recorded and uploaded a video to show my issue. Maybe something simple? Maybe not? { }
riachi (author)  Elitekilla1179 months ago
Hello, the video was a good idea! also great to see you have a lab around :)

I think the issue is clear to me now, 'Servo placement', I will try to explain precisely, hope this will work for you.

First, the code is ok, and your connections too, but since the code is not aware of how you've installed your servos, your door servo's axis is offset 90° and servo is turned in place 180°, this relative to the code values! Thus, you are visually seeing it closing, but actually in code it is executing correctly the Opening!

Take an example that is easy/slow to see
check the move crazyslow() in both videos and compare
- in your video: @ 03:47 till 04:00
- in mine @ 00:20 till 00:32

Yours, starts the move with the hand full extended up! then turns anticlockwise to max deflection to the left.  thus moving correctly from code perspective, from 80 to 155 °. what is wrong is the installed servo axis, which the code is not aware of it.

OK, let's correct that

You have 2 options, either in code, or physically correct servo to match the code expectation


1. Set the door servo start position to 155°
2. in every move function, and for each for loop of the DOOR servo, reverse all opening moves, and make them closing moves. This means, you need to interchange each 155 with 80, and vice versa, also you need to change the > with < and vice versa, and the + to -, and vice versa

now:        for(pos = 80; pos < 155; pos += 1) {     }
will be:    for(pos = 155; pos > 80; pos -= 1) {     }

.... do the same  for all Door for loops

Option 2:
The Arm and servo position/rotation need to be changed

1.Keep the code as is
2. do the 2 following steps, note that Step 2, you can do the one on the left OR the one on the right

Good luck, let me know if it works for you.

My friend.....YOU sir are a GENIUS!!! You were correct, it was a servo placement error. I went with step 1 and sat down for about two hours to fix the code to my liking and making everything perfect! I installed a hardware debounce with a 10ohm resistor and a switch and everything seems to be working just fine!
Now I need to install the switch servo and build an arm for it. then I will paint my box and finalize and perfect everything. I will post photo and video of my finalized box around Christmas time. :) Riachi, thank you SO much for the help!!! How can I thank you buddy??
riachi (author)  Elitekilla1179 months ago
Glad it worked :) and that you will meet your DEADline with your gf :p

Your already thanked me enough man, nothing else is needed! just enjoy it, and don't forget to share a video of the final results!

Cheers and Merry xmas!
Icarus609 months ago
Hi Riachi
Brilliant bit of entertainment. I took your advise and copied it, as I decided I must have one for some Christmas fun.
I have now made it, initially without the motion detector and motor as I have all the other bits to hand.
I have all the bits wired together, set the servo throws up correctly and they are going to and fro nicely. I have copied your code but I have two questions to get the code running correctly as at the moment it never stops!( I have added a LED to show that the switch is working correctly)
1) Which bit of code causes the thing to stop once the switch is switched off?
i.e where in the code is the loop halted waiting for the switch to be switch on?
2) Which bit of code causes the "selectedMove" to be incremented by 1 to move onto the next move
Any help you can give will be greatly appreciated
Thanks in advance
1-40 of 96Next »