Fighting games like Mortal Kombat provide you with a variety of different available moves. These include kicks, punches, grabs, etc. They also normally include various combination moves you can perform. These combo moves require you to press the proper buttons in the correct order and also require you to time the presses correctly. [Egzola] realized that he could just hack his controller to simulate the button presses for him. This bypasses the learning curve and allows him to perform more complicated combinations with just the press of a single button.
[Egzola] started by taking apart his Playstation 3 controller. There were two PCB’s inside connected by a ribbon cable. Luckily, each individual pad for this cable was labeled with the corresponding controller button. This made it extremely simple to hack the controller. [Egzola] soldered his own wires to each of these pads. Each wire is a different color. The wires then go to two different connectors to make them easier to hook up to a bread board.
Each wire is then broken out on the breadboard. The signal from each button is run through a 4n25 optoisolator. From there the signal makes its way back to various Arduino pins. The 4n25 chips keeps the controller circuit isolated from the Arduino’s electrical circuit. The Arduino also has two push buttons connected to it. These buttons are mounted to the PS3 controller.
Now when [Egzola] presses one of the buttons, the Arduino senses the button press and simulates pressing the various controller buttons in a pre-programmed order. The result is a devastating combination move that would normally require practice and repetition to remember. You might say that [Egzola] could have spent his time just learning the moves, but that wasn’t really the point was it? Check out the video below for a demonstration. Continue reading “Get Better at Mortal Kombat by Hacking Your PS3 Controller”
[Alex] needed a project for his microcomputer circuits class. He wanted something that would challenge him on both the electronics side of things, as well as the programming side. He ended up designing an 8 by 16 grid of LED’s that was turned into a game of Tetris.
He arranged all 128 LED’s into the grid on a piece of perfboard. All of the anodes were bent over and connected together into rows of 8 LED’s. The cathodes were bent perpendicularly and forms columns of 16 LED’s. This way, if power is applied to one row and a single column is grounded, one LED will light up at the intersection. This method only works reliably to light up a single LED at a time. With that in mind, [Alex] needed to have a very high “refresh rate” for his display. He only ever lights up one LED at a time, but he scans through the 128 LED’s so fast that persistence of vision prevents you from noticing. To the human eye, it looks like multiple LED’s are lit up simultaneously.
[Alex] planned to use an Arduino to control this display, but it doesn’t have enough outputs on its own to control all of those lights. He ended up using multiple 74138 decoder/multiplexer IC’s to control the LED’s. Since the columns have inverted outputs, he couldn’t just hook them straight up to the LED’s. Instead he had to run the signals through a set of PNP transistors to flip the logic. This setup allowed [Alex] to control all 128 LED’s with just seven bits, but it was too slow for him.
His solution was to control the multiplexers with counter IC’s. The Arduino can just increment the counter up to the appropriate LED. The Arduino then controls the state of the LED using the active high enable line from the column multiplexer chip.
[Alex] wanted more than just a static image to show off on his new display, so he programmed in a version of Tetris. The controller is just a piece of perfboard with four push buttons. He had to work out all of the programming to ensure the game ran smoothly while properly updating the screen and simultaneously reading the controller for new input. All of this ran on the Arduino.
Can’t get enough Tetris hacks? Try these on for size.
One of the bigger problems with any CNC machine or 3D printer is the issue of missed steps when moving the toolhead. If a stepper motor misses a step, the entire layer of the print – and every layer thereafter – will be off by just a tiny bit. Miss a few more steps, and that print will eventually make its way into the garbage. [Misan] has the solution to this: closed loop control of DC motors for a 3D printer.
Most printer firmwares use an open loop control system for moving their motors around. Step a few times in one direction, and you know where the nozzle of a 3D printer will be. Missed steps confound the problem, and there’s no way for the firmware to know if the nozzle is where it should be at any one time.
[Misan]’s solution to this was a DC motor coupled to an optical encoder. Both the motor and the encoder are connected to an Arduino Pro Mini which receives step and direction commands from the printer controller. The controller takes care of telling the motor where to go, the Arduino takes care of making sure it gets there.
The entire build is heavily derived from ServoStrap, but [Misan] has a very cool demo of his hardware: during a print, he can force the X and Y axes to either side, and the Arduino in each motor will move the print head back to where it needs to be. You can check that out below.
Continue reading “Closed Loop Control For 3D Printers”
[Apachexmd] wanted to do something fun for his three-year-old son’s birthday party. Knowing how cool race cars are, he opted to build his own Hot Wheels drag race timer. He didn’t take the easy way out either. He put both his electronics and 3D printing skills to the test with this project.
The system has two main components. First, there’s the starting gate. The cars all have to leave the gate at the same time for a fair race, so [Apachexmd] needed a way to make this electronically controlled. His solution was to use a servo connected to a hinge. The hinge has four machine screws, one for each car. When the servo is rotated in one direction, the hinge pushes the screws out through holes in the track. This keeps the cars from moving on the downward slope. When the start button is pressed, the screws are pulled back and the cars are free to let gravity take over.
The second component is the finish line. Underneath the track are four laser diodes. These shine upwards through holes drilled into the track. Four phototransistors are mounted up above. These act as sensors to detect when the laser beam is broken by a car. It works similarly to a laser trip wire alarm system. The sensors are aimed downwards and covered in black tape to block out extra light noise.
Also above the track are eight 7-segment displays; two for each car. The system is able to keep track of the order in which the cars cross the finish line. When the race ends, it displays which place each car came in above the corresponding track. The system also keeps track of the winning car’s time in seconds and displays this on the display as well.
The system runs on an Arduino and is built almost exclusively out of custom designed 3D printed components. Since all of the components are designed to fit perfectly, the end result is a very slick race timer. Maybe next [Apachexmd] can add in a radar gun to clock top speed. Check out the video below to see it in action. Continue reading “DIY Hot Wheels Drag Race Timer”
One of [Kale_3D]’s teachers had made an Arduino-powered calculator. It wasn’t robust and didn’t last too long in the classroom environment. After the non-functional calculator sat around the class for a while, [Kale_3D] decided he would give a shot at repairing it. Along the way the project didn’t just get repaired, it got a full rebuild.
This calculator uses a full 16 button matrix keypad. The Arduino deciphers button pushes with the help of the Keypad library, at which time the appropriate character is displayed on the 2×8 LCD screen. Selecting the function is a little different from normal since this project is limited to 16 buttons. Two of the buttons allow scrolling through not only standard arithmetic functions but trigonometric functions also. This was one of the features that the previous version was not capable of.
To protect the components, an enclosure was made out of 1/4″ laser cut wood. The pieces have notched edges to permit a nice fit. Even so, corner blocks were added to give the case even more rigidity.
Yes, this calculator is not practical, but that’s not the point. In the end [Kale_3D] felt that the project was definitely worth doing. He had learned a bunch of stuff about Arduino and especially code debugging! Most important of all he had a good time building it. There’s a video after the break showing how it works. The code and wiring diagrams are available for download on the project’s Instructable page.
Continue reading “High Cost Arduino Calculator Is Unwieldy, Still Cool Though”
[Patrick] was looking for an easier way to control music and movies on his computer from across the room. There is a huge amount of remote control products that could be purchased to do this, but as a hacker [Patrick] wanted to make something himself. He calls his creation, “Dial” and it’s a simple but elegant solution to the problem.
Dial looks like a small cylindrical container that sits on a flat surface. It’s actually split into a top and bottom cylinder. The bottom acts as a base and stays stationary while the top acts as a dial and a push button. The case was designed in SOLIDWORKS and printed on a 3D printer.
The Dial runs on an Arduino Pro mini with a Bluetooth module. The original prototype used Bluetooth 2.0 and required a recharge after about a day. The latest version uses the Bluetooth low energy spec and can reportedly last several weeks on a single charge. Once the LiPo battery dies, it can be recharged easily once plugged into a USB port.
The mechanical component of the dial is actually an off-the-shelf rotary encoder. The encoder included a built-in push button to make things easier. The firmware is able to detect rotation in either direction, a button press, a double press, and a press-and-hold. This gives five different possible functions.
[Patrick] wrote two pieces of software to handle interaction with the Dial. The first is a C program to deal with the Bluetooth communication. The second is actually a set of Apple scripts to actually handle interaction between the Dial and the various media programs on his computer. This allows the user to more easily write their own scripts for whatever software they want. While this may have read like a product review, the Dial is actually open source! Continue reading “Dial is a Simple and Effective Wireless Media Controller”
When life gives you lemons, you make lemonade. When life gives you freezing cold temperatures and a yard full of snow, you make binary clocks out of ice. At least that’s what [Dennis] does, anyway.
[Dennis’] clock is made from several cylindrical blocks of ice stacked on top of one another. There are six columns of ice blocks. The blocks were made by pouring water into empty margarine containers and freezing them. Once they were frozen, [Dennis] bore a 5/16″ hole into the bottom of each block to house an LED. Wires ran from the LEDs back into the drainage port of a cooler.
The cooler housed the main electronics. The LED controller board is of [Dennis’] own design. It contains six TLC59282 chips allowing for control of up to 96 LEDs. Each chip has its output lines running to two RJ45 connectors. [Dennis] couldn’t just use one because one of the eight wires in the connector was used as a common power line. The main CPU is an Arduino. It’s hooked up to a DS3234 Real Time Clock in order to keep accurate time. The oscillator monitors temperature in order to keep accurate time even in the dead of winter. Continue reading “Binary Clock Fit For Queen Elsa’s Ice palace”