|
|
在论坛中学了不少时间了,自己做了一个小综合的实验:遥控器控制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);
- }*/
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|