GameBoy Analog Meter

Intro

Here is my project: Use a GameBoy Advance as a display for my PicMicro projects. As a bonus the GBA provides a power source for the project.

The GBA requires nothing but a PicMicro hanging off of it's serial port (no GBA cartridge required). The code that runs on the GBA is stored in the Pic and is loaded automatically upon power up.

The GBA is able to link two or more systems together though it's serial port and only requires a single cartridge to boot up both GBA's. My circuit emulates the master GBA with the cartridge.


This project started with a desire to load a program into the GameBoy Advance using the Multiboot protocol with minimal amount of hardware. Next came a desire to write a program that runs on the GBA that used that same hardware to display something useful. Here is my demo running, displaying two analog values from the PIC (AN0 AN1), see drawing.


Further Suggestions

  1. Make your own custom gauge. Take a picture (or use Google images) of what you want to emulate (a broken speedo?), use GIMP or a favourite photoshop program to erase the needle and convert to a 240x160 indexed picture.

  1. Use the PICKIT2 as a dev system for the GBA. See included files to auto reboot GBA when communication between PICKIT2 and GBA is lost (ie. PIC is being reprogrammed). This is what I did when I was developing the GBA program.

  2. Add pulse input for a tach or speedometer (I've only used a voltage input so far).

  3. Port the PIC software to other devices. Maybe an Arduino?


Resources

pic30-gcc – from MPLAB http://www.microchip.com/ used to develop PIC program.

Pickit2 with pk2cmd – used to program PIC chip.

DevkitPro – used to develop GameBoy Advance program.

Learning to Fly the PIC24 – used to learn how to program PIC24 in C.

Multiboot protocol info No$gba, Matt Evans – used to gain understanding of GBA Multiboot protocol.

Tiny Cad – used to make schematic drawing.

GIMP – used to edit and convert meter faces.

Inkscape - used to create original meter face.


Disclaimer

I do this stuff as a hobby, don't use my code to learn from!


Comments