极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15874|回复: 2

红外遥控+数码管显示+LED灯

[复制链接]
发表于 2016-7-18 17:14:41 | 显示全部楼层 |阅读模式
在论坛中学了不少时间了,自己做了一个小综合的实验:遥控器控制8个LED,“0”表示全灭,“1”表示亮第一个,“2”表示亮前两个,……,数码管上做同步显示。
参考以下教程:Arduino入门教程--第二十课--红外遥控器介绍 ;Arduino入门教程--第十八课--Arduino驱动数码管;Arduino入门教程--第一课--板载LED闪烁实验……等。
物料:Arduino Mega 2560板——1块,8段数码管(共阴极)——1个,LED——8个,1838红外发射头——1个,220欧电阻——9个,杜邦线——若干。
下面是硬件连接图:


  1. #include <IRremote.h>  // 使用IRRemote函数库
  2. long int IR_button;
  3. String Button_value;
  4. int i;

  5. const int irReceiverPin = 2;  // 红外接收器的 OUTPUT 引脚接在 PIN0 接口 定义irReceiverPin变量为PIN2接口

  6. IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
  7. decode_results results;    // 定义results变量为红外结果存放位置

  8. void setup()
  9. {
  10.   Serial.begin(9600);   // 开启串口,波特率为9600
  11.   irrecv.enableIRIn();   // 启动红外解码
  12.   for(i=3;i<=21;i++) pinMode(i,OUTPUT);
  13. }

  14. void loop()
  15. {
  16.   if (irrecv.decode(&results))
  17.   {   // 解码成功,把数据放入results变量中
  18.     // 把数据输入到串口
  19.     //Serial.print("irCode: ");            
  20.     //Serial.print(results.value, HEX); // 显示红外编码
  21.     //Serial.print(",  bits: ");           
  22.     //Serial.println(results.bits); // 显示红外编码位数
  23.     irrecv.resume();    // 继续等待接收下一组信号
  24.     IR_button=results.value;
  25.     //Serial.println(IR_button);
  26.     switch (IR_button)
  27.     {
  28.       case 16753245:
  29.         Button_value="CH-";
  30.         break;
  31.       case 16736925:
  32.         Button_value="CH";
  33.         break;
  34.       case 16769565:
  35.         Button_value="CH+";
  36.         break;
  37.       case 16720605:
  38.         Button_value="|<<";
  39.         break;
  40.       case 16712445:
  41.         Button_value=">>|";
  42.         break;
  43.       case 16761405:
  44.         Button_value=">||";
  45.         break;
  46.       case 16769055:
  47.         Button_value="-";
  48.         break;
  49.       case 16754775:
  50.         Button_value="+";
  51.         break;
  52.       case 16748655:
  53.         Button_value="EQ";
  54.         break;
  55.       case 16738455:
  56.         Button_value="0";
  57.         break;
  58.       case 16750695:
  59.         Button_value="100+";
  60.         break;
  61.       case 16756815:
  62.         Button_value="200+";
  63.         break;
  64.       case 16724175:
  65.         Button_value="1";
  66.         break;
  67.       case 16718055:
  68.         Button_value="2";
  69.         break;
  70.       case 16743045:
  71.         Button_value="3";
  72.         break;
  73.       case 16716015:
  74.         Button_value="4";
  75.         break;
  76.       case 16726215:
  77.         Button_value="5";
  78.         break;
  79.       case 16734885:
  80.         Button_value="6";
  81.         break;
  82.       case 16728765:
  83.         Button_value="7";
  84.         break;
  85.       case 16730805:
  86.         Button_value="8";
  87.         break;
  88.       case 16732845:
  89.         Button_value="9";
  90.         break;
  91.       default:
  92.         Button_value="No Input!";
  93.         break;
  94.     }
  95.     Serial.println(Button_value);
  96.     //delay(600); //延时600毫秒,做一个简单的消抖     
  97.   }
  98.   if(Button_value=="0")
  99.   {
  100.     for(i=3;i<=21;i++) digitalWrite(i,LOW);
  101.     digitalWrite(15,HIGH);
  102.     digitalWrite(14,HIGH);
  103.     digitalWrite(19,HIGH);
  104.     digitalWrite(20,HIGH);
  105.     digitalWrite(21,HIGH);
  106.     digitalWrite(16,HIGH);
  107.     //digitalWrite(17,HIGH);
  108.     //digitalWrite(18,HIGH);      
  109.   }
  110.   else if(Button_value=="1")   
  111.   {
  112.     digitalWrite(3,HIGH);
  113.     for(i=4;i<=21;i++) digitalWrite(i,LOW);
  114.     //digitalWrite(15,HIGH);
  115.     digitalWrite(14,HIGH);
  116.     digitalWrite(19,HIGH);
  117.     //digitalWrite(20,HIGH);
  118.     //digitalWrite(21,HIGH);
  119.     //digitalWrite(16,HIGH);
  120.     //digitalWrite(17,HIGH);
  121.     //digitalWrite(18,HIGH);            
  122.   }
  123.   else if(Button_value=="2")
  124.   {
  125.     for(i=3;i<=4;i++) digitalWrite(i,HIGH);
  126.     for(i=5;i<=21;i++) digitalWrite(i,LOW);
  127.     digitalWrite(15,HIGH);
  128.     digitalWrite(14,HIGH);
  129.     //digitalWrite(19,HIGH);
  130.     digitalWrite(20,HIGH);
  131.     digitalWrite(21,HIGH);
  132.     //digitalWrite(16,HIGH);
  133.     digitalWrite(17,HIGH);
  134.     //digitalWrite(18,HIGH);   
  135.   }
  136.   else if(Button_value=="3")
  137.   {
  138.     for(i=3;i<=5;i++) digitalWrite(i,HIGH);
  139.     for(i=6;i<=21;i++) digitalWrite(i,LOW);
  140.     digitalWrite(15,HIGH);
  141.     digitalWrite(14,HIGH);
  142.     digitalWrite(19,HIGH);
  143.     digitalWrite(20,HIGH);
  144.     //digitalWrite(21,HIGH);
  145.     //digitalWrite(16,HIGH);
  146.     digitalWrite(17,HIGH);
  147.     //digitalWrite(18,HIGH);
  148.   }
  149.   else if(Button_value=="4")
  150.   {
  151.     for(i=3;i<=6;i++) digitalWrite(i,HIGH);
  152.     for(i=7;i<=21;i++) digitalWrite(i,LOW);
  153.     //digitalWrite(15,HIGH);
  154.     digitalWrite(14,HIGH);
  155.     digitalWrite(19,HIGH);
  156.     //digitalWrite(20,HIGH);
  157.     //digitalWrite(21,HIGH);
  158.     digitalWrite(16,HIGH);
  159.     digitalWrite(17,HIGH);
  160.     //digitalWrite(18,HIGH);
  161.   }
  162.   else if(Button_value=="5")
  163.   {
  164.     for(i=3;i<=7;i++) digitalWrite(i,HIGH);
  165.     for(i=8;i<=21;i++) digitalWrite(i,LOW);
  166.     digitalWrite(15,HIGH);
  167.     //digitalWrite(14,HIGH);
  168.     digitalWrite(19,HIGH);
  169.     digitalWrite(20,HIGH);
  170.     //digitalWrite(21,HIGH);
  171.     digitalWrite(16,HIGH);
  172.     digitalWrite(17,HIGH);
  173.     //digitalWrite(18,HIGH);
  174.   }
  175.   else if(Button_value=="6")
  176.   {
  177.     for(i=3;i<=8;i++) digitalWrite(i,HIGH);
  178.     for(i=9;i<=21;i++) digitalWrite(i,LOW);
  179.     //digitalWrite(15,HIGH);
  180.     //digitalWrite(14,HIGH);
  181.     digitalWrite(19,HIGH);
  182.     digitalWrite(20,HIGH);
  183.     digitalWrite(21,HIGH);
  184.     digitalWrite(16,HIGH);
  185.     digitalWrite(17,HIGH);
  186.     //digitalWrite(18,HIGH);
  187.   }
  188.   else if(Button_value=="7")
  189.   {
  190.     for(i=3;i<=9;i++) digitalWrite(i,HIGH);
  191.     for(i=10;i<=21;i++) digitalWrite(i,LOW);
  192.     digitalWrite(15,HIGH);
  193.     digitalWrite(14,HIGH);
  194.     digitalWrite(19,HIGH);
  195.     //digitalWrite(20,HIGH);
  196.     //digitalWrite(21,HIGH);
  197.     //digitalWrite(16,HIGH);
  198.     //digitalWrite(17,HIGH);
  199.     //digitalWrite(18,HIGH);
  200.   }
  201.   else if(Button_value=="8")
  202.   {
  203.     for(i=3;i<=10;i++) digitalWrite(i,HIGH);
  204.     for(i=11;i<=21;i++) digitalWrite(i,LOW);
  205.     digitalWrite(15,HIGH);
  206.     digitalWrite(14,HIGH);
  207.     digitalWrite(19,HIGH);
  208.     digitalWrite(20,HIGH);
  209.     digitalWrite(21,HIGH);
  210.     digitalWrite(16,HIGH);
  211.     digitalWrite(17,HIGH);
  212.     //digitalWrite(18,HIGH);
  213.   }
  214.   /*else
  215.   {
  216.     for(i=3;i<=12;i++) digitalWrite(i,LOW);
  217.     for(i=14;i<=21;i++) digitalWrite(i,HIGH);
  218.     delay(2000);
  219.   }*/
  220. }
复制代码





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-7-18 22:32:42 | 显示全部楼层
小伙 把这些代码敲出来也不错啊!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-19 09:11:02 | 显示全部楼层
LOVE_KE 发表于 2016-7-18 22:32
小伙 把这些代码敲出来也不错啊!

见笑,见笑!
本业是做机械的,跟着论坛的前辈们照猫画虎,略有所得吧。
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 07:28 , Processed in 0.035887 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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