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 99Next »
rileyw9 months ago
Super cool the video made it seem like it had a mind of its own
Elitekilla11710 months ago
My useless machine with arduino and riachis code! Made into a tardis from Dr.who. :)
riachi (author)  Elitekilla11710 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!
clincoln1 year ago
Watch the video on it first then laugh you ass off
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
TAG00123 days ago

Can you please upload a schematic using a bread board with an arduino that goes up to step 8?

TAG00123 days ago

Can you please upload a schematic using a bread board with an arduino that goes up to step 8?

TAG00123 days ago

Can you please upload a schematic that uses a bread board with the arduino that only uses step 8?

Great project.

igorrfg5 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)  blackwarriror02049 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)  blackwarriror02049 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
Elitekilla11710 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)  Elitekilla11710 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)  Elitekilla11710 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)  Elitekilla11710 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.

1-40 of 99Next »