Shields are add-on boards designed to plug directly onto the Arduino’s main PCB, expanding its capabilities without the need for complex wiring or additional hardware. These shields can add everything from network connectivity and motor control to audio output and displays, making the Arduino platform incredibly versatile for a wide range of projects.
In addition to its usual input/output functions, the Arduino is also capable of generating a composite video signal, allowing you to display basic graphics or text on a standard TV using a simple yellow RCA video cable. In this guide, I’ll walk you through how I built my own composite video-out setup for the Arduino in under 15 minutes, using just a few basic components and minimal code.
Requirements
Before starting this project to create a composite video shield for your Arduino, make sure you have the following hardware and software ready:
🔩 Hardware:
-
Prototype or perf board – at least 8×9 holes (can be larger if preferred).
-
Resistors – one 470-ohm and one 1K-ohm resistor (used to create a voltage divider for video signal output).
-
8-Pin Header Strip – optional, but using all 8 pins adds extra mechanical stability when plugging into the Arduino. You can get by with just 3-pin headers if necessary.
-
RCA Cable – any old RCA cable will work (video or audio). You can reuse red or white audio cables for this project.
-
Soldering Iron + Solder (Tin) – for making permanent, reliable connections on the board.
-
Box Cutter and Small Saw – for cutting and shaping the perfboard as needed.
-
Hot Glue Gun (Optional) – for physically securing components to make the shield more durable.
💾 Software:
-
Arduino IDE – available from the official Arduino website: https://www.arduino.cc/en/Main/Software
-
TVout Library – provides the core functionality for generating a composite video signal: https://code.google.com/p/arduino-tvout/
Building the Composite Video Shield
Cut and Prepare the Prototype Board
Using a small saw or box cutter, cut your prototype board to a size of at least 8 holes by 9 holes. This gives you enough space to mount the necessary components, including the header pins and resistors.
Install Header Pins
Insert an 8-pin male header strip into the board. This will plug directly into the Arduino’s digital pins 0–7, although we only use a few of these pins for video output (usually pins 7 and 9). The other pins provide mechanical support.
Solder each pin securely to the board from the underside.
Wire the Resistors
You’ll be creating a simple voltage divider circuit using the 470-ohm and 1K-ohm resistors. Here’s the basic idea:
-
Pin 9 on the Arduino connects to one side of the 470-ohm resistor.
-
Pin 7 connects to one side of the 1K-ohm resistor.
-
The free ends of both resistors are joined together and connected to the center conductor of the RCA video cable (this forms the composite signal).
-
The outer shield of the RCA cable goes to GND (any Arduino ground pin).
Mount and solder the resistors neatly on the board, connecting them as described above.
Prepare the RCA Cable
Cut off a small length of your RCA cable (you’ll only need one connector). Then:
-
Carefully strip off the outer insulation to expose the shielding wires.
-
Twist the shielding wires together – this will be used for the ground connection.
-
Strip about 1cm of the inner conductor (the video signal wire).
⚠️ Important: Ensure that the shielding wires and the inner signal wire do not touch each other to prevent short circuits.
Solder RCA Cable to the Board
-
Solder the shielding (GND) to the Arduino ground (pin header GND).
-
Solder the center signal wire to the junction point of the 470Ω and 1KΩ resistors.
Optionally, secure the cable to the board using a glue gun to reduce strain on the soldered joints.
Installing the TVout Library
To send video signals from the Arduino to a TV, you need the TVout library.
Download and Install Arduino IDE
Go to https://www.arduino.cc/en/Main/Software and download the appropriate version for your operating system. During installation, Windows may ask multiple times whether to install the USB drivers—click “Install Anyway” each time.
Download the TVout Library
Get the latest version from https://code.google.com/p/arduino-tvout/ (usually a .zip
file containing three folders).
Install the Library
Extract the ZIP file. Place the three folders inside your Arduino libraries folder:
Restart the Arduino IDE if it’s open.
Uploading Example Code
Use this simple example sketch to test your setup. It will display a static message on your TV screen.
-
Load the sketch in the Arduino IDE.
-
Connect your Arduino to the PC via USB.
-
Upload the sketch and plug the RCA cable into your TV’s video input.
-
You should see the message appear on-screen.
Resolution & Compatibility Notes
The TVout library renders video at a default resolution of 128×96 pixels, which is more than enough for simple text and low-res graphics.
It supports both NTSC and PAL video formats—just adjust the code as needed using TV.begin(_NTSC)
or TV.begin(_PAL)
.
TVout is compatible with a variety of ATmega microcontrollers, including:
-
ATmega168 / 328 (Arduino Uno/Nano)
-
ATmega1280 / 2560 (Arduino Mega)
-
ATmega644p / 1284p
-
AT90USB1286 (Teensy 2.0++)
If your microcontroller isn’t supported, you can add it manually by editing the library’s hardware configuration files.