怎样使用Arduino控制电视

电子说

1.3w人已加入

描述

步骤1:准备接收信号

电视

首先,您需要获得简介中提到的IR LED接收器

您可以在这里获得一个:http://www.adafruit.com/products/157

它们的价格为2美元,不包括运输和处理费用。

因此,您要按照第一个方法连接接收器。图片。

我强烈建议将IR接收器和遥控器放在鞋盒或较暗的物品中(当然是同一鞋盒)。这样可以确保干扰最少,并且代码更清晰,因此您不必为一项简单的任务就对Arduino进行12次编程。另外,请确保您不妨碍人们看电视。

并且要下载名为IR_RECORD.PDE的文件并将其打开到Arduino程序中。

我希望使用USB电缆将Arduino插入您已经执行第2步!

第2步:接收信号

因此您要将程序上传到您的您已在最后一步中下载了Arduino。

您要正确连接IR接收器。

一切都正确设置后,Arduino便已打开并连接到计算机。单击Arduino程序中的按钮(如图中所圈出的按钮),打开串行监视器。一旦启动并运行。您需要找到一个您想用来控制某物的遥控器。我的意思是:

-查找要控制的遥控器

-将其指向接收器

-按下您想要一次获得代码的按钮

串行监视器

-将整个代码粘贴到记事本或写字板中-进行第3步

第3步:解释信号

您将得到一堆数字,后跟“ usecs”或“ usec”。

请确保已将所需的信号复制到了一个字垫中,以方便参考。像这样:

500usec,300usec

600usec,1200usec

但是会有更多的数字。

现在在程序中,您会看到很多次: br》

delayMicroseconds();

pulseIR();

您要获取第一个数字并将其放在delayMicroseconds(“ here”)括号中。 value

并且您要从与delayMicroseconds()之一相同的行中获取第二个数字;值并将其放在pulseIR()的括号中;值。

示例:

说要在串行监视器上获取此值:

OFF ON

1660 usec,580 usec

1640 usec,560 usec

要输入相应的值

例如:

delayMicroseconds(1660);

pulseIR(580);

delayMicroseconds(1640);

pulseIR(560);

这太可恶了容易。

一旦获得所需的代码,请在Arduino程序中打开IR_SEND.pde文件,然后将您从串行监视器获得的值放在括号之间,方法与我向您展示的方法相同。

下一步将显示我如何使用Comcast遥控器进行此操作的示例。

步骤4:发送信号

现在,一旦有了所需的代码,并用您要发送的信号上载了程序,您要做的就是将IR LED挂接到针脚13,然后类似于图中的示意图接地。图片。如果您有Duemilanove Arduino,则不需要电阻,因为它具有用于PIN 13的内置电阻,因此您不必担心。

这也可以通过ATTINY 8引脚微控制器来实现尺寸。我有一个,但我不确定如何使用它。

现在,我将向您展示如何执行此操作的真实示例。

再次,这不是我的密码,我只是复制并粘贴以便于理解。

所以当我按下Comcast遥控器上的频道向上按钮时,我得到了这段代码。如果您有使用小型黑色遥控器的小型黑匣子,则将拥有这种遥控器。它们充当只能转换通道的模数转换器盒。

这是串行监视器代码:

已接收:

OFF ON 《363》 usec,280 usec

820 usec,300 usec

1580 usec,320 usec

640 usec,240 usec

2740 usec,240 usec 《1280》 1280 usec,240 usec 《12》 usec,240 usec

1120 usec,240 usec

2600usec,240usec

12740usec,240usec

840usec,240usec 《980》 980usec,240usec 《700》 700usec,240usec

700usec,240usec

720 usec,240 usec

2460 usec,260 usec

700 usec,240 usec

700 usec,240 usec

14904 usec,260 usec

820 usec,240 usec

1660 usec ,240 USEC

700 USEC,260 USEC

2740 USEC,240 USEC

