This Instructable is for those who would like to use your Arduino to output to a TV. Granted the Arduino is only powerful enough to produce a black and white picture it can still be fun to play with and useful for some projects.

Step 1: Item list

Things you will need:
- Arduino
- A TV
- A Protoboard or PCB
- 2 Resistors
1x 470 ohm ( Yellow, Violet, Brown )
1x 1k ohm ( Brown, Black, Red )
- 2x 2-Pin headers ( Only 3 are used but the 4th helps with stability )
- Spare RCA cord you don't mind cutting up
- Arduino Software ( http://arduino.cc/en/Main/Software )
- The TVout library ( http://code.google.com/p/arduino-tvout/ )
I first tried about 3 or 4 months ago but tonight I managed to crack it, having broken the small PCB I got right 2nd time. 10 out of ten but better photos are needed if confidence initially is desired.
<p>Took about 10 minutes to set everything up and worked fine. Then went to play with thte code and got this in 30 minutes. Didn't have a 470ohm resistor, so used 2x 1k in parallel (=500ohm) and worked fine.</p><p>Only problem I had was: i tried to declare &quot;int a&quot; and put it in a for(a=0;a&lt;50;a++) set_pixel(a,100,2); to make a loading-like progressbar, but it compiled and no image was displayed. broke the FOR into 50 commands of set pixel and worked fine. put it into FOR again and no image. then changed &quot;INT a&quot; to &quot;CONST INT a&quot; and worked fine again. Don't know what happened, but if someone suddenly loses image for no reason, try commenting newly added commands that would make no difference in the display to pinpoint the error.</p>
Does the 470ohm resistor have to be exactly that? because I am having a hard time finding that and I don't really want to buy one because radio shack is really far away. If it doesn't then what's the best repacement.
<p>No it doesn't need to be exact, I put two 330ohm in parallel with one 330ohm in series with them. and it works just fine. ( although i think with 470 the image would be better!)</p>
<p><strong>I get the following error:</strong></p><blockquote>Arduino: 1.6.4 (Windows 8.1), Board: &quot;Arduino Uno&quot;</blockquote><blockquote>Build options changed, rebuilding all</blockquote><blockquote>C:\Users\Neel\Downloads\arduino-1.6.4-windows (1)\arduino-1.6.4\hardware\tools\avr/bin/avr-g++ -c -g -Os -Wall -Wextra -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10604 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR -IC:\Users\Neel\Downloads\arduino-1.6.4-windows (1)\arduino-1.6.4\hardware\arduino\avr\cores\arduino -IC:\Users\Neel\Downloads\arduino-1.6.4-windows (1)\arduino-1.6.4\hardware\arduino\avr\variants\standard C:\Users\Neel\AppData\Local\Temp\build7370315261520868212.tmp\TVInterface.cpp -o C:\Users\Neel\AppData\Local\Temp\build7370315261520868212.tmp\TVInterface.cpp.o </blockquote><blockquote>TVInterface.ino:1:19: fatal error: TVout.h: No such file or directory<br>compilation terminated.<br>Error compiling.</blockquote>
<p>Did you downloat the TVout library from:</p><p>(<a href="http://code.google.com/p/arduino-tvout/downloads/detail?name=TVout_R5.91.zip&can=2&q=" rel="nofollow">http://code.google.com/p/arduino-tvout/downloads/detail?name=TVout_R5.91.zip&amp;can=2&amp;q=</a> )</p><p>??</p>
<p>I did this with a Parallax QuickStart board. I tried with an Uno but got an error which I haven't surmounted as of yet.</p>
<p>It changed from 8 to 7</p><p><a href="https://code.google.com/p/arduino-tvout/wiki/Useage" rel="nofollow">https://code.google.com/p/arduino-tvout/wiki/Useag...</a></p><ul> <br><li>pin8 must be connected to video<ul> <br><li>Will change to pin 7!!! already has in pre-release svn</ul></ul>
<p>got it working. On <a href="https://code.google.com/p/arduino-tvout/" rel="nofollow">https://code.google.com/p/arduino-tvout/</a>, they say </p><p>Arduino UNO:</p><p>video = pin 7<br>sync = pin 9</p><p>well that is not true. The video is on pin 8. I did that and everything works! Thanks</p><p>Let's start coding!!</p>
<p>i am new to this area and tries to compile and run the program .</p><p>there are many error i need help with if its possible :</p><p>TVoutTestR1.pde: In function 'void setup()':</p><p>TVoutTestR1.pde:8:20: error: '_NTSC' was not declared in this scope</p><p>TVoutTestR1.pde: In function 'void loop()':</p><p>TVoutTestR1.pde:15:6: error: 'class TVout' has no member named 'delay'</p><p>Error compiling.</p><p>any help !</p>
<p>Please-anyone help keep this updated... I'm trying to help my boy with his science fair project and this is it!!! We really want to get Arduino Pong working!</p>
<p>Have you installed the TVout library?</p>
Thanks for this tutorial! ;)
<p>Will this work on a regular flat screen TV with composite in?</p>
<p>I have been working with TVout for almost a month now and its been rather frustrating.</p><p>In the code you provide when I try compiling it, apparently start_render and print_str are not members in the TVout class. </p><p>I have the same version of libaries as the one you have linked. Any ideas as to what's up?</p>
<p>which operating system you are using ?</p>
<p>Windows 7 64-bit</p>
Docs say to use 9 and 7,, but you seen to be using 9 and 8. Could you clarify please: <br> <br> <br> NG,Decimila,UNO 9 7
<p>The beta uses 9 and 7</p>
<p>thank you.</p>
<p>good post , I like this. Actually an analog clock on a small CRT screen would look nice....Did you post anything new on this ? something like ping pong or tennis game??</p>
I runned the code and it shows some errors in the following: <br>analogReference {INTERNAL1V1}; <br>class TVout has no member named printbitmap2 <br>void Refreshstatus(); <br>
I had the same problem with the compiler , with errors in the library files , the problem for me was theat I play`d around with my Hackduino with atmega8 and when I swicht the 0022 to my Duemilanueve board with the atmega328 it compiled fine , so i gues it dose not like atmega8 :)
It is definitely possible to get it going on an atmega8, I've done so myself.
on the tv-out page it says it only works with, atmega 168, 328, 1280, 2560, but no it doesnt work on a dated chip such as the atmega8, i cant wait to try iti just dont have the resistors
Hi, <br>I have just downloaded the TVout library and installed it sucessfully. However, when I try to upload the sketch to my Arduino Mega 2560, it gives me this message: <br> <br>C:\Program Files\Arduino\Arduino ERW 1.0.4\libraries\TVout\TVout.cpp:733: error: '_SYNC_PORT' was not declared in this scope <br> <br>But whenever I change my board selection to the Arduino Uno or Mega 1280, it can compile the sketch... <br> <br>Please help me :(
How did you get it on a monitor?
Here I share how to use the updated Beta 1.0 version of the TVOut Library from time frame December 2010. http://code.google.com/p/arduino-tvout/<br> With the Arduino-1.0.3 JAVA ide http://arduino.cc/en/Main/Software<br> Java7 downloaded from &nbsp;www.java.com<br> <br> I added some images that you can see my sketch, and then paste the whole sketch file TVOut_Beta1_Test at the end. To make a presentation post simple, one leaves out missing steps. Conversely adding all the steps and the assumptions makes this post long. I do hope I covered everything, but do comment and add corrections please.<br> <br> I downloaded the file TVOutBeta1.zip, unzipped it, and then added/moved 3 directories pollserial, TVOut, TVOutFonts to the Arduino LIbraries directory &quot;~/arduino-1.0.3/libraries&quot;, where from Arduino IDE I could just issue &quot;Sketch --&gt; Import Library&quot; command to load the &quot;#include TVout.h&quot; &nbsp;&amp; &quot;#include FontALL.h&quot; headers to my current sketch. Or you could just add these 3 libraries to &quot;~sketchbook/libraries&quot; directory. like in the YouTube video Arduino TVout Library Setup http://www.youtube.com/watch?v=LMu7EASMfUY<br> <br> The Tilde character '~' is a short hand for &quot;users home directory&quot; in linux/unix. In Windows it might be like <strong>$HOME</strong> in a batch file?? I use Puppy Linux version<strong> Lucid Puppy 5.2.8 </strong>from <strong>http://puppylinux.org </strong>as my base operating system for the <strong>Arduino Java IDE version 1.0.3 &nbsp; </strong>I believe newer version <strong>Precise Puppy 5.4.3 </strong>would work also.<br> <br> Search the puppylinux forums for Arduino with the URL <strong>http://www.wellminded.com/puppy/pupsearch.html </strong>http://puppylinux.org/wikka/Arduino<br> http://murga-linux.com/puppy/viewtopic.php?t=83862<br> <br> <br> &lt;pre&gt;<br> // February 7, 2013<br> // This code works with file TVoutBeta1.zip dated December 2010 from http://code.google.com/p/arduino-tvout/&nbsp;<br> // and instructions here http://playground.arduino.cc/Main/TVout<br> // I tested with OSEPP UNO R3 Plus board http://osepp.com/products/arduino-compatible-boards/uno-r3-plus/&nbsp; I purchased at Fry's Electronics<br> // Sync on Pin 9, Video on Pin 7, Ground Black Wire to ground post.&nbsp; Audio out on Pin 11.<br> // Code from here http://code.google.com/p/arduino-tvout/<br> //&nbsp; I used http://PuppyLinux.org for my Operating system Version 5.2.8 Lucid Puppy.&nbsp; Newer Precise Puppy should work too.<br> //&nbsp; I downloaded and installed Java 7 from http://www.java.com<br> //&nbsp; specifically the non-RPM version here&nbsp; http://www.java.com/en/download/manual.jsp?locale=en#lin<br> //&nbsp; Then I installed the Arduino Software from here http://arduino.cc/en/Main/Software&nbsp; Version 1.0.3&nbsp; a newer version&nbsp; is 1.5.x for the new Duo Arduino board.<br> <br> //&nbsp; http://www.youtube.com/watch?v=LMu7EASMfUY&nbsp; TVout Library setup with Arduino Sketch software.<br> // Added TV.tone software call but no hardware to test.&nbsp; http://www.youtube.com/watch?v=ntzrp868cKY<br> // Arduino pin 11 drives a resistor divider (1k top, 470 bottom) that feeds a 0.1uF decoupling capacitor (removes DC component of signal) into the audio output jack.<br> // More info and source code here: http://www.wayneandlayne.com/projects...<br> //&nbsp;&nbsp; http://www.wayneandlayne.com/projects/video-game-shield/&nbsp;<br> //&nbsp;&nbsp; http://www.wayneandlayne.com/files/vgs/downloads/video_game_shield-schematic-v1.15.svg&nbsp; see for Audio out Pin 11 schematic<br> <br> <br> #include &lt;TVout.h&gt;<br> #include &lt;video_gen.h&gt;<br> #include &lt;fontALL.h&gt;<br> <br> TVout TV;<br> <br> // Pin 13 has an LED connected on most Arduino boards.<br> // give it a name:<br> int led = 13;<br> <br> // the setup routine runs once when you press reset:<br> <br> void setup()&nbsp; {<br> &nbsp; TV.begin(_NTSC);<br> &nbsp; TV.select_font(font6x8);<br> &nbsp;&nbsp;&nbsp; // initialize the digital pin as an output for blinking the LED.<br> &nbsp; pinMode(led, OUTPUT);<br> }<br> <br> // the loop routine runs over and over again forever:<br> void loop ()<br> {<br> &nbsp; digitalWrite(led, HIGH);&nbsp;&nbsp; // turn the LED on (HIGH is the voltage level)<br> <br> &nbsp; TV.clear_screen ();<br> &nbsp; TV.print( 30, 40, &quot;TVout FTW!!!&quot; );&nbsp; //TVout software for the World!<br> &nbsp; TV.delay (60);<br> &nbsp; TV.tone(480,500);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Play a 480 tone for half second<br> &nbsp; delay(500);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // wait for a half second<br> &nbsp; TV.print (30, 60, &quot;Wait one Second&quot; );<br> &nbsp; digitalWrite(led, LOW);&nbsp;&nbsp;&nbsp; // turn the LED off by making the voltage LOW<br> &nbsp; TV.tone(440,500);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // Play a 480 tone for half second<br> &nbsp; delay(500);<br> &nbsp; TV.draw_rect(20,20,105,56,WHITE); //draw a white rectangle<br> &nbsp; delay(1500);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // wait for two seconds<br> }<br> <br> &lt;/pre&gt;<br> <br> I thought that this was a very inexpensive project to test out Arduino IDE with a OSEPP UNO R3 Plus &nbsp; PuppyLinux is Free, too..<br> 2 resistors 470 and 1000 ohm, 3 jumper wires, and one composite video cable.<br> Radio Shack 470 ohm 271-1115 &nbsp;1000 Ohm 271-1118<br> I tested with out cutting the composite video cable by touching the center pin to the junction end of the 1K and 470 ohm resistor and the outer shield to the black ground wire from the Arduino. &nbsp;This gave me a crisp display on the composite video input to the TV/Monitor. &nbsp; I tried with out success a 12 foot long zip cord (2 wire molded next to each other) audio cable. &nbsp;Then tested a 75 ohm coax composite cable. &nbsp;Success!! &nbsp;Display showed right up. &nbsp; High frequency, megahertz range, video needs coax, &nbsp;while &nbsp;20 -20000 hertz audio works with zip cord.<br> Fred Finster &nbsp;WB7ODY
Here is my take on it, bit higher resolution pictures if it helps anyone. I used jumper wires secured with hot glue instead of header pins since im using a mega and didn't want to make a shield for 3 pins covering half the board.
Looks really good :).. Thanks for the better pics, The camera on my phone doesn't like to stay focused :(
The photo is a little blurry. I've re-build it using Fritzing.<br> Can someone check please if that is correct?<br> <br> http://dl.dropbox.com/u/1133977/Arduino/TV-Out/TV-Out_Steckplatine.png
Sorry about the blurrines... Is the yellow wire the ground in your picture?
it looks like it, altho it should have the colors switched it doesnt really matter what the colors are as long as u got them in the right place ^w^
I can't get it to work, there is always some problem. First it was unrecognized stuff and then error compiling, and now more unrecognized stuff. HELP!!!
Hey... Sorry you're havin problems.. Could you be a little more specific as far as what's goin on? What's it saying is unrecognized?
usually it says &quot;TVout TV is not a name&quot;, now it says &quot;render_setup was not declared in this scope&quot;, but by seeing the bottom after trying to verify it, I can tell that after that is fixed, I will have more problems to fix.
Just tested it works with atmega168 boards too
is it possible to render an image ??
rename the file to dot pde extension and try
I do have a question, how did you solder the Video RCA wire to the protoboard?
The file, when you download it as named as a .tmp file.<br> When I downloaded it it came out as FNRFNXNGTQVP4MU.tmp<br> <strong>Just rename it as something like tvout.pde<br> In fact anynameyoulikereally.pde will work<br> <br> It</strong> <strong>is the .pde part which you need </strong><br> <br> and the arduino ide will recognise it and compile it.
one good news the download was ok i just needed to change the format but the code does not compile i listed a few problems <br><br> <br> <br> down!!!!!!!!!!!!!!
its a pretty long error and i cant type all that and cant cpy either but it says smethin abt<br><br>cores, udr undeclared .....<br><br>this eroor is repeated and with some other errors!!
hey i tried using the code in the pic and it doesnt seemed to work i dont know why /?? i used ide 18,21,22 and none of them seemed to work and the downloading file that comes in .tmp format help?????
Could you give us more information, giving details such as any error messages, compiler errors etc would be a great help.
You might try renaming the file with the proper format. If I remember right, that has worked for me before on here.
I used the 0022 version of the IDE.. What comes up when you try to complie/upload the sketch?<br> <br> And I'm sorry this is my first Instructable and I'm not sure why it would come up as a .tmp file... I'll look into it
This interests me. I still have a couple of old B&amp;W portable battery operated TV's that this project would go great with.<br>

About This Instructable


424 favorites


More by JuggaloMemnoch: TV Out with Arduino
Tags: Arduino TVout
Add instructable to: