Hi all, this is my first instructable documenting the creation of my project, the Arduino UNO BASIC shield which turns the Arduino UNO into a computer running the BASIC programming language.

As microcontrollers are essentially low performance computers on a chip (they have a processor, RAM and ROM) they can be used to create small computer systems. The aim of this project was to use AVR microcontrollers to create a computer capable of running the BASIC programming lanuage.

During learning about the Arduino and creating various sketches, I came across the TinyBASIC project which turns the Arduino into a computer by running a BASIC interpreter. After testing the TinyBASIC sketch on my Arduino UNO, I found the available program memory to TinyBASIC to be fairly low at around 1KB which led me to purchasing an ATmega 1284P. After successfully getting TinyBASIC to run on the 1284P, I found the program memory available to be more than 13KB meaning more than a 13x increase in available memory compared to the Arduino UNO.

Being able to run TinyBASIC on the 1284P then led me to think about standalone computers based on the 1284P and TinyBASIC. I alerted the TinyBASIC sketch to include the TVout library and the PS/2 keyboard library but it would not work (due to the PS/2 library and TVout library not being compatible with each other) meaning I needed a second AVR running either the PS/2 library or the TVout library to allow the computer to function correctly.

I decided to use the Arduino UNO which is based on the ATmega 328 to run the TVout sketch while the 1284P would run the TinyBASIC sketch (with the PS/2 library included); it was done this way around to give TinyBASIC the maximum amount of SRAM possible as TVout requires a RAM buffer.

I knew from previous projects that TVout runs fine on the Arduino UNO and after testing TinyBASIC with the PS/2 library on the 1284P (which worked correctly) I decided to place all components on an Arduino UNO shield.

Step 1: Required Components

The components required for the shield PCB are as follows:
1 x ATmega 1284P
1 x DIP40 IC Holder Socket (0.6" wide)
1 x RCA Socket
1 x PS/2 Socket
1 x 470Ω Resistor
1 x 1KΩ Resistor
1 x 220Ω Resistor
1 x 40pin Male Header Strip (to be cut down)
1 x 40pin Female Header Strip (to be cut down)
1 x 5mm LED (This PCB uses an orange LED)
1 x PCB / Arduino Prototype Shield / Stripboard (dependent on how the shield will be made; I created a PCB)

Additionally, solder, a soldering iron, optionally desoldering braid and tools (wire cutters and needle-nose pliers) are needed.

Note this PCB is dual layer. Due to the way I designed this PCB, I also used some 0Ω resistors as jumpers and some tinned copper wires to jump between the layers. The final setup also requires an Arduino UNO, PS/2 keyboard, RCA capable display (such as an LCD TV), RCA cable and a power source (such as a wall mounted PSU).
<p>Will this work on a MEGA</p>
<p>please make a kit or ready to plug in unit available espec for arduino mega</p>
<p>Very well made project, as well as product. I was wondering at perhaps porting the whole thing to a Due with it's increased processor power and memory?</p>
<p>how did you upload the Tiny Basic Program to the microcontroller</p>
Can someone please give me a link to download tiny basic I can not find a site that will work on mine
<p>Very good! But, now I have an idea. I want to porting this on my Intel Edison with PURE Arduino IDE code, without extra AVR, just PS2/Keyboard, TV terminal and SD card.</p><p>You said you ever compiled the Tiny BASIC and download into Arduino UNO, but it caused your memory is not enough, right? Which also means, the Tiny BASIC is fully compatible with Arduino IDE code already, or I got to modify it?</p>
Hi, i have looked on ebay for the atmega1284 and i cant find any, well at least they dont ship to australia so is there a different atmega or microcontrolled that i can use instead? Thanks
<p>Search for ATMega 1284p.</p><p>http://www.ebay.com/itm/Atmel-ATMega1284P-PU-20Mhz-40pin-PDIP-8bit-1-8V-5V-128k-Flash-16k-RAM-US-Seller-/251637026224?pt=LH_DefaultDomain_0&amp;hash=item3a96bc4db0</p>
<p>or you could find a supplier</p>
<p>were do you get the pcb from?</p>
<p>Amazing!! Thks for sharing!</p>
<p>That's great. Make it portable, then it will be amazing </p>
it's awesome!
<p>love it</p>
<p>Very cool project. In the next iteration though, add a capcitor any where form 0.1uF to 10uF between GND and VCC on the ATMega. Adding this decoupling capcitor ensures better power stability on the VCC rail. Good work over all!</p>
<p>Awesome project got to make this! :)</p>
<p>Very nice instructable and your board is straightforward and super simple. We'd love to see you port it to 123D Circuits! Thanks for posting it regardless of what software you used to layout the board :)</p>
Great job, well done.
Very cool. Great job.
This is amazing keep it up :-D

About This Instructable




More by dan14:Single Chip Computer: Easy to produce AVR BASIC Computer Arduino BASIC Shield 
Add instructable to: