Control TV screen using Arduino

Posted on January 06, 2016 · 9 mins read · Sinhala

TV Screen

මම මේ ලිපියෙන් කියාදෙන්න බලාපොරොත්තු වෙන්නේ, ආර්ඩියුනෝ බෝඩ් එකක් භාවිතා කරලා TV screen එකක් පාලනය කරන ආකාරයයි. Arduino වලට දැනට පුළුවන් වෙන්නේ Black & White රූප නිර්මාණය කරන්න විතරයි. ඒත් ඒක වුණත් ගොඩක් ප්‍රයෝජනවත් දේවල් වලට යොදාගන්න පුළුවන් වෙයි.

මේකට පොඩිම පොඩි components ටිකක් ඕන වෙනවා. මෙන්න ලැයිස්තුව :

  • Arduino Board (Arduino Uno)
  • Television
  • Resistors
    • 470 Ohm (Yellow, Purple, Brown)
    • 1 kOhm (Brown, Black, Red)
  • Circuit Wire
  • RCA Plug or Cable

RCA Plug or Cable

මෙන්න මේ ටික හොයාගෙන Breadboard එකක හරි Vero Board එකක හරි Circuit එක හදාගන්න.

Arduino Uno:

  • Sync - pin 9
  • Video - pin 8

Circuit

Connection Diagram

මේ තියෙන්නේ මම හදාගත්ත එක

My Prototype

දැන් සියල්ල ලෑස්තියි. අපි බලමු ඊළගට මොනාද කරන්න තියෙන්නේ කියලා.

පහත ලින්ක් එකෙන් Arduino TVout කියන Library එක download කරගන්න. (මේ තියෙන්නේ Original Library ) එක. ඒත් ඒකේ ගොඩක් අඩුපාඩු තිබුණ නිසා මම පොඩ්ඩක් ඒක වෙනස් කරලා හදපු එක තමයි දෙන්නේ. දැනට Arduino Uno වල විතරයි Check කළේ. ගැටළුවක් ඇතිවුණොත් Comment එකක් දාන්න.)

Download from Google Drive

ZIP ෆයිල් එක download කරගෙන, My Documents වල තියෙන Arduino\libraries\ කියන ෆෝල්ඩර් එකට copy කරගන්න. නැතිනම් පහත පියවර වලට අනුව library එක add කරගන්න.

Arduino Config 1

Arduino Config 2

මම පාවිච්චි කළේ Arduino 1.6.6 IDE එක. ඊට කලින් සංස්කරණවල මේක හරියට වැඩකළේ නැත්නම් මේ ලින්ක් එකෙන් Arduino [ Arduino 1.6.6 (80.3 MB) ඩවුන්ලෝඩ් කරගන්න.

ඊළගට මේ code එක compile කරලා බෝඩ් එකට upload කරන්න.

#include <TVout.h>

TVout TV;
unsigned char x, y;

void setup()  {

  int r = TV.begin(_PAL);

  TV.clear_screen();
  x = TV.horz_res() - 10;
  y = TV.vert_res() - 10;

  //Outer box
  TV.draw_box(5, 5, x, y, WHITE, WHITE, 0, 1) ;

  //Inner box
  TV.draw_box(8, 8, x - 6, y - 6, WHITE, BLACK, 5, 1) ;

  //Line
  TV.draw_line(12, 20, x - 2, 20, WHITE) ;

  //Text
  TV.select_font(FONT_LARGE);
  TV.print_str(18, 10, "Arduino - TV");

  TV.select_font(FONT_DEFAULT);
}

String text = "  arduino-sinhalen.blogspot.com  ";

void loop() {

  for (int i = 0; i < 16; i++) {

    TV.draw_box(12, 50, x - 12, 10, BLACK, BLACK, 0, 1) ;
    for (int j = 0; j < 18; j++) {
      char c = text.charAt(j + i);
      TV.print_char(12 + 6 * j, 50, c);
    }
    TV.delay_frame(20);
  }
  TV.delay_frame(100);

  for (int i = 15; i >= 0; i--) {
    TV.draw_box(12, 50, x - 12, 10, BLACK, BLACK, 0, 1) ;

    for (int j = 0; j < 18; j++) {
      char c = text.charAt(j + i);
      TV.print_char(12 + 6 * j, 50, c);
    }
    TV.delay_frame(20);
  }
  TV.delay_frame(100);

}

දැන් ඔයාලට බලාගන්න පුළුවන් Arduino බෝඩ් එකෙන් ලස්සනට රූපවාහිනි තිරය මත රූප මවන හැටි.

Library එකේ functions ගැන මෙන්න කෙටි හැදින්වීමක්
horz_res()
 (default - 128)

vert_res()
 (default - 96)

delay_frame(time)
clear_screen()

set_pixel(x,y,color)    
 (0=black, 1=white)

draw_line(x1,y1,x2,y2,color)
 (c-color 1=white, 0=black, 2=invert)

TV.draw_box(x0, y0, x1, y1, c, d, e, f)
 (c-color 1=white, 0=black, 2=invert)
 (d-fill 0=black, 1=white, 2=invert,3=no fill)
 (e-radius for rounded box)
 (f-safe draw or not, 1 = safe)

draw_circle(x0, y0, radius, c, d, h)
 (c-color 1=white, 0=black, 2=invert)
 (d-fill 0=black, 1=white, 2=invert,3=no fill)
 (h-safe draw or not, 1 = safe)

print_char(x,y,c)
 (c-character)
 (x must be multiple of 8)

print_str(x,y,string)

fill(c)
 (c-color 1=white, 0=black, 2=invert)

select_font(s);
 (s- _5X7,_8X8,_3X5)

tone(freq,duration)
 (duration in ms)

ඔයාලට දැන් පුළුවන් මේවා භාවිතා කරලා අළුත් දෙයක් කරන්න. මම පොඩි අදහසක් දෙන්නම්, උත්සාහ කරලා බලන්න Arduino Game Console එකක් හදන්න.