Skip to the content
2 layers43.2 × 36.1 mmArduinoPC, the printed circuit board in 3D

1 Arduino Nano + 1 Logic Chip = Personal Computer with VGA and PS/2

Size
43.2 × 36.1 mm
Copper layers
2
Thickness
1.6 mm
Parts
14
Nets
46
Pads
102
Tracks, vias
295, 0
Pours
1
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
22 Sep 2020
Updated
4 Mar 2025

Overview

ArduinoPC is an open-source printed circuit board by slu4coder, from the slu4coder/Arduino-Nano-PC repository on GitHub. It is a 2-layer board of 43.2 × 36.1 mm with 14 parts on 46 nets, routed with 295 tracks and 0 vias.

It is built around the 74HC08D and 74HC166D. Its parts include 8 resistors, 2 ICs and 2 connectors. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

2

README

README.md

Arduino Nano Personal Computer - Squeezing Water from a Stone

I am pushing the limits of how much compute you can get out of an Arduino Nano:

text
    o 320x200 pixels of monochrome VGA output (optional: 16 row colors)

    o PS/2 keyboard readout

    o requires only 1(!) logic IC 74HC166

bild

HOW TO USE THE 'NANO HOME COMPUTER'

  1. Set the Nano's fuses for output of the 16MHz system clock on pin D8 (see appendix A below).

  2. Copy the library files 'os.h' and 'os.S' into a folder '../Arduino/libraries/os'.

  3. Start a new sketch with '#include <os.h>'. The following global variables and functions are available:

    text
     int os::frames                                        built-in 16-bit 60Hz frame counter
    
     byte os::vram[25][40]                                 character video RAM array
    
     byte os::cram[25]                                     row color RAM array, available colors are:
    
                                                           WHITE, BLACK, GRAY, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN,
                                                 
                                                           DKGRAY, DKRED, DKGREEN, DKYELLOW, DKBLUE, DKMAGENTA, DKCYAN.
                                                 
     os::text(String s, byte x, byte y, byte col = 0)      prints text at screen position (x, y), col = 0: don't set row color
    
     os::fill(char c = 32)                                 fills the video RAM with character c
    
     os::scroll()                                          scrolls the video RAM one step upwards
    
     os::wait(int n)                                       waits for n frames
    
     byte os::getkey()                                     returns keystroke ASCII code (none: 0)
  4. 26KB FLASH (1KB SRAM) of the Nano's 30KB FLASH (2KB SRAM) are usable, respectively. To save SRAM, define constant variables in FLASH memory by adding PROGMEM to the data type. Constant string arguments can be defined in FLASH by using the F("...") macro.

  5. Have fun!

APPENDIX

A. Setting Arduino Nano's fuse bytes via ISP (in-situ programming) for output of system CLK

o Connect two Arduino Nanos in the following way (programmer -> target): D13 -> D13, D12 -> D12, D11 -> D11, D10 -> RESET, 5V -> 5V, GND -> GND

o Arduino IDE: Upload sketch 'examples/ArduinoISP' into programmer and select 'Tools/Programmer/Arduino as ISP'.

o Open the file 'C:\Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt'.

o In section '## Arduino Nano w/ ATmega328P' (line 141), change line 149 'nano.menu.cpu.atmega328.bootloader.low_fuses=0xFF' (default) to '...=0xBF' (output system CLK on Pin D8 (B0)) and save the file.

o Close and re-open the Arduino IDE for the changes to become active.

o Select target board: 'Arduino Nano', processor: 'AtMega328P' and 'Tools/Burn bootloader'.

B. Hardware

Pin A0 (C0): keyboard input CLK

Pin A1 (C1): keyboard input DAT

Pin A2-5 (C2-5): 4-bit color output to 74HC08 (optional)

Pin D0-7 (D0-7): 8-bit pixel output to 74HC166

Pin D8 (B0): CLKO (16MHz system clock output)

Pin D9 (B1): unused

