Arduino TVout
Maybe your like
Hackster.ioLearning Hardware Community. Projects× Log inSign up NewsContestsEventsVideos ×
DrOpShOtZPublished March 15, 2021Arduino TVout


Embed the widget on your own site
Add the following snippet to your HTML:

How to print an image on an TV
Read up about this project on 
Arduino TVout
DrOpShOtZ3 4,406How to print an image on an TV
BeginnerProtip4,406Things used in this project
Hardware components | |||||
![]() |
| × | 4 |
| |
![]() |
| × | 1 |
| |
![]() |
| × | 1 |
| |
![]() |
| × | 1 | ||
![]() |
| × | 1 | ||
![]() |
| × | 1 | ||
Software apps and online services | |||||
![]() |
| ||||
Story
Download the library and the code https://drive.google.com/file/d/1yIePyEFQjKPJDyKFeGYTivttunBMunN9/view
download TVout library Sketch>Manage Libraries...>Search>TVout>install
Read moreSchematics
Arduino TVout
The circuit diagram
Code
- Arduino TVout
Arduino TVout
Arduino#include "TVout.h" #include <fontALL.h> #include "schematic.h" #include "TVOlogo.h" TVout TV; int zOff = 150; int xOff = 0; int yOff = 0; int cSize = 50; int view_plane = 64; float angle = PI/60; float cube3d[8][3] = { {xOff - cSize,yOff + cSize,zOff - cSize}, {xOff + cSize,yOff + cSize,zOff - cSize}, {xOff - cSize,yOff - cSize,zOff - cSize}, {xOff + cSize,yOff - cSize,zOff - cSize}, {xOff - cSize,yOff + cSize,zOff + cSize}, {xOff + cSize,yOff + cSize,zOff + cSize}, {xOff - cSize,yOff - cSize,zOff + cSize}, {xOff + cSize,yOff - cSize,zOff + cSize} }; unsigned char cube2d[8][2]; void setup() { TV.begin(NTSC,120,96); TV.select_font(font6x8); intro(); TV.println("I am the TVout\nlibrary running on a freeduino\n"); TV.delay(2500); TV.println("I generate a PAL\nor NTSC composite video using\ninterrupts\n"); TV.delay(2500); TV.println("My schematic:"); TV.delay(1500); TV.bitmap(0,0,schematic); TV.delay(10000); TV.clear_screen(); TV.println("Lets see what\nwhat I can do"); TV.delay(2000); //fonts TV.clear_screen(); TV.println(0,0,"Multiple fonts:"); TV.select_font(font4x6); TV.println("4x6 font FONT"); TV.select_font(font6x8); TV.println("6x8 font FONT"); TV.select_font(font8x8); TV.println("8x8 font FONT"); TV.select_font(font6x8); TV.delay(2000); TV.clear_screen(); TV.print(9,44,"Draw Basic Shapes"); TV.delay(2000); //circles TV.clear_screen(); TV.draw_circle(TV.hres()/2,TV.vres()/2,TV.vres()/3,WHITE); TV.delay(500); TV.draw_circle(TV.hres()/2,TV.vres()/2,TV.vres()/2,WHITE,INVERT); TV.delay(2000); //rectangles and lines TV.clear_screen(); TV.draw_rect(20,20,80,56,WHITE); TV.delay(500); TV.draw_rect(10,10,100,76,WHITE,INVERT); TV.delay(500); TV.draw_line(60,20,60,76,INVERT); TV.draw_line(20,48,100,48,INVERT); TV.delay(500); TV.draw_line(10,10,110,86,INVERT); TV.draw_line(10,86,110,10,INVERT); TV.delay(2000); //random cube forever. TV.clear_screen(); TV.print(16,40,"Random Cube"); TV.print(28,48,"Rotation"); TV.delay(2000); randomSeed(analogRead(0)); } void loop() { int rsteps = random(10,60); switch(random(6)) { case 0: for (int i = 0; i < rsteps; i++) { zrotate(angle); printcube(); } break; case 1: for (int i = 0; i < rsteps; i++) { zrotate(2*PI - angle); printcube(); } break; case 2: for (int i = 0; i < rsteps; i++) { xrotate(angle); printcube(); } break; case 3: for (int i = 0; i < rsteps; i++) { xrotate(2*PI - angle); printcube(); } break; case 4: for (int i = 0; i < rsteps; i++) { yrotate(angle); printcube(); } break; case 5: for (int i = 0; i < rsteps; i++) { yrotate(2*PI - angle); printcube(); } break; } } void intro() { unsigned char w,l,wb; int index; w = pgm_read_byte(TVOlogo); l = pgm_read_byte(TVOlogo+1); if (w&7) wb = w/8 + 1; else wb = w/8; index = wb*(l-1) + 2; for ( unsigned char i = 1; i < l; i++ ) { TV.bitmap((TV.hres() - w)/2,0,TVOlogo,index,w,i); index-= wb; TV.delay(50); } for (unsigned char i = 0; i < (TV.vres() - l)/2; i++) { TV.bitmap((TV.hres() - w)/2,i,TVOlogo); TV.delay(50); } TV.delay(3000); TV.clear_screen(); } void printcube() { //calculate 2d points for(byte i = 0; i < 8; i++) { cube2d[i][0] = (unsigned char)((cube3d[i][0] * view_plane / cube3d[i][2]) + (TV.hres()/2)); cube2d[i][1] = (unsigned char)((cube3d[i][1] * view_plane / cube3d[i][2]) + (TV.vres()/2)); } TV.delay_frame(1); TV.clear_screen(); draw_cube(); } void zrotate(float q) { float tx,ty,temp; for(byte i = 0; i < 8; i++) { tx = cube3d[i][0] - xOff; ty = cube3d[i][1] - yOff; temp = tx * cos(q) - ty * sin(q); ty = tx * sin(q) + ty * cos(q); tx = temp; cube3d[i][0] = tx + xOff; cube3d[i][1] = ty + yOff; } } void yrotate(float q) { float tx,tz,temp; for(byte i = 0; i < 8; i++) { tx = cube3d[i][0] - xOff; tz = cube3d[i][2] - zOff; temp = tz * cos(q) - tx * sin(q); tx = tz * sin(q) + tx * cos(q); tz = temp; cube3d[i][0] = tx + xOff; cube3d[i][2] = tz + zOff; } } void xrotate(float q) { float ty,tz,temp; for(byte i = 0; i < 8; i++) { ty = cube3d[i][1] - yOff; tz = cube3d[i][2] - zOff; temp = ty * cos(q) - tz * sin(q); tz = ty * sin(q) + tz * cos(q); ty = temp; cube3d[i][1] = ty + yOff; cube3d[i][2] = tz + zOff; } } void draw_cube() { TV.draw_line(cube2d[0][0],cube2d[0][1],cube2d[1][0],cube2d[1][1],WHITE); TV.draw_line(cube2d[0][0],cube2d[0][1],cube2d[2][0],cube2d[2][1],WHITE); TV.draw_line(cube2d[0][0],cube2d[0][1],cube2d[4][0],cube2d[4][1],WHITE); TV.draw_line(cube2d[1][0],cube2d[1][1],cube2d[5][0],cube2d[5][1],WHITE); TV.draw_line(cube2d[1][0],cube2d[1][1],cube2d[3][0],cube2d[3][1],WHITE); TV.draw_line(cube2d[2][0],cube2d[2][1],cube2d[6][0],cube2d[6][1],WHITE); TV.draw_line(cube2d[2][0],cube2d[2][1],cube2d[3][0],cube2d[3][1],WHITE); TV.draw_line(cube2d[4][0],cube2d[4][1],cube2d[6][0],cube2d[6][1],WHITE); TV.draw_line(cube2d[4][0],cube2d[4][1],cube2d[5][0],cube2d[5][1],WHITE); TV.draw_line(cube2d[7][0],cube2d[7][1],cube2d[6][0],cube2d[6][1],WHITE); TV.draw_line(cube2d[7][0],cube2d[7][1],cube2d[3][0],cube2d[3][1],WHITE); TV.draw_line(cube2d[7][0],cube2d[7][1],cube2d[5][0],cube2d[5][1],WHITE); }Credits
DrOpShOtZ
12 projects • 18 followersContact me from Discord. DrOpShOtZ#6290 FollowComments
Tag » Arduino Tv Out Bitmap
-
Arduino TV Out - Importing Picture - Arduino Project Hub
-
How To Embed A Bitmap On TV With Arduino Using TVout Library
-
Arduino-tvout / Wiki / Bitmaps - SourceForge
-
Arduino TVout Library Image Output Tutorial - The EECS Blog
-
How To Embed A Bitmap On TV With Arduino Using TVout Library
-
TVout Drawing - Nootropic Design
-
Arduino TVout Pi Day Logo : 7 Steps - Instructables
-
TV Out With Arduino : 4 Steps (with Pictures) - Instructables
-
1) Exploitation De La Librairie "Arduino TVout" - F5MNA
-
Arduino-tvout/TVout.cpp At Master · Avamander/arduino-tvout - GitHub
-
Flappy-o - Wokwi Arduino And ESP32 Simulator
-
o - Wokwi Arduino And ESP32 Simulator






