Skip to main content

Posts

Showing posts with the label java

GameBoy (Classic) Work In Progress Part 5

21.2 FPS! I'm borrowing a ChipKIT Max32 from a friend. Hooked it up to the long running GameBoy Classic LCD project I've been working on and after some optimized code I hit 21.2 FPS! Best result yet. I'm used a simple java program to generate a version of my AVR C code in optimized Processing (Arduino-ese). I had to un-roll loops to the point of absurdity that's why I started using code generation... Java code is here . Up on my plate in the near future: IOIO Tinkering - I need to come up with a project worthy of android powers. 30 Days of Creativity - June 1-30 - I'll be doing this again for sure! Maple Tinkering - I think this board might be the next step for the GameBoy Project. I have to return the ChipKIT Max32...the thing can only toggle an I/O pin at 719 kHz (I can get something better at the same price point). And most importantly the KC Maker Faire: June 25-26 :

GameBoy (Classic) Work In Progress Part 3

First: The Open Logic Sniffer is the best thing since sliced bread. Second: I finally have reliable recorded data from the GB CPU to the GB LCD. Okay so before making sense of the data here's what you need to know. I clocked the GameBoy CPU with my own micro-controller the resulting GameBoy CPU Frequency was 812 kHz. That's 24.63 times slower than normal (20 MHz), so all of the data collected needs to be time scaled appropriately. The data was collected on Pins 12-19 of the ribbon cable between the CPU board and the LCD board (See previous post for pin numbering and pin names, some of which are guessed). These pins correspond to inputs 0-7 on the logic analyzer respectively (see labels on image above if you're confused). Two of the data sets were sampled at 10MHz and one at 1MHz. The 1MHz set was only taken for timing of the Vblank (it isn't a high enough sample rate to be considered accurate for data analysis). I won't be drawing conclusions about the...

Remote Controlled Turret

This is an update and rehosting of a senior design project completed in Spring 2008 at RIT . It is (to date) my favorite robotics project. Myself and two friends collaborated to create a remote controlled turret that was accessible from anywhere on the web. The project makes use of a 5 gallon air tank at ~80 psi to fire foam (Nerf) darts. One servo operates six rotating barrels which are mounted on two more servos that provide pan and tilt movement. There are two ultra bright LEDs providing light in dark conditions for a top mounted web-cam. An Arduino is used to control the turret, while communicating (via serial over USB) with a web server that hosts the custom web page and live video stream. A modified PC power supply was used to provide the power. Here's a video of the finished turret... Full System Test I was in charge of most of the hardware and electrical work, Mike programmed the Arduino (I usually work with other AVR stuff ) to take serial commands from a server...

The First

This post is a retrospective look at the first robot I built solely for myself (back in 2008). I had only helped build one robot before this. It's clear I got a very late start into robotics. Although school did prepare me formally to dive right in, I wish I had been more focused on it when I was younger, I would have really flourished in college. This robot was designed mostly on a whim, but has turned out to be a nice solid prototype, and it is very useful for testing sensors and AVR code... The Parts List: Aluminum Chassis, Motor Mounts & Tire hubs - Machined while I was still at RIT when I had access to their machine shop. No original designs are available, I just went in and used what scrap I could find...I'd be embarrassed by providing the true measurements :). Stepper Motors - From Sparkfun ...I may replace these some day with cheaper gear motors so I can use these steppers in a CNC/Drill Press. EasyDriver Stepper Motor Driver - Also from Sparkfun...sim...

Code

Time for the code... The software portion of this robot was fairly straight forward compared to the electrical and hardware designs. I had several previous robots and experiences to pull from when writing the code. As a result the code is very clean and well documented. There are two languages required to understand the code: JAVA and C ( AVR Libc to be precise). JAVA: I used JAVA to create a user interface which would take keyboard input and translate it into serial commands. The UI is very simple. It uses a KeyListener (which is added to all visible components of the UI) to pick up key strokes from the user. When a key is "typed" a string of characters is sent via GiovynetSerialPort1.3 to the XBee Module attached to the PC. The XBee acts a transparent serial cable with the XBee on the robot as the other end of the cable. Any serial data coming from the robot is displayed in the text area... I used Giovynet's serial port library for two reasons; first, Sun (JAVA)...