Pin D10 (B2): /VSYNC VGA (timer1, every 1/60s)

Pin D11 (B3): /PE 74166 pixel shift register synchroneous parallel load on rising edge of CP

Pin D12 (B4): /HSYNC VGA (inside ISR, every 32µs)

Pin D13 (B5): LED

Parts

14
QtyValueFootprintReferences
31k3Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P2.54mm_VerticalR1, R2, R3
3680Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P2.54mm_VerticalR4, R5, R6
268Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P2.54mm_VerticalR7, R8
174HC08Package_DIP:DIP-14_W7.62mmU2
174HC166Package_DIP:DIP-16_W7.62mmU1
1Arduino_Nano_v3.xArduinoPC:Arduino_NanoA1
1LOGOlogo:logoG***
1PS/2 KeyboardArduinoPC:FP_MINI_DIN_6_PS2J2
1VGA DB15ArduinoPC:VGA DSUB15HD_femaleJ1

More from slu4coder/Arduino-Nano-PC

3
  • 2 layersArduinoPC, the printed circuit board in 3D

    ArduinoPC

    slu4coder/Arduino-Nano-PC

    1 Arduino Nano + 1 Logic Chip = Personal Computer with VGA and PS/2

    17 parts49
  • 2 layersArduinoPC, the printed circuit board in 3D

    ArduinoPC

    slu4coder/Arduino-Nano-PC

    1 Arduino Nano + 1 Logic Chip = Personal Computer with VGA and PS/2

    17 parts49
  • 2 layers43.2 × 36.1 mmArduinoPC, the printed circuit board in 3D

    ArduinoPC

    slu4coder/Arduino-Nano-PC

    1 Arduino Nano + 1 Logic Chip = Personal Computer with VGA and PS/2

    8 parts49

Similar boards

  • 2 layers245.1 × 160 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-64x4-Home-Computer

    My DIY TTL home computer with VGA and PS/2 and 4x the processing power of a Commodore C64 or Apple II.

    139 parts326
  • 2 layers306.1 × 130.2 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-64-Home-Computer

    Legacy: Full TTL-only home computer with VGA and PS/2 and twice the processing power of a Commodore 64

    132 parts94
  • 2 layers284.9 × 96.5 mmFella, the printed circuit board in 3D

    Fella

    agkaminski/FellaPC

    DIY 6502 all-in-keyboard personal computer

    115 parts2CC0-1.0
  • 4 layers124.5 × 99.1 mmVideo ribbons, the printed circuit board in 3D

    Video ribbons

    rjhelms/compe6502

    Homebrew 6502 system

    82 parts2
  • 2 layers229.9 × 111.8 mmAvr colorvideo, the printed circuit board in 3D

    Avr colorvideo

    74hc595/Amethyst

    8-bit ATmega1284 retro computer

    148 parts306BSD-3-Clause
  • 2 layers62.9 × 50.8 mmArduinoPC, the printed circuit board in 3D

    ArduinoPC

    slu4coder/Minimal-Terminal

    UPDATE 2026: Minimal UART Terminal with 50 x 30 characters VGA output and PS/2 keyboard

    27 parts80
  • 2 layers167 × 115 mmAquarius plus, the printed circuit board in 3D

    Aquarius plus

    fvdhoef/aquarius-plus

    Official Aquarius+ repository

    217 parts62MIT

Questions

How big is the ArduinoPC PCB?

It measures 43.2 × 36.1 mm and has 2 copper layers, 1.6 mm thick.

What parts does the ArduinoPC use?

14 parts, built around the 74HC08D and 74HC166D. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the ArduinoPC KiCad files?

From the slu4coder/Arduino-Nano-PC repository on GitHub, at the commit this page was made from: the board is Rev2/KiCAD (color)/ArduinoPC.kicad_pcb and its schematic Rev2/KiCAD (color)/ArduinoPC.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the ArduinoPC design in my own project?

Its repository states no licence, so its author keeps all rights: ask slu4coder before reusing the design.