佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1456|回复: 6

请问这里有谁用Arduino 做VGA output吗?

[复制链接]
发表于 14-7-2013 10:33 PM | 显示全部楼层 |阅读模式
回复

使用道具 举报


ADVERTISEMENT

发表于 15-7-2013 09:57 PM | 显示全部楼层
演示只是简单的三色显示,如果想要显示一些字体,它必须一直处理刷新屏幕(refreshing screen),这样将会耗完cpu资源,剩下来的工作都不能处理了。除非通过i2c,连接多一个Arduino来处理其他事务。
回复

使用道具 举报

 楼主| 发表于 17-7-2013 10:51 AM | 显示全部楼层
西门庆33 发表于 15-7-2013 09:57 PM
演示只是简单的三色显示,如果想要显示一些字体,它必须一直处理刷新屏幕(refreshing screen),这样将会耗完 ...

如果用MEGA arduino呢? 我是打算做,用tx 跟Rx', 但收到signal时,用VGA display 出来而已。请问你有一些资料吗?

关于用VGA ,google资料不是很多
回复

使用道具 举报

发表于 17-7-2013 06:39 PM | 显示全部楼层
wilson16 发表于 17-7-2013 10:51 AM
如果用MEGA arduino呢? 我是打算做,用tx 跟Rx', 但收到signal时,用VGA display 出来而已。请问你有一 ...

让我找找看,顺便学习
回复

使用道具 举报

 楼主| 发表于 18-7-2013 11:54 PM | 显示全部楼层
西门庆33 发表于 17-7-2013 06:39 PM
让我找找看,顺便学习

ok. 那我也在找着了。。。
回复

使用道具 举报

发表于 27-7-2013 10:28 PM | 显示全部楼层
找达一个比较详细的
http://www.gammon.com.au/forum/?id=11608
回复

使用道具 举报

Follow Us
发表于 20-8-2013 07:46 PM | 显示全部楼层
这里有一个好用的TV 程序库
http://code.google.com/p/arduino-tvout/
tv.jpg

