查看: 4308|回复: 2

Arduino电视信号输出+多款有声电视游戏全攻略 (PAL NSTC TVOut)

[复制链接]

该用户从未签到

发表于 2013-11-13 14:04 | 显示全部楼层 |阅读模式
本帖最后由 zhizcom 于 2013-11-14 09:35 编辑

前言:
昨天在我烂翻baidu和google的时候,两个醒目的词跳入视线:arduino tvout
我的第一反应是:我靠,不会这么强大吧。。。


第一节 tvout代码:
真的有这么强大。

废话少说,先上库
http://code.google.com/p/arduino ... name=TVoutBeta1.zip
这个好像是最新版本的,虽然是beta版,如果谁找到更新的,麻烦告知一声。这个好像是历史版本
http://code.google.com/p/arduino-tvout/downloads/list
三个文件夹都解压到libraries,随便选个附送的例子编译,直接通过~~

这给人一种蠢蠢欲动的冲动了:难不成,把这东西烧进板子,就能点亮我家的电视?

第二节 硬件连接:
但是问题来了,接线图并不直观... 以往我们看到的arduino接线中,都是直截了当的告诉你数据线接a1或者d5, 并没有按照管脚标注的..
但是这个模块的接线图是这样画的:
connections.PNG

从图中可以看出,我们需要两个电阻(1k和470欧)和半根莲花头的线(这是所需的全部附加原件)
这张图看得人云里雾里,研究了半天没搞懂。
又是一番烂搜,找到本论坛之前有人发过一个相关的帖子,楼主说他的2560连接的是芯片11脚和29脚。
我的是nano r3, atmega328,查了一下管脚图:
atmega328方.png

我从圆点逆时针开始数,11脚是数据口D7,29脚是坑爹的reset线。。。。这显然不对,不知道是不是我数反了。
不过不管它了,我们从代码入手找答案~
在刚才解压的库里面,找到TVout\spec\hardware_setup.h, 这个文件看名字就知道是定义管脚的
中间搜索ATmega328P字样,找到了一串定义:

kittenblock中小学创客名师推荐的图形化编程软件

#if defined(ENABLE_FAST_OUTPUT)
#define PORT_VID        PORTD
#define        DDR_VID                DDRD
#define        VID_PIN                7
#else
#define PORT_VID        PORTB
#define        DDR_VID                DDRB
#define        VID_PIN                0
#endif
//sync
#define PORT_SYNC        PORTB
#define DDR_SYNC        DDRB
#define SYNC_PIN        1
//sound
#define PORT_SND        PORTB
#define DDR_SND                DDRB
#define        SND_PIN                3

ENABLE_FAST_OUTPUT宏启用的情况下(该宏默认是开启的),
video线(也就是470欧电阻)接PORTD 7管脚,对照刚才的芯片管脚图,找到PD7管脚,这个口就是我们arduino的D7口,
sync线(也就是1k电阻)接PORTB 1口,注意,这个是protb,不是porbd了,图中找到pb1管脚也就是arduino的 D9
所以,有如下的接线图了:
132132nkyb2hylyaszk2am.png
声音输出口是PB3管脚,也就是arduino的D11口,其实直接把无源蜂鸣器模块接在上面也就够了,因为那单声道的声音,着实没必要动用电视的超重低音炮
以上是我对tvout的接线难点的分析思路,如果是其他版本的arduino,应该也能用相似的办法解决连线问题.



第三节 电视图像:
接下来, 编译,烧录,tx和rx激烈地闪烁后,电视机忽然出现了图案和文字~ 有英文和数字,甚至还有logo图像。。。甚至还有一个不断旋转的3d线条六面体。。。。
当时我身边并没有小伙伴,所以我独自惊呆了。。。
4.jpg


当然,电视是显示不了上图中的美女的,只能显示黑和白两种颜色.分辨率也很低
我猜也许是因为芯片机能不够,所以只能降低画质,把几行变一行输出吧,
而且输出口使用的是数字口,非模拟口,所以图案颜色只能有0和1两种状态,连灰度也出不来。对电视信号知之甚少,不过还是不明觉厉。

无论如何,这已经很棒了,因为接下来,我们可以用它来打游戏了....
x.JPG



第四节 游戏:我所找到的游戏都来源于一个叫做hackvision的地方
http://nootropicdesign.com/hackvision/games.html

上面提供了12款游戏,不过都是英文的,我大致运行了一下,只有那个worm出错,所有主文件的扩展名都改为ino了,修改了少量旧版本的代码为新版本,在arduino1.05和1.5.4beta上测试通过
游戏都只测试运行过,还没来得及研究接手柄和玩法,详细情况等我试玩后再放出

0. 手柄控制库,该库为所有游戏所必需,先解压到库目录控制库:
Controllers.zip (19.49 KB, 下载次数: 13)
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

热门推荐

KittenBot杯第六届开源硬件开发大赛启动啦
KittenBot杯第六届开源硬
大赛简介: 第六届开源硬件开发大赛由Arduino中文社区发起 由KittenBot冠名赞助
关于arduino编译问题
关于arduino编译问题
编译示例程序老是这个问题,换了电脑都不行
莫名乱码 —— Arduino+RFID-RC522 读写实验
莫名乱码 —— Arduino+RF
目标:想把自己房间门改成感应门锁 器材:Arduino Uno (淘宝七星虫LY-F2)、RFID-RC
[blinker开发实战2]数据反馈
[blinker开发实战2]数据反
[md] ### 添加DIY组件 在编辑模式下,点击按键进入编辑组件页面,可以看到 **按键
用Arduino控制PS2无线手柄为什么一直连接不上
用Arduino控制PS2无线手柄
用Arduino UNO板 连接PS2手柄接收器,为什么指示灯已经显示对接上了,但是打开串口监
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
快速回复 返回顶部 返回列表