

VGA adapter
Repository for VGA Render. Will use PIC24 MCU for generating a composite video signal
- Size
- 66 × 44.5 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 5
- Nets
- 9
- Pads
- 79
- Tracks, vias
- 44, 4
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 19 Jan 2020
- Updated
- 23 Oct 2026
Overview
VGA adapter is an open-source printed circuit board by dinamicoplus, from the dinamicoplus/VGARender repository on GitHub. It is a 2-layer board of 66 × 44.5 mm with 5 parts on 9 nets, routed with 44 tracks and 4 vias.
Its parts include 3 resistors and 2 connectors. It belongs with the interfaces and adapters boards and the PIC boards of this library.
README
README.mdVGA signal generation with PIC24FJ256GA705
This project is dedicated to use the PIC24FJ256GA705 microcontroller for the generation of a VGA video signal.
Structure
The repository is structured as follows:
- src: Contains all the source code for the microcontroller.
- nbproject: Contains all the MPLABX project. That includes all the Makefiles and IDE configuration as well as all the environmental variables definition.
- PCB_Design/VGA_adapter: Contains the schematics and PCB design for the VGA Adaptor to be plug in the PIC24F Curiosity Board.
- dithering: Contains the python scripts that have been used for this project to generate and adapt images to be used in the microcontroller.
Releases
Installing and compilation
This project has been created using MPLABX X IDE from Microchip. To compile the project and flash it into the PIC24F Curiosity Board, download nbproject and src into the same folder. Then MPLAB X IDE will detect this as a MPLAB project and set it as an active project. From there, there is two configurations available:
- PIC24FJ256GA705_SIM: This is the configuration for the simulation of the project. It has the same setting as the configuration for the target. Use this to simulate the project in your computer without the actual hardware.
- PIC24FJ256GA705_TARGET: This is the configuration for the target. It has been set to work with the PIC24F Curiosity Board, that is, for the use of PKOB Starter Kit Debugger. You can use another flasher or debugger to work with. This is the one that I have used.
Specifications
The system aims to generate a VGA video signal but the microcontroller used can only be set to run at 16 MIPS (32 MHz). With that limitation on mind, the system has the following specifications:
- 150 x 96 pixel resolution
- 3-bit RGB palette
- Only ~8% of CPU time available, as the rest of the time is used to generate the signal.
- Certain level of asynchronism, as the lowest frequency VGA signal is spected to have 25.175 MHz as pixel frecuency. However, this can be compensated if the TV Monitor used is modern.
In spite all these limitations, an implementation of Conway's Game of Life has been achieved. The project has the user.c and user.h files to be used by the user to define the function that he wants. Currently it implements the game Conway's Game of Life as a demonstration. However this can be changed at discretion.
Auxiliary tools
The project includes a python script with functions that can be used to generate a header file for the definition pixel C array. In order to use them the following dependencies needs to be installed:
- Python3
- PIL
Help can be found invoking the following command:
> python3 img_dith.py -h
usage: img_dith.py [-h] [-o O] [-width WIDTH] [-height HEIGHT] [-bits BITS]
[-header HEADER]
input
Process dithering to picture
positional arguments:
input input picture
optional arguments:
-h, --help show this help message and exit
-o O output picture
-width WIDTH width of the pic
-height HEIGHT heigth of the pic
-bits BITS bit depth of the pic
-header HEADER output headerTake into account that the script as is will process the image using the Flos-Steinberg dithering algorithm. In order to disable the dithering, modify the following line in img_dith.py:
# Process the image. Resize, Floyd–Steinberg dithering or Posterize
img = Image.open(in_img)
img = resize_wo_deform(img,(w,h))
#img = posterize(img, bit_depth) <-- Uncomment this line
img = fs_dithering(img,bit_depth) #<-- Comment this linePCB VGA Adaptor
The project requires to manufacture an VGA adaptor for the PIC24F Curiosity Board. The signals are mapped as following:
| uC Pin | VGA Signal | DB15 Pin |
|---|---|---|
| RA0 | RED | 1 |
| RA1 | GREEN | 2 |
| RA2 | BLUE | 3 |
| RB7 | H_SYNC | 13 |
| RB9 | V_SYNC | 14 |
For the proposed design go to the PCG_Design folder. This PCB can be plug into the PIC24F Curiosity board.
Parts
5| Qty | Value | Footprint | References |
|---|---|---|---|
| 3 | 470 | Resistor_SMD:R_0805_2012Metric | R1, R2, R3 |
| 1 | PIC24 Curiosity Board Adapter | custom:2xPinHeader_2x14_P2.54mm_Vertical | J2 |
| 1 | VGA Output | Connector_Dsub:DSUB-15-HD_Female_Horizontal_P2.29x1.98mm_EdgePinOffset3.03mm_Housed_MountingHolesOffset4.94mm | J1 |
Questions
How big is the VGA adapter PCB?
It measures 66 × 44.5 mm and has 2 copper layers, 1.6 mm thick.
What parts does the VGA adapter use?
5 parts. 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 VGA adapter KiCad files?
From the dinamicoplus/VGARender repository on GitHub, at the commit this page was made from: the board is PCB_Design/VGA_adapter/VGA_adapter.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the VGA adapter design in my own project?
Its repository states no licence, so its author keeps all rights: ask dinamicoplus before reusing the design.
Similar boards
- 2 layers98 × 27 mm

- 2 layers21 × 33 mm

24g2usb pico2w
joypad-ai/joypad-os
Universal controller firmware for building adapters, dongles, and custom controllers.
5 parts1.7kApache-2.0 - 2 layers53.2 × 59.6 mm

A10 OLinuXino Lime Rev B SHIELD TEMPLATE
OLIMEX/OLINUXINO
OLINUXINO is Open Source / Open Hardware, low cost from EUR 24 Linux Industrial grade Single Board Computer capable to operate -25+85C
5 parts1.5k - 2 layers30 × 11 mm

Main control board servo tester
jamro/tiny-engineer
A small desktop robot that brings an AI coding assistant to life, physically acting out when it reads files, thinks, writes code, and finishes work.
5 parts1.1k - 2 layers78.8 × 35.3 mm

KiCadTest
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
5 parts915 - 2 layers50 × 23 mm

- 2 layers43.2 × 28.5 mm

- 2 layers20.3 × 15.2 mm

L0 light sensor
Luos-io/luos_engine
Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.
5 parts546MIT