Skip to main content

NES game pad

 This is re-post of a blog post I did about 15 years back, I don't know if I would use an Attiny microcontroller if I was to do this today. The price of chips with built in USB is now cost comparable, and hardware USB is more reliable. But it's a fun project and if you happen to have a microcontroller compatible with V-USB it's worth a try. 

 I was digging though some of my old junk and found a box of old Nintendo stuff and I thought that it might be cool to turn one of the controllers into a USB game pad. Now you can buy a USB NES style gamepad, but what's the fun in that. So, I started looking though my box of electronic parts and found a couple of Atmel Attiny 85 micro controllers. Sweet a chance to try out the AVR-USB library. Now you would think you need a clock crystal to sync the micro controller with the USB, but the AVR-USB library has an algorithm to calibrate the internal oscillator to within +/- 1% accuracy. Which is fortunate because if we had to use a clock crystal, we wouldn't have enough io pins to use this micro controller. Now being lazy I didn't want to have to write the code from scratch, so I used Raphael Assenat's code as a starting point. He has a project on AVR USB community projects, a SNES/NES Gamepad and Atari Joystick to USB Adapter. He was using a different Atmel micro controller, so a few things had to be changed around, and I deleted the stuff I didn't need. Any way it turned out pretty cool, and it makes playing NES emulators way more fun. PS an Attiny 45 would work the only reason I used the 85 is because that's what I happened to have.


 

 

 

 

 

 

 

Source Code Link 

Comments

Popular posts from this blog

Force Phone View: Firefox Extension

If you’ve ever tried to browse the web in split-screen mode on a small laptop, you know the struggle. Most websites stubbornly cling to their "grid" or desktop layout, leaving you with tiny text and horizontally overflowing content. Force Phone View is a Firefox extension designed to fix exactly that. By tricking websites into thinking you're on a mobile device, it forces them to deliver a clean, column-based mobile layout that fits perfectly into narrow windows. Key Features Mobile Spoofing : Automatically sends an Android User-Agent to ensure the site delivers its mobile-optimized version. Width Constraint : Constrains the page viewport to 720 pixels , a width that reliably triggers column views instead of desktop grids. One-Tap Control : Toggle the effect on and off instantly using a simple button in the Firefox extension popup. Enhanced Readability : Perfect for researchers, students, or anyone multitasking in side...

FireFox User-Agent automatic switcher

This extension allows the user to spoof a user-agent on user selected pages. Simply enter the URL you would like to spoof the User-Agent on, select the desired user-agent and click the plus button to add the rule. Make sure the toggle at the top is set to enabled. If you are using this on a mobile browser and the site you are visiting still detects your browser as mobile you will have to enable the "privacy.resistFingerprinting" property in the mobile advanced configuration. Click on the extension icon from Firefox extensions and at the bottom click where it says "Copy Mobile Config URL" paste this into the Firefox address bar and then search for "privacy.resistFingerprinting"      With the user-agent spoofed as a desktop browser and "privacy.resistFingerprinting" set to true, mobile sites such as Reddit.com won't try and force you to install the mobile app to visit their page. On the desktop version of this extension there is a toggle to cha...

Arduino FM Radio Transmitter

This following is re-post of an article from my old blog from 2008: This is an FM radio transmitter I made using an arduino and a NS73M FM Transmitter. I got the idea from an article on hack a day, if you’re interested in building your own you should check out Mike Yancey's page he built the one that made it on hackaday.com and he does a very thorough job of documenting how all the components hook together. I was impressed by the level of finishing he was able to achieve on the housing; it looked like a commercial product. I wanted to see if I could achieve a similar result, it’s amazing what you can do with some simple hand tools. If your patient with the file, you can make perfectly square holes in aluminum.   On my implementation I omitted the de-bouncing circuit that he has connected to his rotary encoder, and I used a two-line display. Since I omitted the de-bouncing circuit, I couldn’t use the original rotary encoder library since that code uses a hardware interrupt a...