1240 USEC,240 USEC

1260 USEC,240 USEC 1100 USEC,240 USEC 《26》 2620,240 USEC usec

12720 usec,260 usec

840 usec,220 usec 《20》 usec,240 usec

1780 usec,260 usec 《700》 c,240 usec

700 usec,240 usec

2480 usec,240 usec

700 usec,240 usec

700 usec,240 usec

这是我从原始数据中编写的代码通过将代码放入以下代码即可:

//此草图将每隔十秒钟更改一次频道,以便您可以在看电视的同时做其他事情

//而不必更改频道,例如在笔记本电脑和

//众所周知,按下按钮是如此困难,所以为什么不使其自动化呢?

int IRledPin = 13;//连接到数字引脚13的LED

//当草图开始时,setup()方法运行一次

void setup(){

//将IR数字引脚初始化为输出:

pinMode(IRledPin,OUTPUT);

Serial.begin(9600);

}

无效循环()

{

SendChannelUpCode();

delay(20 * 1000);//等待二十秒(20秒* 1000毫秒),以不同的时间间隔更改此值。

}

//此过程向IRledPin

//发送38KHz脉冲一定的微秒数。每当需要发送代码时,我们都会使用此方法。

void pulseIR(long microsecs){

//我们将从等待等待的微秒数开始倒数

cli();//关闭所有后台中断,而(microsecs》 0){

//38 kHz大约高13微秒,而低13微秒

digitalWrite(IRledPin,HIGH);//这大约需要3微秒的时间

delayMicroseconds(10);//闲逛10微秒

digitalWrite(IRledPin,LOW);//这也需要大约3微秒

delayMicroseconds(10);//闲逛10微秒

//所以总共26微秒

微秒-= 26;

}

sei();////将它们重新打开

}

void SendChannelUpCode(){

//这是CHANNEL +的代码,用于电视COMCAST

delayMicroseconds(36328);//Time off(LEFT column)

pulseIR(280);//打开时间(RIGHT列)《-------请勿将这些UP

delayMicroseconds(820);

pulseIR(300);

delayMicroseconds(1580);

pulseIR( 320);

delayMicroseconds(640);

pulseIR(240);

delayMicroseconds(1280);

pulseIR(240);

delayMicroseconds(1240);

pulseIR(240) ;

delayMicroseconds(1120);

pulseIR(240);

delayMicroseconds(2600);

pulseIR(240);

delayMicroseconds(12740);

pulseIR(240);

delayMicroseconds(840);

pulseIR(240);

delayMicroseconds(980);

pulseIR(240);

delayMicroseconds(700);

pulseIR(240);

delayMicroseconds(700);

pulseIR(240);

delayMicroseconds(720);

pulseIR(240);

delayMicroseconds(2460);

pulseIR(240);

delayMicroseconds( 700);

pulseIR(240);

delayMicroseconds(700);

pulseIR(240);

delayMicroseconds(14904);

pulseIR(240);

delayMicroseconds(820) ;

pulseIR(240);

delayMicroseconds(1600);

pulseIR(240);

delayMicroseconds(700);

pulseIR(260);

delayMicrose conds(2740);

pulseIR(240);

delayMicroseconds(1240);

pulseIR(240);

delayMicroseconds(1260);

pulseIR(240);

delayMicroseconds( 1100);

pulseIR(240);

delayMicroseconds(2620);

pulseIR(240);

delayMicroseconds(12720);

pulseIR(260);

delayMicroseconds(840) ;

pulseIR(220);

delayMicroseconds(2080);

pulseIR(240);

delayMicroseconds(1780);

pulseIR(260);

delayMicroseconds(700);

pulseIR(240);

delayMicroseconds(700);

pulseIR(240);

delayMicroseconds(2480);

pulseIR(240);

delayMicroseconds(700);

pulseIR(240);

delayMicroseconds(700);

pulseIR(240);

}

责任编辑:wv

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分