[Kevin] just finished a project for someone who lives in his apartment complex. This resident loves the game Pop ‘n Music – a Guitar Hero sort of game for the original Playstation and PS2 that uses nine colored buttons instead of five buttons along a fingerboard. His original idea was to wire up a few arcade buttons to a Playstation controller but this plan fell through, forcing [Kevin] to figure out the PSX bus all by his lonesome.
The initial code began with simply bit-banging the PSX controller interface with an AVR. This had a few problems, namely speed, forcing [Kevin] to move onto assembly programming to squeeze every last bit of performance out of a microcontroller.
The assembly route failed as well, dropping some transactions Looking at the problem again, [Kevin] realized the PSX controller bus looked a little like an SPI bus. There were a few changes required – reversing the order of the bits, and using the MISO line to drive a transistor – but this method worked almost perfectly on the first try.
Now, [Kevin]’s building mate has a custom Playstation controller for his favorite game. Of course all the code is up on github for all your PSX controller emulation needs, but be sure to check out this completely unrelated Pop ‘N Music video from someone who desperately needs a piano.
[Brad] just acquired a 32×32 RGB LED matrix and he jumped right into the deep end with his first project. To try out his skills on the device he used an Arduino to drive a slew of pixels with bouncing-ball physics.
The demo starts off with a hail storm of multi-colored falling pixels. In the center of the storm is the cursor, which he controls with a PS2 mouse. That happens to be a ball mouse which makes sense as we don’t remember having seen any optical mice as of late that weren’t USB. The PS2 protocol is easy to read using a microcontroller; more about that in [Brad’s] project write up.
By holding down the left mouse button he can draw persistent pixels on the screen. The falling balls then interact by bouncing off of the obstacles. The image above shows a frame on three sides of the screen which has trapped the pixels near the bottom. He can also erase pixels, which has the effect of draining the trapped balls like a hole in a bucket of water. Neat!
Bouncing ball physics are fun to experiment with. Here’s one being driven by an analog computer.
Continue reading “Fun with LED matrix and mouse”
When building a homebrew computer, there are a few milestones that make all the work seem worth it. Of course, seeing the CPU step through address lines on the blinkenlights is near the top, but even more important is being able to type a character on a keyboard and have it show up on a display. [Quinn] didn’t want her Veronica computer to deal with serial terminals or PS/2 keyboards when she typed her first characters in; instead she wanted to read a USB keyboard using 80s-era hardware.
Back in the early days of USB, design specs and keyboard manufacturers included a legacy mode in nearly every USB keyboard ever manufactured. This allows a USB keyboard to work with the ancient PS/2 protocol. [Quinn] tapped into that functionality nearly every PS/2 keyboard has using a 6522 Versatile Interface Adapter. This VIA is in the same family of chips as the venerable 6502 CPU that provides GPIO pins and timers.
[Quinn] connected the keyboard connector tapped for PS/2 input to an ATtiny13. This microcontroller reads the scan codes from the keyboards and sends them to the VIA and the rest of Veronica. It’s quite a bit of work to get to this point, but [Quinn] finally has a computer she can type on, the first step to developing software for her homebrew computer.
At the Revision 2013 demoparty held last weekend, visitors and guests wanting to check out the latest advances in programming old video game consoles got a real treat. [Abyss] took a Playstation 2, connected the composite video out port to a TV and an oscilloscope, and created the first dual display PS2.
From the official video of the demo, the two video signals are generated from a single video out on the PS2. Generating the composite video out is understandably fairly easy, but the second display – an oscilloscope – is driven during the Vblank period in the composite signal. There’s no audio trickery here; video signals are used for video, and audio signals are used for audio.
[Abyss] took first place in the wild demo competition at Revision 2013. Understandably, too, because this is one of the best demos we’ve ever seen. You can check out the official video from [Abyss] after the break, and the wild competition video after the break.
Continue reading “Dual displays on a Playstation 2”
The tank robot builds that we see are often quite complex. This lets them do great things, but makes the platform scary for beginners. Here’s a tank build that would be a great first project, especially if you’re more interested in the programming side of robotics than you are in the hardware itself. [Paul Bleisch] combined several different commercially available products to fabricate this Arduino-powered tank robot base.
Locomotion is provided by a double geared-motor module. This unit, the plastic wheels and treads, as well as the wooden mounting platform are all made by Tamiya. They cost very little and are already designed to work with one another. To this base he adds the Arduino and a motor shield which makes the connections dead simple. The black case on one end of the chassis holds four AA batteries which provide power for everything.
These components are all that’s really needed to start, but they provide no interactivity. So [Paul] picked up a used wireless PlayStation 2 controller. There’s a library (written by regular reader [Bill Porter]) that allows him to connect the receiver to the Arduino in order to pick up commands from the controller. He also plans to add an ultrasonic range finder to the build sometime in the future.
If you’re don’t need to do things the easy way you should consider fabricating your own tank treads.
Hackaday reader [Tom Price] often uses Skype to communicate with family near and far, but he was getting tired of adjusting his webcam each time his kids moved out of frame. While the solution he came up with isn’t fully automated, it is hands-free, which is good enough for his purposes.
[Tom] was looking around for an electronic foot pedal of some sort when he came across a wireless 3rd party Guitar Hero peripheral that happened to fit the bill. Using an Arduino library created by [Bill Porter], he was quickly able to get the toy to communicate with an Arduino-flashed Atmega8, but things kind of fell flat when it came time to relay signals back to his computer. Using another Atmega8 along with the PS2X library, he was able to emulate the Guitar Hero controller that his foot pedal was looking for.
With the pedal portion of his project wrapped up, he focused on his webcam. [Tom] mounted the camera on a small servo, which he then wired up to the receiving end of his foot pedal rig. As you can see in the video below, he can now pan his camera across the room with a tap of his foot, rather than leaning in and manually adjusting it.
Continue reading “Controlling your webcam with an old Guitar Hero pedal”
[Jordan] writes in to show us a project he has been working on called MbedConsole. Living up its name [Jordan] has managed to run a 640×480 VGA output, PS/2 port and console all from the mbed itself. We really mean from an mbed only; no extra hardware is required aside from a few resistors and connectors, a VGA monitor and PS/2 keyboard. The code is open source and links are included in the blog. There are even instructions for including your own graphics.
There are a few things to tackle still, like SD card support. Currently the PS/2 keyboard lights for caps-lock are not functional. [Jordan] would love to know what else we’d see going on something like this, with 400k of flash and 20k RAM left there certainly is a bit of room for some interesting stuff. One of his main goals is to get rid of the C interface and port an interactive shell over that could do something like BASIC or Forth (to give it that retro environment feel). We have seen the mbed in a handful of projects, what do you think?