例:
  1. #include <TVout.h>
  2. #include <fontALL.h>
  3. #include "schematic.h"
  4. #include "TVOlogo.h"

  5. TVout TV;

  6. int zOff = 150;
  7. int xOff = 0;
  8. int yOff = 0;
  9. int cSize = 50;
  10. int view_plane = 64;
  11. float angle = PI/60;

  12. float cube3d[8][3] = {
  13.   {xOff - cSize,yOff + cSize,zOff - cSize},
  14.   {xOff + cSize,yOff + cSize,zOff - cSize},
  15.   {xOff - cSize,yOff - cSize,zOff - cSize},
  16.   {xOff + cSize,yOff - cSize,zOff - cSize},
  17.   {xOff - cSize,yOff + cSize,zOff + cSize},
  18.   {xOff + cSize,yOff + cSize,zOff + cSize},
  19.   {xOff - cSize,yOff - cSize,zOff + cSize},
  20.   {xOff + cSize,yOff - cSize,zOff + cSize}
  21. };
  22. unsigned char cube2d[8][2];


  23. void setup() {
  24.   TV.begin(NTSC,120,96);
  25.   TV.select_font(font6x8);
  26.   intro();
  27.   TV.println("I am the TVout\nlibrary running on a freeduino\n");
  28.   TV.delay(2500);
  29.   TV.println("I generate a PAL\nor NTSC composite  video using\ninterrupts\n");
  30.   TV.delay(2500);
  31.   TV.println("My schematic:");
  32.   TV.delay(1500);
  33.   TV.bitmap(0,0,schematic);
  34.   TV.delay(10000);
  35.   TV.clear_screen();
  36.   TV.println("Lets see what\nwhat I can do");
  37.   TV.delay(2000);
  38.   
  39.   //fonts
  40.   TV.clear_screen();
  41.   TV.println(0,0,"Multiple fonts:");
  42.   TV.select_font(font4x6);
  43.   TV.println("4x6 font FONT");
  44.   TV.select_font(font6x8);
  45.   TV.println("6x8 font FONT");
  46.   TV.select_font(font8x8);
  47.   TV.println("8x8 font FONT");
  48.   TV.select_font(font6x8);
  49.   TV.delay(2000);
  50.   
  51.   TV.clear_screen();
  52.   TV.print(9,44,"Draw Basic Shapes");
  53.   TV.delay(2000);
  54.   
  55.   //circles
  56.   TV.clear_screen();
  57.   TV.draw_circle(TV.hres()/2,TV.vres()/2,TV.vres()/3,WHITE);
  58.   TV.delay(500);
  59.   TV.draw_circle(TV.hres()/2,TV.vres()/2,TV.vres()/2,WHITE,INVERT);
  60.   TV.delay(2000);
  61.   
  62.   //rectangles and lines
  63.   TV.clear_screen();
  64.   TV.draw_rect(20,20,80,56,WHITE);
  65.   TV.delay(500);
  66.   TV.draw_rect(10,10,100,76,WHITE,INVERT);
  67.   TV.delay(500);
  68.   TV.draw_line(60,20,60,76,INVERT);
  69.   TV.draw_line(20,48,100,48,INVERT);
  70.   TV.delay(500);
  71.   TV.draw_line(10,10,110,86,INVERT);
  72.   TV.draw_line(10,86,110,10,INVERT);
  73.   TV.delay(2000);
  74.   
  75.   //random cube forever.
  76.   TV.clear_screen();
  77.   TV.print(16,40,"Random Cube");
  78.   TV.print(28,48,"Rotation");
  79.   TV.delay(2000);
  80.   
  81.   randomSeed(analogRead(0));
  82. }

  83. void loop() {
  84.   int rsteps = random(10,60);
  85.   switch(random(6)) {
  86.     case 0:
  87.       for (int i = 0; i < rsteps; i++) {
  88.         zrotate(angle);
  89.         printcube();
  90.       }
  91.       break;
  92.     case 1:
  93.       for (int i = 0; i < rsteps; i++) {
  94.         zrotate(2*PI - angle);
  95.         printcube();
  96.       }
  97.       break;
  98.     case 2:
  99.       for (int i = 0; i < rsteps; i++) {
  100.         xrotate(angle);
  101.         printcube();
  102.       }
  103.       break;
  104.     case 3:
  105.       for (int i = 0; i < rsteps; i++) {
  106.         xrotate(2*PI - angle);
  107.         printcube();
  108.       }
  109.       break;
  110.     case 4:
  111.       for (int i = 0; i < rsteps; i++) {
  112.         yrotate(angle);
  113.         printcube();
  114.       }
  115.       break;
  116.     case 5:
  117.       for (int i = 0; i < rsteps; i++) {
  118.         yrotate(2*PI - angle);
  119.         printcube();
  120.       }
  121.       break;
  122.   }
  123. }

  124. void intro() {
  125. unsigned char w,l,wb;
  126.   int index;
  127.   w = pgm_read_byte(TVOlogo);
  128.   l = pgm_read_byte(TVOlogo+1);
  129.   if (w&7)
  130.     wb = w/8 + 1;
  131.   else
  132.     wb = w/8;
  133.   index = wb*(l-1) + 2;
  134.   for ( unsigned char i = 1; i < l; i++ ) {
  135.     TV.bitmap((TV.hres() - w)/2,0,TVOlogo,index,w,i);
  136.     index-= wb;
  137.     TV.delay(50);
  138.   }
  139.   for (unsigned char i = 0; i < (TV.vres() - l)/2; i++) {
  140.     TV.bitmap((TV.hres() - w)/2,i,TVOlogo);
  141.     TV.delay(50);
  142.   }
  143.   TV.delay(3000);
  144.   TV.clear_screen();
  145. }

  146. void printcube() {
  147.   //calculate 2d points
  148.   for(byte i = 0; i < 8; i++) {
  149.     cube2d[i][0] = (unsigned char)((cube3d[i][0] * view_plane / cube3d[i][2]) + (TV.hres()/2));
  150.     cube2d[i][1] = (unsigned char)((cube3d[i][1] * view_plane / cube3d[i][2]) + (TV.vres()/2));
  151.   }
  152.   TV.delay_frame(1);
  153.   TV.clear_screen();
  154.   draw_cube();
  155. }

  156. void zrotate(float q) {
  157.   float tx,ty,temp;
  158.   for(byte i = 0; i < 8; i++) {
  159.     tx = cube3d[i][0] - xOff;
  160.     ty = cube3d[i][1] - yOff;
  161.     temp = tx * cos(q) - ty * sin(q);
  162.     ty = tx * sin(q) + ty * cos(q);
  163.     tx = temp;
  164.     cube3d[i][0] = tx + xOff;
  165.     cube3d[i][1] = ty + yOff;
  166.   }
  167. }

  168. void yrotate(float q) {
  169.   float tx,tz,temp;
  170.   for(byte i = 0; i < 8; i++) {
  171.     tx = cube3d[i][0] - xOff;
  172.     tz = cube3d[i][2] - zOff;
  173.     temp = tz * cos(q) - tx * sin(q);
  174.     tx = tz * sin(q) + tx * cos(q);
  175.     tz = temp;
  176.     cube3d[i][0] = tx + xOff;
  177.     cube3d[i][2] = tz + zOff;
  178.   }
  179. }

  180. void xrotate(float q) {
  181.   float ty,tz,temp;
  182.   for(byte i = 0; i < 8; i++) {
  183.     ty = cube3d[i][1] - yOff;
  184.     tz = cube3d[i][2] - zOff;
  185.     temp = ty * cos(q) - tz * sin(q);
  186.     tz = ty * sin(q) + tz * cos(q);
  187.     ty = temp;
  188.     cube3d[i][1] = ty + yOff;
  189.     cube3d[i][2] = tz + zOff;
  190.   }
  191. }

  192. void draw_cube() {
  193.   TV.draw_line(cube2d[0][0],cube2d[0][1],cube2d[1][0],cube2d[1][1],WHITE);
  194.   TV.draw_line(cube2d[0][0],cube2d[0][1],cube2d[2][0],cube2d[2][1],WHITE);
  195.   TV.draw_line(cube2d[0][0],cube2d[0][1],cube2d[4][0],cube2d[4][1],WHITE);
  196.   TV.draw_line(cube2d[1][0],cube2d[1][1],cube2d[5][0],cube2d[5][1],WHITE);
  197.   TV.draw_line(cube2d[1][0],cube2d[1][1],cube2d[3][0],cube2d[3][1],WHITE);
  198.   TV.draw_line(cube2d[2][0],cube2d[2][1],cube2d[6][0],cube2d[6][1],WHITE);
  199.   TV.draw_line(cube2d[2][0],cube2d[2][1],cube2d[3][0],cube2d[3][1],WHITE);
  200.   TV.draw_line(cube2d[4][0],cube2d[4][1],cube2d[6][0],cube2d[6][1],WHITE);
  201.   TV.draw_line(cube2d[4][0],cube2d[4][1],cube2d[5][0],cube2d[5][1],WHITE);
  202.   TV.draw_line(cube2d[7][0],cube2d[7][1],cube2d[6][0],cube2d[6][1],WHITE);
  203.   TV.draw_line(cube2d[7][0],cube2d[7][1],cube2d[3][0],cube2d[3][1],WHITE);
  204.   TV.draw_line(cube2d[7][0],cube2d[7][1],cube2d[5][0],cube2d[5][1],WHITE);
  205. }
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 25-4-2024 09:16 AM , Processed in 0.071052 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表