Intro: Q&D-Poor Man's-Skinner-Sadist-Jeopardy Game
First off, the disclaimer: I'm not responsible of whatever you do. You have to know that with a great power comes...bla-bla-bla. Just be careful and remember that electricity reserves respect. While the energy involved in this project is generally safe, it can be fatal (or at least very harmful) given certain special conditions, so just to play on the safe side:
- Never mess with little children or pets, even with their consent, just say no.
- Avoid old or sick people (mainly with a heart condition or with a pacemaker (or a peacemaker gun).
- Remember that using the device on body parts other than the extremities can be dangerous (you never know what nerve are you killing).**
In connection with the Milgram experiment and to avoid any ethical dilemma for the Arduino, I used the LED library; doing this way I fool the Arduino into thinking he is only deploying innocent LED blinks to the players. Arduino is only obeying the evil orders of the authority figure and is not aware of the pain of the players, please don't judge him.
By now, maybe you are wondering: "What's a Q&D-Poor man's-Skinner-Sadist-Jeopardy game?, do I need one?, is it for me?" well, if you are ready to start an epic journey to the world of power, irresponsibility and electronics to create a device capable of make the players learn something by the always effective power of pain and shame... you might be ready to receive the knowledge.
Given that, let's continue with the description on the next step.
The above video may not be entirely real, it would contain minor creative licenses.
**For those faint of heart or just coward (like me after too many accidental shocks while working on this) I designed an alternate feedback system . Instead of shocks it just shares vibrations with a vibromotor, it is still fun if you place it in body places where the vibration results very uncomfortable, like over the inferior part of the eye, behind an ear or whatever weird place you can imagine.
Step 1: Really, What's This Thing?
Why Q&D-Poor man's-Skinner-Sadist-Jeopardy game?
Quick and dirty, the fact is that I didn't have much time to get a working prototype for this evil device, so as soon as it could work and have a minimum of robustness (just enough to endure the mistreat of shocked (and thus disabled) humans) it was considered finished. You will note it is really dirty (I didn't even bother to trim the resistors).
While some of the main parts are easily obtained for free, it's "Poor man's" not because it's cheap (unless you stole the needed parts, which I don't recommend), it's "Poor man's" because the final result and overall look will make you think:
"Man, this thing looks like sh*t"
but believe me: It works like a charm and will give you tons of joy and happiness while infusing the players with pain and sorrow (in the form of high voltage sparks). Besides it will help to avoid it being stolen if you happen to forgot it somewhere.
Read about our dear friend B.F. Skinner , then this and finally this , while there is no direct connection (and seems like he doesn't believed strongly in the universal force of punishment) the premises are enough to justify the name (or I just want the fame of the name, that could be true).
Sadist (and masoquist if you want):
Eventually, you (and your players) will discover why... muajajajajaja.
OK, I'm just using that name to describe a Quiz game for three players and a host, the players win the right to answer by means of a button... aside from that there is nothing else in common with the TV show... I hope the lawyers don't get mad.
A game to test the knowledge of the players and help them learn faster by means of reinforcement and punishment. You can use it on parties or to challenge other alpha males in your surroundings
Shock the people to death.
Well, enough garbage (this time for real). Go to the next step to see the bill of materials, the approximated cost of this hell bound project, you will also see a video of the device working).
Don´t forget to look at the pictures and say "Man, this thing really..."
Step 2: OK, What Do I Need?
You will need:
- A microcontroller (an Arduino board is used in this project).
- One set of Buzzers controllers.
- 2 or 3 Disposable cameras (with flash) (or add a vibromotor for the weak with $4 to $14 to squander).
- Some optocouplers (see datasheet for the mines) or logic MOSFETS (or simple MOSFETS).
- Some old t-shirt or garment.
- Velcro or a mean to make a good and tight strap.
- Hot glue or a flexible but strong adhesive (even needle and thread will do).
- A custom made Flash quiz game.
- An small program to put inside the microcontroller and control the hardware.
- A serial connection to communicate Flash with the micro.
- An small app to interpret the Buzzers and send the input to Flash.
The cost: I already had an Arduino so it cost me nothing, but I will include it on the cost.
Arduino [$30] + Buzzers (on an outlet sale on Mexico) [$25] + minor parts [whatever] = $55 + c
I got the optocouplers for free with the supplier. Just follow this instructable to know how (don't overuse it, please).
The good news is that the base software is free and I will provide it... In this point a have to confess: this project is nothing more than a monster (like that of Dr. Frankenstein) it's just a mash-up between lots of bits floating on the internet. At the end I shall give credit to those who deserve it.
Look into the eyes of the monster:
Step 3: What's the Plan?
The core concept is simple: A flash game that presents the questions and receives the input of the the players (using the buzzers), the flash game process the info and sends the signal to the arduino to punish the bad players (more of this soon). The arduino controls the shock components (salvaged from the disposable cameras) andthe unfortunate player receives what deserves.
See the Diagram No.1 to get a visual cue about the project.
The plan then, is to build and set-up the hardware, after that we will occupy ourselves with the software. Let's begin with the core of the hardware control:
The Arduino and his companion circuit.
I'm using the breadboard because I didn't want to waste time soldering (and desoldering when I wanted my optocouplers back). You will note I'm not a professional on this so, please excuse my drawings. See Diagram No. 2 to see the connections, and the pictures to see it on the real life.
As you can see, there are three outputs, one for each player; each output controls the feedback device of the players. Each output just closes the high voltage circuit of the disposable cameras capacitor. The resistor is useful if you have different levels of cowards (just decrease the resistance if you feel your subjects are getting insensible to the spark and increase the resistor if your players start crying for their dignity and mommy).
Given that we are using optocouplers there is no need to add too much security to the circuit, but if you happen to use MOSFETs or Logic MOSFETs don't forget to add the proper diodes as needed, we don't want HV on the microcontroller. Using normal MOSFETS may still close the circuit but not completely so the punch will be less intense. Note that on my third player I'm using a vibromotor, so no optocoupler needed (I had just two anyways). The vibromotor board included every needed component to secure my output.
OK, just set-up on your breadboard a circuit like the one you see on the pictures and you are ready to go to the next step. Don't let yourself impress by my disorder, it is very simple and repetitive, stick to the diagrams and everything should be clear.
Go to the next step to see the building of the feedback devices (that other shocking evil core of the project).
For the code on the Arduino board wait for the step 9.
Step 4: The Reality Shock
Let's start by salvaging the shock central component. Go and read this instructables to get the knowledge, (I found this one particularly good and inspiring (you will note I just take the camera circuit and did nothing more but following their instructions should add for a neater and less menacing look)).
As you should remember this is Q&D (being this project one which needed to be completed in one or two nights for display on a company event). So I didn't have the time (neither the ability) to follow the good tutorial of the taser... I just disassembled the camera, hooked my cables on the capacitor and wrapped it with a little of electrical tape.
Look at the diagram No. 2 to see my cabling nightmare, and for the sake of any childish delusion that you may hold as sacred (god?) don't touch the transformer while you are working on it... by personal experience I can say you that if the capacitor's spark hurts like hell... the transformer punch feels like a thousand volts across your brain (or at least I fell it like two hells). It's more uncomforting (at least).
See the pictures to help you in this hard step. Remember to cut a portion of the cable to get a good contact and maybe applying hot glue would help to secure the connection and avoid disgusting shortcuts.
Go to the next step to see the building of the shocking straps or feedback devices.
Step 5: Strap It Well, Don't Let the Subjects Escape
To build the straps I needed something cheap, adjustable and fast, it should endure continuous use by stressed humans. I decided that and old and almost sheered t-shirt would do.
Just use your imagination to cut the fabric and form a thin strap, it should feel comfortable, be flexible and look clean.
As you can see by the pictures my design abilities are not good at all... I used Velcro but the glue I used didn't resist the use... while we were using it I had to improvise a repair (the electrical tape worked well for the day).
Moral: if you want it to last... build it to last. (I didn't even remove the plastic backing of the Velcro strip.)
OK, we have the hard part ready; let's continue with the soft-one :). To the next step.
Step 6: Make It Buzz
The Buzzers will be the input device that will allow the players interact with the system. They are very simple to control.
They consist of four individual controllers with a series of buttons. Three for players and one for the host.
In this point I should present you an early prototype with just two players and no visible host... meet Marcos 0.1 (see Image 2, 3 and 4).
While the problem with Marcos 0.1 was the complexity (you should have seen the inside of the enclosing, just two buttons but a true spider web inside). The magic on the Buzzers (ready-made buttons) is that they are USB and easily compatible with the PC. Just connect it and the PC should recognize it as a Game controller.
To interpret the input signals of the four controllers use the AutoHotkey script I'm attaching on the zip file.
The script is very simple; it basically remaps the controller commands to normal keystrokes (supported by Flash without any problem). To test it just connect the Buzzers and run the script, open a Notepad file and push the Buzzers buttons, you will see words being written on the screen like if you were hitting the keyboard.
Each controller has his own set of letters and numbers (a number for the big red button and letters for the options).
<-- Code begins -->
<--end of code-->
That was easy isn't it?. Go to the next step to get the main code on Flash.
Step 7: Socket Connection
We are almost done, we need a way to connect Flash to the arduino, so we will use a handy tool named Serproxy, it will create a serial socket to interface the Flash outputs with the arduino.
For this first connect your arduino with the USB cable and check the COM port it was assigned. Modify the config file to match the COM port.
Now, just execute the exe to create the server connection, try to don't change the network port because it's hard wired on the flash executable. If you change it, remember to change it also on the fla and regenerate the flash game again.
See the screenshots to get an idea.
You can help yourself with the TinkerProxy Configurator. Just remember the port thing.
Step 8: Can You Are Ready to Flash?
Good, this is the half of the project. Let's start by describe the current features of the game.
The game tries to be fair for everyone and reinforce the good behavior and punish the bad one. The current schema is:
The system loads the questions from an xml file; it then randomizes the order of the questions and the order of the answers.
- Once a question gets displayed, the host must read aloud the question and push his red button to activate the reception of signals from the three players. The number on the screen changes from "4" to a hyphen.
- The first player on push his red button wins the right to select the right answer. The number on the screen changes to the ID of the faster player. Sound reinforces the info.
- If the player acknowledges his ignorance, it can resign the control and allow other player to answer (there could be punishment anyway).
- The system tracks the results and displays them at the end of the time (you can set the time at the beginning of the game).
-The host can skip to the next question using his Big Red Button.
Now which events are the triggers of shocks? easy:
- If you give the wrong answer, there is a spark.
- If you take too long to give your answer when you have the control, there is a spark.
- If, on each question, you are one of the two slow players, randomly, there is a spark.
- If you cheat, there is a spark.
- If you are disliked by the host, there will be sparks, fo sho.
- Randomly there should be sparks to keep the player focused and remember him of his mortality.
All you have to do to engage on an afternoon of sane entertainment is:
- Change or add questions on the cuestionario.xml file I'm giving to you, the first option should be always the right one (don't worry, it get randomized for the player).
- Run the Flashing Shock.exe, as the host you can spread pain to the players using the secondary buttons of your controller. The system decides if the player choose the right or wrong option and acts accordingly.
In the fla file I commented the code in case you want to fix bugs (I remember there is a bug with the score system), add functions or change parameters; in short: to improve it. I wish I had the time to be very specific but I fear I'm very busy right now. Write me if you need help in any specific point of the code.
You will have to forgive the overall look of the front-end but at the last moment some persons tough the font size should be bigger. Resulting on a look somehow messy. Play with the fla, it should be easy to enhance. If you don't want to fiddle with the code, just remember to use short questions and short answers.
Step 9: Ride the Lightning
The code is commented for your convenience. It basically waits for the signals of the Flash game and acts according to that, it only receives the ID of the player that should be punished by his ignorance or misbehavior and sets the corresponding output to HIGH to activate the octocoupler and close the HV circuit.
It's really simple. Check the code to understand better and make any crazy improvement you think yourself capable of.
To avoid any ethical dilemma for the Arduino, I used the LED library, doing this way I fool the Arduino into thinking he is only deploying innocent blinks to the players.
To run everything remember to:
Run Autohotkey script
Run Serproxy.exe whit the right port configturation
Run the Flash game (you can press Ctrl+F for fullscreen or set up the time before start.
See the video for a quick set-up guide.
Step 10: The Thanks and Honor
You should get it now, my only contribution is had mashed-up all that bits and make this monster. To give back I decided to create this instructable. Grab whatever you need.
I will try to link my sources but I fear my memory may be faulty and forget some important sources, please if you note the lack of someone, tell me and I may be able to recall and give the proper honor to whoever deserves it.
The person who created the basic Arduino code which gave the base to start with Marcos 0.1
Really, this has resulted to be untraceable. I hope some day, before I die, someone helps me to find the source just to say thanks, meanwhile, wherever you are:
Thanks anonymous muse.The person who created the quiz game that loads the questions from the xml file:
Anyone in the world.
This weekend I will track my browsing history to find the sources, I promise. [UPDATE: DONE!]
For a neater look see this unrelated instructable.