极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10059|回复: 1

红外遥控接收篇之四数码管实验改成红外遥控显示

[复制链接]
发表于 2012-11-1 20:11:58 | 显示全部楼层 |阅读模式


数码管实验改成红外控制显示数字

  1. /*
  2. 实验器件:

  3. ocrobot mango控制板(Arduino兼容)   一块   
  4. 面包板跳线   一盒   
  5. 面包板   一块   
  6. 红外接收器   一个   
  7. 红外遥控器 一个
  8. 一位共阳数码管   一个   
  9. USB数据连接线   一根   

  10. 实验电路:
  11. 本实验使用的元件是ocrobot mango控制板套件
  12. 数字针口2至9接共阳数码管,数字针口11接红外接收器VOUT,GND接控制板的GND,VCC接+5V
  13. */



  14. 实物图


  15. /*
  16. *程序目的,用遥控器控制一位数码管的显示,如果是0至9的数字,则显示对应的数字
  17. *如果是其它的,则点闪烁
  18. *达到程序的目的,只是如果对数字键按的时间久了点,常用数字闪烁,或停下按键时数码管不显示的小缺憾
  19. *原因在于,按的时间久了,会产生一个FFFFFFFF的代码,根据程序它会调用点闪烁造成的.
  20. */
  21. 感谢迷你强提供的数码管实验,红外部分遥控引用Irremote\irremoteDemo的范例代码.
  22. /*作者:tom
  23. 时间:2012年11月01日
  24. IDE版本号:1.0.1
  25. 发布地址:[url]www.geek-workshop.com[/url]
  26. 作用:遥控器控制一位数码管的显示,如果是0至9的数字,则显示对应的数字
  27. */
  28. #include <IRremote.h>
  29. int map_led[8]={
  30.   7,6,4,2,1,9,1,5};

  31. int RECV_PIN = 11;//定义红外接收器的引脚为11

  32. IRrecv irrecv(RECV_PIN);

  33. decode_results results;

  34. void digital_0(void)
  35. {  
  36.   /*==============显示数字0==========*/
  37.   int n0[8]={
  38.     0,0,0,0,0,0,1,1  };
  39.   //定义数组通过0,1定义各数码管的明灭.

  40.   int z=0;
  41.   for (int x=2;x<=9;x++)
  42.     //采用循环方式方式点亮指定的数码管Led(数级中0为点亮),单位时间只点亮1个led
  43.   {
  44.     digitalWrite(x,n0[z]);
  45.     z++;
  46.     //点亮led语句,X为引脚数 n0[z]为数组z为0--8的变量,来依次读取数组中的值z++
  47.     if (z>=9) //防止变量z累加超过了8
  48.       z=0;
  49.   }
  50. }

  51. void digital_1(void)
  52. {
  53.   /*=============display 1=========*/
  54.   int n1[8]={
  55.     1,0,0,1,1,1,1,1  };
  56.   int z=0;
  57.   for (int x=2;x<=9;x++)
  58.   {
  59.     digitalWrite(x,n1[z]);
  60.     z++;
  61.     if (z>=9)
  62.       z=0;
  63.   }
  64. }

  65. void digital_2(void)
  66. {

  67.   /*============display 2==========*/
  68.   int n2[8]={
  69.     0,0,1,0,0,1,0,1  };
  70.   int z=0;
  71.   for (int x=2;x<=9;x++)
  72.   {
  73.     digitalWrite(x,n2[z]);
  74.     z++;
  75.     if (z>=9)
  76.       z=0;
  77.   }
  78. }

  79. void digital_3()
  80. {
  81.   /*============dispaly 3=======*/
  82.   int n3[8]={
  83.     0,0,0,0,1,1,0,1  };
  84.   int  z=0;
  85.   for (int x=2;x<=9;x++)
  86.   {
  87.     digitalWrite(x,n3[z]);
  88.     z++;
  89.     if (z>=9)
  90.       z=0;
  91.   }

  92. }

  93. void digital_4()
  94. {
  95.   /*=========display 4======*/
  96.   int n4[8]={
  97.     1,0,0,1,1,0,0,1  };
  98.   int   z=0;
  99.   for (int x=2;x<=9;x++)
  100.   {
  101.     digitalWrite(x,n4[z]);
  102.     z++;
  103.     if (z>=9)
  104.       z=0;
  105.   }
  106. }

  107. void digital_5()
  108. {   
  109.   /*=========display 5======*/
  110.   int n5[8]={
  111.     0,1,0,0,1,0,0,1  };
  112.   int  z=0;
  113.   for (int x=2;x<=9;x++)
  114.   {
  115.     digitalWrite(x,n5[z]);
  116.     z++;
  117.     if (z>=9)
  118.       z=0;
  119.   }
  120. }


  121. void digital_6()
  122. {
  123.   /*=========display 6======*/
  124.   int n6[8]={
  125.     0,1,0,0,0,0,0,1  };
  126.   int  z=0;
  127.   for (int x=2;x<=9;x++)
  128.   {
  129.     digitalWrite(x,n6[z]);
  130.     z++;
  131.     if (z>=9)
  132.       z=0;
  133.   }
  134. }

  135. void digital_7()
  136. {
  137.   /*=========display 7======*/
  138.   int n7[8]={
  139.     0,0,0,1,1,1,1,1  };
  140.   int  z=0;
  141.   for (int x=2;x<=9;x++)
  142.   {
  143.     digitalWrite(x,n7[z]);
  144.     z++;
  145.     if (z>=9)
  146.       z=0;
  147.   }
  148. }

  149. void digital_8()

  150. {
  151.   /*=========display 8======*/
  152.   int n8[8]={
  153.     0,0,0,0,0,0,0,1  };
  154.   int  z=0;
  155.   for (int x=2;x<=9;x++)
  156.   {
  157.     digitalWrite(x,n8[z]);
  158.     z++;
  159.     if (z>=9)
  160.       z=0;
  161.   }
  162. }

  163. void digital_9()
  164. {   
  165.   /*=========display 9======*/
  166.   int n9[8]={
  167.     0,0,0,0,1,0,0,1  };
  168.   int   z=0;
  169.   for (int x=2;x<=9;x++)
  170.   {
  171.     digitalWrite(x,n9[z]);
  172.     z++;
  173.     if (z>=9)
  174.       z=0;
  175.   }
  176. }

  177. void digital_a()
  178. {
  179.   /*=========display a======*/
  180.   int na[8]={
  181.     1,1,0,0,0,1,0,1  };
  182.   int   z=0;
  183.   for (int x=2;x<=9;x++)
  184.   {
  185.     digitalWrite(x,na[z]);
  186.     z++;
  187.     if (z>=9)
  188.       z=0;
  189.   }
  190. }

  191. void digital_b()
  192. {   
  193.   /*=========display b======*/
  194.   int nb[8]={
  195.     1,1,0,0,0,0,0,1  };
  196.   int   z=0;
  197.   for (int x=2;x<=9;x++)
  198.   {
  199.     digitalWrite(x,nb[z]);
  200.     z++;
  201.     if (z>=9)
  202.       z=0;
  203.   }
  204. }

  205. void digital_c()   
  206. {
  207.   /*=========display c======*/
  208.   int nc[8]={
  209.     0,1,1,0,0,0,1,1  };
  210.   int   z=0;
  211.   for (int x=2;x<=9;x++)
  212.   {
  213.     digitalWrite(x,nc[z]);
  214.     z++;
  215.     if (z>=9)
  216.       z=0;
  217.   }
  218. }

  219. void digital_d()
  220. {

  221.   /*=========display d======*/
  222.   int nd[8]={
  223.     1,0,0,0,0,1,0,1  };
  224.   int   z=0;
  225.   for (int x=2;x<=9;x++)
  226.   {
  227.     digitalWrite(x,nd[z]);
  228.     z++;
  229.     if (z>=9)
  230.       z=0;
  231.   }
  232. }

  233. void digital_e()
  234. {

  235.   /*=========display e======*/
  236.   int ne[8]={
  237.     0,0,1,0,0,0,0,1  };
  238.   int   z=0;
  239.   for (int x=2;x<=9;x++)
  240.   {
  241.     digitalWrite(x,ne[z]);
  242.     z++;
  243.     if (z>=9)
  244.       z=0;
  245.   }
  246. }

  247. void digital_f()
  248. {   
  249.   /*=========display F======*/
  250.   int nF[8]={
  251.     0,1,1,1,0,0,0,1  };
  252.   int z=0;
  253.   for (int x=2;x<=9;x++)
  254.   {
  255.     digitalWrite(x,nF[z]);
  256.     z++;
  257.     if (z>=9)
  258.       z=0;
  259.   }
  260. }

  261. void display() //display number 0 -- 9
  262. {
  263.   while (1)
  264.   {
  265.     digital_0;delay(100);
  266.     digital_1;delay(100);
  267.     digital_2;delay(100);
  268.     digital_3;delay(100);
  269.     digital_4;delay(100);
  270.     digital_5;delay(100);
  271.     digital_6;delay(100);
  272.     digital_7;delay(100);
  273.     digital_8;delay(100);
  274.     digital_9;delay(100);
  275.   }
  276.    
  277. }

  278. void displayNULL()
  279. {
  280.    /*=========display NULL======*/
  281.   int n_null[8]={
  282.     1,1,1,1,1,1,1,1  };
  283.   int   z=0;
  284.   for (int x=2;x<=9;x++)
  285.   {
  286.     digitalWrite(x,n_null[z]);
  287.     z++;
  288.     if (z>=9)
  289.       z=0;
  290.   }
  291.   
  292. }
  293. void digital_dotblink()//点的闪烁
  294. {   
  295.   /*=========display dotblink======*/
  296.   int n_high[8]={
  297.     1,1,1,1,1,1,1,0  };
  298.   int n_low[8]={
  299.      1,1,1,1,1,1,1,1 };
  300.   int z=0;
  301.   for (int x=2;x<=9;x++)
  302.   {
  303.     digitalWrite(x,n_high[z]);
  304.     z++;
  305.     if (z>=9)
  306.       z=0;
  307.   }
  308.   delay(50);
  309.     for (int x=2;x<=9;x++)
  310.   {
  311.     digitalWrite(x,n_low[z]);
  312.     z++;
  313.     if (z>=9)
  314.       z=0;
  315.   }

  316.   
  317. }



  318. //初始参数设置

  319. void setup()
  320. {
  321.   Serial.begin(9600);

  322.   irrecv.enableIRIn(); // 初始化红外接收器

  323.   pinMode(13,OUTPUT);
  324.   //激活13号引脚,我们需要用它供电
  325.   for (int n=2;n<=9;n++)
  326.   {
  327.     pinMode(n,OUTPUT);
  328.   }
  329. }

  330. //循环内容

  331. void loop()
  332. {
  333.   digitalWrite(13,HIGH);
  334.   
  335.   
  336.   if (irrecv.decode(&results)) {
  337.     Serial.println(results.value, HEX);//以16进制换行输出接收代码
  338.     Serial.println();//为了便于观看输出结果增加一个空行

  339.     switch  (results.value) {
  340.       case

  341. 0xFF6897:
  342.         digital_0(); //数字0
  343.       break;

  344.     case 0xFF30CF :   //数字1
  345.       digital_1();
  346.       break;
  347.     case 0xFF18E7:   //数字2
  348.       digital_2();
  349.       break;

  350.     case 0xFF7A85:  //数字3
  351.       digital_3();
  352.       break;
  353.     case 0xFF10EF:  //数字4
  354.       digital_4();
  355.       break;
  356.     case 0xFF38C7:  //数字5
  357.       digital_5();
  358.       break;
  359.     case 0xFF5AA5:   //数字6
  360.       digital_6();
  361.       break;
  362.     case 0xFF42BD :   //数字7
  363.       digital_7();
  364.       break;
  365.     case 0xFF4AB5:  //数字8
  366.       digital_8();
  367.       break;
  368.     case 0xFF52AD:    //数字9
  369.       digital_9();
  370.       break;
  371.     default :
  372.       //如果按下的遥控器数字之外的按键,让点闪烁
  373.      digital_dotblink();

  374.     }







  375.     irrecv.resume(); // 接收下一个值
  376.   }




  377. }

复制代码

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2013-4-20 23:15:07 | 显示全部楼层
请教怎么用4位数码管,显示一个4位数????、
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-14 09:06 , Processed in 0.043603 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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