红外遥控+数码管显示+LED灯
在论坛中学了不少时间了,自己做了一个小综合的实验:遥控器控制8个LED,“0”表示全灭,“1”表示亮第一个,“2”表示亮前两个,……,数码管上做同步显示。参考以下教程:Arduino入门教程--第二十课--红外遥控器介绍 ;Arduino入门教程--第十八课--Arduino驱动数码管;Arduino入门教程--第一课--板载LED闪烁实验……等。
物料:Arduino Mega 2560板——1块,8段数码管(共阴极)——1个,LED——8个,1838红外发射头——1个,220欧电阻——9个,杜邦线——若干。
下面是硬件连接图:
#include <IRremote.h>// 使用IRRemote函数库
long int IR_button;
String Button_value;
int i;
const int irReceiverPin = 2;// 红外接收器的 OUTPUT 引脚接在 PIN0 接口 定义irReceiverPin变量为PIN2接口
IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
decode_results results; // 定义results变量为红外结果存放位置
void setup()
{
Serial.begin(9600); // 开启串口,波特率为9600
irrecv.enableIRIn(); // 启动红外解码
for(i=3;i<=21;i++) pinMode(i,OUTPUT);
}
void loop()
{
if (irrecv.decode(&results))
{ // 解码成功,把数据放入results变量中
// 把数据输入到串口
//Serial.print("irCode: ");
//Serial.print(results.value, HEX); // 显示红外编码
//Serial.print(",bits: ");
//Serial.println(results.bits); // 显示红外编码位数
irrecv.resume(); // 继续等待接收下一组信号
IR_button=results.value;
//Serial.println(IR_button);
switch (IR_button)
{
case 16753245:
Button_value="CH-";
break;
case 16736925:
Button_value="CH";
break;
case 16769565:
Button_value="CH+";
break;
case 16720605:
Button_value="|<<";
break;
case 16712445:
Button_value=">>|";
break;
case 16761405:
Button_value=">||";
break;
case 16769055:
Button_value="-";
break;
case 16754775:
Button_value="+";
break;
case 16748655:
Button_value="EQ";
break;
case 16738455:
Button_value="0";
break;
case 16750695:
Button_value="100+";
break;
case 16756815:
Button_value="200+";
break;
case 16724175:
Button_value="1";
break;
case 16718055:
Button_value="2";
break;
case 16743045:
Button_value="3";
break;
case 16716015:
Button_value="4";
break;
case 16726215:
Button_value="5";
break;
case 16734885:
Button_value="6";
break;
case 16728765:
Button_value="7";
break;
case 16730805:
Button_value="8";
break;
case 16732845:
Button_value="9";
break;
default:
Button_value="No Input!";
break;
}
Serial.println(Button_value);
//delay(600); //延时600毫秒,做一个简单的消抖
}
if(Button_value=="0")
{
for(i=3;i<=21;i++) digitalWrite(i,LOW);
digitalWrite(15,HIGH);
digitalWrite(14,HIGH);
digitalWrite(19,HIGH);
digitalWrite(20,HIGH);
digitalWrite(21,HIGH);
digitalWrite(16,HIGH);
//digitalWrite(17,HIGH);
//digitalWrite(18,HIGH);
}
else if(Button_value=="1")
{
digitalWrite(3,HIGH);
for(i=4;i<=21;i++) digitalWrite(i,LOW);
//digitalWrite(15,HIGH);
digitalWrite(14,HIGH);
digitalWrite(19,HIGH);
//digitalWrite(20,HIGH);
//digitalWrite(21,HIGH);
//digitalWrite(16,HIGH);
//digitalWrite(17,HIGH);
//digitalWrite(18,HIGH);
}
else if(Button_value=="2")
{
for(i=3;i<=4;i++) digitalWrite(i,HIGH);
for(i=5;i<=21;i++) digitalWrite(i,LOW);
digitalWrite(15,HIGH);
digitalWrite(14,HIGH);
//digitalWrite(19,HIGH);
digitalWrite(20,HIGH);
digitalWrite(21,HIGH);
//digitalWrite(16,HIGH);
digitalWrite(17,HIGH);
//digitalWrite(18,HIGH);
}
else if(Button_value=="3")
{
for(i=3;i<=5;i++) digitalWrite(i,HIGH);
for(i=6;i<=21;i++) digitalWrite(i,LOW);
digitalWrite(15,HIGH);
digitalWrite(14,HIGH);
digitalWrite(19,HIGH);
digitalWrite(20,HIGH);
//digitalWrite(21,HIGH);
//digitalWrite(16,HIGH);
digitalWrite(17,HIGH);
//digitalWrite(18,HIGH);
}
else if(Button_value=="4")
{
for(i=3;i<=6;i++) digitalWrite(i,HIGH);
for(i=7;i<=21;i++) digitalWrite(i,LOW);
//digitalWrite(15,HIGH);
digitalWrite(14,HIGH);
digitalWrite(19,HIGH);
//digitalWrite(20,HIGH);
//digitalWrite(21,HIGH);
digitalWrite(16,HIGH);
digitalWrite(17,HIGH);
//digitalWrite(18,HIGH);
}
else if(Button_value=="5")
{
for(i=3;i<=7;i++) digitalWrite(i,HIGH);
for(i=8;i<=21;i++) digitalWrite(i,LOW);
digitalWrite(15,HIGH);
//digitalWrite(14,HIGH);
digitalWrite(19,HIGH);
digitalWrite(20,HIGH);
//digitalWrite(21,HIGH);
digitalWrite(16,HIGH);
digitalWrite(17,HIGH);
//digitalWrite(18,HIGH);
}
else if(Button_value=="6")
{
for(i=3;i<=8;i++) digitalWrite(i,HIGH);
for(i=9;i<=21;i++) digitalWrite(i,LOW);
//digitalWrite(15,HIGH);
//digitalWrite(14,HIGH);
digitalWrite(19,HIGH);
digitalWrite(20,HIGH);
digitalWrite(21,HIGH);
digitalWrite(16,HIGH);
digitalWrite(17,HIGH);
//digitalWrite(18,HIGH);
}
else if(Button_value=="7")
{
for(i=3;i<=9;i++) digitalWrite(i,HIGH);
for(i=10;i<=21;i++) digitalWrite(i,LOW);
digitalWrite(15,HIGH);
digitalWrite(14,HIGH);
digitalWrite(19,HIGH);
//digitalWrite(20,HIGH);
//digitalWrite(21,HIGH);
//digitalWrite(16,HIGH);
//digitalWrite(17,HIGH);
//digitalWrite(18,HIGH);
}
else if(Button_value=="8")
{
for(i=3;i<=10;i++) digitalWrite(i,HIGH);
for(i=11;i<=21;i++) digitalWrite(i,LOW);
digitalWrite(15,HIGH);
digitalWrite(14,HIGH);
digitalWrite(19,HIGH);
digitalWrite(20,HIGH);
digitalWrite(21,HIGH);
digitalWrite(16,HIGH);
digitalWrite(17,HIGH);
//digitalWrite(18,HIGH);
}
/*else
{
for(i=3;i<=12;i++) digitalWrite(i,LOW);
for(i=14;i<=21;i++) digitalWrite(i,HIGH);
delay(2000);
}*/
}
小伙 把这些代码敲出来也不错啊! LOVE_KE 发表于 2016-7-18 22:32 static/image/common/back.gif
小伙 把这些代码敲出来也不错啊!
见笑,见笑!
本业是做机械的,跟着论坛的前辈们照猫画虎,略有所得吧。
页:
[1]