查看: 22725|回复: 18

[基础教程] DFR0100 Arduino教程 17--数码管显示

[复制链接]
该教程实验平台:Arduino入门套件
上一篇教程:
Arduino教程 Lesson 16--遥控灯


数码管,常见的用来显示数字的,比如像计算器。这回我们就要来好好研究一下数码管,看看它是如何工作的。数码管,其实也算是LED中的一种。数码管的每一段,都是一个独立的LED,通过数字引脚来控制相应段的亮灭就能达到显示数字的效果。这个项目要实现的是循环显示数字0~9。

所需材料
  • 1×  八段数码管
  • 8×  220欧电阻

STEP 1: 硬件连接
按下图连线图连接,注意数码管各段所对应的引脚。右边引脚说明图上为什么画这么几个箭头呢?个人觉得,这样看起来更方便。可以给你作为参考。我们从上面一排看,红色箭头的方向,从右往左,b  a  f  g的顺序正好对应,下面红色箭头逆时针顺序b --> a --> f --> g。蓝色箭头也是表达的同样的意思。

我还特意在连接图上,对数码管所连接的引脚做了标示。这样就能更清楚的知道哪个引脚控制哪一段了。这8个电阻同样是起限流的作用。
1.jpg

STEP 2: 输入代码
  1. void setup(){
  2.   for(int pin = 2 ; pin <= 9 ; pin++){       // 设置数字引脚2~9为输出模式
  3.       pinMode(pin, OUTPUT);
  4.       digitalWrite(pin, HIGH);
  5.   }
  6. }

  7. void loop() {
  8.      // 显示数字0         
  9. int n0[8]={0,0,0,1,0,0,0,1};
  10. //数字引脚2~9依次按数组n0[8]中的数据显示  
  11. for(int pin = 2; pin <= 9 ; pin++){
  12.    digitalWrite(pin,n0[pin-2]);
  13.     }
  14.     delay(500);
  15.    
  16.     // 显示数字1
  17. int n1[8]={0,1,1,1,1,1,0,1};
  18. // 数字引脚2~9依次按数组n1[8]中的数据显示
  19.     for(int pin = 2; pin <= 9 ; pin++){
  20.        digitalWrite(pin,n1[pin-2]);
  21.     }
  22.     delay(500);
  23.    
  24.     // 显示数字2
  25. int n2[8]={0,0,1,0,0,0,1,1};
  26. // 数字引脚2~9依次按数组n2[8]中的数据显示
  27.     for(int pin = 2; pin <= 9 ; pin++){
  28.        digitalWrite(pin,n2[pin-2]);
  29.     }
  30. delay(500);  

  31.     // 显示数字3
  32. int n3[8]={0,0,1,0,1,0,0,1};
  33. // 数字引脚2~9依次按数组n3[8]中的数据显示
  34.     for(int pin = 2; pin <= 9 ; pin++){
  35.        digitalWrite(pin,n3[pin-2]);
  36.     }
  37.     delay(500);  
  38.    
  39.     // 显示数字4
  40. int n4[8]={0,1,0,0,1,1,0,1};
  41. // 数字引脚2~9依次按数组n4[8]中的数据显示
  42.     for(int pin = 2; pin <= 9 ; pin++){
  43.        digitalWrite(pin,n4[pin-2]);
  44.     }
  45.     delay(500);  
  46.    
  47. // 显示数字5
  48. int n5[8]={1,0,0,0,1,0,0,1};
  49. // 数字引脚2~9依次按数组n5[8]中的数据显示
  50.     for(int pin = 2; pin <= 9 ; pin++){
  51.        digitalWrite(pin,n5[pin-2]);
  52.     }
  53.     delay(500);
  54.    
  55. // 显示数字6
  56. int n6[8]={1,0,0,0,0,0,0,1};
  57. // 数字引脚2~9依次按数组n6[8]中的数据显示
  58.     for(int pin = 2; pin <= 9 ; pin++){
  59.        digitalWrite(pin,n6[pin-2]);
  60.     }
  61.     delay(500);
  62.    
  63. // 显示数字7
  64. int n7[8]={0,0,1,1,1,1,0,1};
  65. // 数字引脚2~9依次按数组n7[8]中的数据显示
  66.     for(int pin = 2; pin <= 9 ; pin++){
  67.        digitalWrite(pin,n7[pin-2]);
  68.     }
  69.     delay(500);
  70.    
  71.     // 显示数字8
  72. int n8[8]={0,0,0,0,0,0,0,1};
  73. // 数字引脚2~9依次按数组n8[8]中的数据显示
  74.     for(int pin = 2; pin <= 9 ; pin++){
  75.        digitalWrite(pin,n8[pin-2]);
  76.     }
  77.     delay(500);
  78.    
  79.     // 显示数字9
  80. int n9[8]={0,0,0,0,1,1,0,1};
  81. // 数字引脚2~9依次按数组n9[8]中的数据显示
  82.     for(int pin = 2; pin <= 9 ; pin++){
  83.        digitalWrite(pin,n9[pin-2]);
  84.     }
  85.     delay(500);
  86. }  
复制代码
完成下载后,数码管就会循环显示0~9的数字。由于要看懂代码的话,首先需要了解数码管的构造,所以我们这回先说硬件部分。



STEP 3: 硬件回顾
数码管
数码管其实就是一个前面介绍的led的组合体,这个组合体包含8个led,所以也称之为八段数码管。说白了就八个灯。哪八段?不用多说了吧!a到g以及小数点DP。其实用法和前面说的LED也是一样的,每段都是一个发光二极管,分别用8个数字口来控制它们的亮灭,通过不同段的显示,就能组成0~9的数字。比如,我们让b,a,f,e,d,c亮起的话,就能显示一个数字“0”了。

下图是个引脚说明图,不陌生了吧!在前面硬件连接的时候,已经看到过一次了。
这里,b --> a --> f --> g --> e --> d --> c --> DP分别连接到Arduino数字引脚2~9。

2.jpg
数码管一共有10个引脚。a~DP 这8个引脚接到数字口,那还有两个引脚呢?这是公共端,LED只有一端是不能被点亮的。我们在RGB灯那章讲到过共阴共阳的问题,数码管也存在共阴共阳问题。所谓共阳就是公共端接+5V,共阴则是公共端接GND。

数码管的共阴共阳在使用上有什么区别

共阳数码管,它们公共端接5V,那在代码中,控制另一端的数字引脚为LOW,这样才能让数码管点亮。如果是共阴数码管,公共端接GND,在代码中中,控制另一端数字引脚为HIGH,才让数码管点亮。

所以,共阴共阳只是在代码上要稍作修改。我们这里选用的是共阳数码管。硬件有了了解,我们来看看软件部分。


STEP 4: 代码回顾
硬件部分我们已经说过,数码管需要接到8个数字引脚,所以在一开始,需要定义8个数字引脚作为输出。这次我们用一个for循环来完成这8个数字引脚的设置。数码管b,a,f,g,e,d,c,DP分别和Arduino数字引脚2~9对应。
  1. for(int pin = 2 ; pin <= 9 ; pin++){      
  2.     pinMode(pin, OUTPUT);
  3.     digitalWrite(pin, HIGH);
  4. }
复制代码
从引脚2开始,一直循环到引脚9,都设为OUTPUT模式,初始化为HIGH。前面说过,共阳的话,设置HIGH,不被点亮,所以开始先不点亮数码管。(当然,你一个一个引脚分开设置输出模式也是不会错的,只是会让代码显得很冗长。)


好了,到了主函数,要分别显示0~9的数字。是不是觉得代码大部分都是相似的。所以,我们只要看明白如何显示数字0,那整段代码就都迎刃而解了。
  1. <font face="微软雅黑" size="4">int n0[8]={0,0,0,1,0,0,0,1};</font>
复制代码
这里我们要引入一个数组的概念。数组是一个变量的集合,可以通过索引号来找到数组中的元素。在我们的程序中,声明了一个int型的数组。并取名为n0。之后用8个数值来初始化这个数组。那如何获得数组中的元素呢?你只需要简单的指出这个元素的索引号。数组是从0开始索引的,这意味着数组中的第一个元素的索引号为0而不是1,因此数组中的8个元素的索引号是0~7。在这里元素4,对应索引号为3(n0[3]),值为1。元素8(索引号7,n0[7])的值为1。

声明中n0[8]的方括号中的8代表有8个元素。

定义完数组后,进入又一个for循环。
  1. for(int pin = 2; pin <= 9 ; pin++){
  2.      digitalWrite(pin,n0[pin-2]);
  3. }
复制代码
这个for循环是给2~9引脚写入状态值,也就是HIGH还是LOW,digitalWrite函数中写入HIGH的另一种形式就是写入“1”,LOW则可以写为“0”。我们通过数组索引的方式给2~9引脚赋值。

比如当pin=2,代入n0[pin-2]中,对应为n0[0],n0[0]意思是获得数组的第一个元素,为0。完成了引脚2置低(LOW)。我们前面说了,共阳的数码管,置低(LOW)的话,是被点亮,所以,b端被点亮了。循环到pin=3,a段被点亮,。循环到pin=4,f段被点亮,依次类推……。

整个循环过程如下:
pin=2 --> n0[0] =0 --> digitalWrite(2,0) --> b段点亮
pin=3 --> n0[1] =0 --> digitalWrite(3,0) --> a段点亮
pin=4 --> n0[2] =0 --> digitalWrite(4,0) --> f 段点亮
pin=5 --> n0[3] =1 --> digitalWrite(5,1) --> g段不点亮
pin=6 --> n0[4] =0 --> digitalWrite(6,0) --> e段点亮
pin=7 --> n0[5] =0 --> digitalWrite(7,0) --> d段点亮
pin=8 --> n0[6] =0 --> digitalWrite(8,0) --> c段点亮
pin=9 --> n0[7] =1 --> digitalWrite(9,1) --> DP段不点亮

这样就完成了显示数字“0”了。同样用数组的方法显示数字1~9。自己动手画一下,哪几段亮,哪几段不亮就一目了然了。


flugkatze  见习技师

发表于 2015-1-7 22:19:06

做了一段可以用遥控器控制8段数码管的程序:

  1. #include <IRremote.h>

  2. int RECV_PIN = 11;              
  3. IRrecv irrecv(RECV_PIN);
  4. decode_results results;
  5. boolean stopplay = LOW;
  6. int playNum=0;
  7. boolean onoff = LOW;

  8. void setup(){
  9.   for(int pin = 2 ; pin <= 9 ; pin++){       // 设置数字引脚2~9为输出模式
  10.       pinMode(pin, OUTPUT);
  11.       digitalWrite(pin, HIGH);
  12.       Serial.begin(9600);
  13.       irrecv.enableIRIn();
  14.   }
  15. }

  16. void loop() {
  17.         if (irrecv.decode(&results)) {     
  18.               Serial.println(results.value, HEX);
  19.         
  20.         if (onoff == HIGH)
  21.         {
  22.         switch (results.value) {
  23.           case 0xFD30CF:{
  24.            // 显示数字0         
  25.           displayNum(0);
  26.           playNum=0;}
  27.           break;
  28.           case 0xFD08F7:{
  29.           // 显示数字1
  30.           displayNum(1);
  31.           playNum=1;}
  32.           break;
  33.           case 0xFD8877:{
  34.           // 显示数字2
  35.           displayNum(2);
  36.           playNum=2;}
  37.           break;
  38.           case 0xFD48B7:{
  39.           // 显示数字3
  40.           displayNum(3);
  41.           playNum=3;}
  42.           break;
  43.           case 0xFD28D7:{
  44.           // 显示数字4
  45.           displayNum(4);
  46.           playNum=4;}
  47.           break;
  48.           case 0xFDA857:{
  49.           // 显示数字5
  50.           displayNum(5);
  51.           playNum=5;}
  52.           break;
  53.           case 0xFD6897:{
  54.           // 显示数字6
  55.           displayNum(6);
  56.           playNum=6;}
  57.           break;
  58.           case 0xFD18E7:{
  59.           // 显示数字7
  60.           displayNum(7);
  61.           playNum=7;}
  62.           break;
  63.           case 0xFD9867:{
  64.           // 显示数字8
  65.           displayNum(8);
  66.           playNum=8;}
  67.           break;
  68.           case 0xFD58A7:{
  69.           // 显示数字9
  70.           displayNum(9);
  71.           playNum=9;}
  72.           break;
  73.           case 0xFD00FF:{
  74.            // off         
  75.            for(int pin = 2 ; pin <= 9 ; pin++){       // 设置数字引脚2~9为输出模式
  76.             digitalWrite(pin, HIGH);
  77.             }
  78.           onoff = LOW;}  
  79.           break;
  80.           case 0xFDA05F:
  81.           {
  82.           irrecv.resume();
  83.           stopplay = LOW;
  84.           for (int i = playNum ; i <= 9; i++){
  85.               displayNum(i);
  86.               delay(500);
  87.               
  88.               if (irrecv.decode(&results)) {     
  89.               Serial.println(results.value, HEX);

  90.               if(results.value == 0xFDA05F){
  91.                 stopplay = HIGH;
  92.                 playNum = i;
  93.                  break;    //stop play        
  94.               }     
  95.                irrecv.resume();
  96.               }
  97.             }
  98.           while(!stopplay){
  99.             // 显示数字
  100.             for (int i = 0 ; i <= 9; i++){
  101.               displayNum(i);
  102.               delay(500);
  103.               
  104.               if (irrecv.decode(&results)) {     
  105.               Serial.println(results.value, HEX);

  106.               if(results.value == 0xFDA05F){
  107.                 stopplay = HIGH;
  108.                 playNum = i;
  109.                  break;    //stop play        
  110.               }     
  111.                irrecv.resume();
  112.               }
  113.             }
  114.            }
  115.           }
  116.           break;
  117.           case 0xFD50AF:
  118.           {
  119.             if (++playNum > 9)
  120.               playNum=0;
  121.           displayNum(playNum);
  122.           }
  123.           break;
  124.           case 0xFD10EF:
  125.           {
  126.             if (--playNum < 0)
  127.               playNum=9;
  128.             displayNum(playNum);
  129.           }
  130.           break;
  131.           case 0xFD609F:
  132.           {
  133.             playNum += 2;
  134.             if (playNum > 9)
  135.               playNum -= 10;
  136.           displayNum(playNum);
  137.           }
  138.           break;
  139.           case 0xFD20DF:
  140.           {
  141.             playNum -= 2;
  142.             if (playNum < 0)
  143.               playNum += 10;
  144.             displayNum(playNum);
  145.           }
  146.           break;
  147.           default:
  148.           break;
  149.         }
  150.             irrecv.resume();   
  151.         }
  152.         else {
  153.           if (results.value == 0xFD00FF){
  154.            // on         
  155.           displayNum(playNum);
  156.           onoff = HIGH;}
  157.           irrecv.resume();
  158.         }
  159.         }
  160. }  

  161. void displayNum(int num){
  162.   int n0[8]={0,0,0,1,0,0,0,1};
  163.   int n1[8]={0,1,1,1,1,1,0,1};
  164.   int n2[8]={0,0,1,0,0,0,1,1};
  165.   int n3[8]={0,0,1,0,1,0,0,1};
  166.   int n4[8]={0,1,0,0,1,1,0,1};
  167.   int n5[8]={1,0,0,0,1,0,0,1};
  168.   int n6[8]={1,0,0,0,0,0,0,1};
  169.   int n7[8]={0,0,1,1,1,1,0,1};
  170.   int n8[8]={0,0,0,0,0,0,0,1};
  171.   int n9[8]={0,0,0,0,1,1,0,1};
  172.   int *n /*= (int *) malloc(sizeof(int)*8)*/;
  173.   
  174.   switch (num) {
  175.   case 0:
  176.     n=n0;
  177.     break;
  178.   case 1:
  179.     n=n1;
  180.     break;
  181.   case 2:
  182.     n=n2;
  183.     break;
  184.   case 3:
  185.     n=n3;
  186.     break;
  187.   case 4:
  188.     n=n4;
  189.     break;
  190.   case 5:
  191.     n=n5;
  192.     break;
  193.   case 6:
  194.     n=n6;
  195.     break;
  196.   case 7:
  197.     n=n7;
  198.     break;
  199.   case 8:
  200.     n=n8;
  201.     break;
  202.   case 9:
  203.     n=n9;
  204.     break;
  205.   default:
  206.     // statements
  207.     break;
  208.   }
  209.   //数字引脚2~9依次按数组n0[8]中的数据显示  
  210.   for(int pin = 2; pin <= 9 ; pin++){
  211.      digitalWrite(pin,n[pin-2]);
  212.     }
  213.    
  214. //  free(n);
  215. }
复制代码


红色开关可以控制数码管显示/关闭;
显示状态下按数字键控制数码管显示相应数字;
按下播放键使数码管循环显示0~9,再按一下停止循环;
还有上下键和快进/后退键也有相应的用途;

有一个比较奇怪的地方是:
我如果把displayNum函数中,下面这两段注释的代码打开,就会导致显示失灵。
  1. int *n /*= (int *) malloc(sizeof(int)*8)*/;
复制代码
  1. //  free(n);
复制代码


有哪位大侠能帮忙解释解释?
回复

使用道具 举报

Jane  管理员
 楼主|

发表于 2015-1-8 10:26:56

flugkatze 发表于 2015-1-7 22:19
做了一段可以用遥控器控制8段数码管的程序:

没太看明白你的代码,我之前写过一段也是红外遥控的,给你参考下吧。
  1. #include <IRremote.h>      
  2. int RECV_PIN = 11;         
  3. IRrecv irrecv(RECV_PIN);   
  4. decode_results results;   
  5. int currentNumber = 0;     

  6. long codes[12]=             // this array is used to store infrared codes
  7. {
  8.    0xFD30CF,0xFD08F7,               // 0 ,1
  9.    0xFD8877,0xFD48B7,               // 2 ,3
  10.    0xFD28D7,0xFDA857,               // 4 ,5
  11.    0xFD6897,0xFD18E7,               // 6 ,7
  12.    0xFD9867,0xFD58A7,               // 8 ,9
  13.    0xFD20DF,0xFD609F,               // advance, move back
  14. };

  15. int number[10][8] =            //the array is used to store the number 0~9
  16. {
  17.   {0,0,0,1,0,0,0,1},//0
  18.   {0,1,1,1,1,1,0,1},//1
  19.   {0,0,1,0,0,0,1,1},//2
  20.   {0,0,1,0,1,0,0,1},//3
  21.   {0,1,0,0,1,1,0,1},//4
  22.   {1,0,0,0,1,0,0,1},//5
  23.   {1,0,0,0,0,0,0,1},//6
  24.   {0,0,1,1,1,1,0,1},//7
  25.   {0,0,0,0,0,0,0,1},//8
  26.   {0,0,0,0,1,1,0,1} //9
  27. };

  28. void numberShow(int i) {                  //this function is used to display numbers
  29.   for(int pin = 2; pin <= 9 ; pin++){
  30.      digitalWrite(pin, number[i][pin - 2]);
  31.   }
  32. }

  33. void setup(){
  34.   Serial.begin(9600);            
  35.   irrecv.enableIRIn();         
  36.   
  37.   for(int pin = 2 ; pin <= 9 ; pin++){   
  38.       pinMode(pin, OUTPUT);
  39.       digitalWrite(pin, HIGH);
  40.   }
  41. }

  42. void loop() {
  43.   if (irrecv.decode(&results)) {
  44.       for(int i = 0; i <= 11; i++){
  45.          
  46.          if(results.value == codes[i]&& i <= 9){
  47.                numberShow(i);  // display number 0~9 on the digital control
  48.                currentNumber = i;  
  49.                Serial.println(i);
  50.                break;        
  51.          }
  52.          
  53.          else if(results.value == codes[10]&& currentNumber != 0){
  54.                currentNumber--;                 
  55.                numberShow(currentNumber);      
  56.                Serial.println(currentNumber);  
  57.                break;        
  58.          }
  59.          
  60.          //
  61.          else if(results.value == codes[11]&& currentNumber != 9){
  62.                currentNumber++;                 
  63.                numberShow(currentNumber);      
  64.                Serial.println(currentNumber);
  65.                break;            
  66.          }
  67.     }
  68.    
  69.    Serial.println(results.value, HEX);
  70.    irrecv.resume();   
  71.   }
  72. }
复制代码



回复

使用道具 举报

flugkatze  见习技师

发表于 2015-1-8 21:43:51

Jane 发表于 2015-1-8 10:26
没太看明白你的代码,我之前写过一段也是红外遥控的,给你参考下吧。

OK,多谢!
回复

使用道具 举报

Silver  学徒

发表于 2015-11-15 10:48:51

为什么复制上面的代码会弹出“应用程序错误的窗口”
回复

使用道具 举报

kaka  版主

发表于 2015-11-30 15:41:09

多位数码管的时候,你的IO口就不够用了,建议使用专用数码管驱动芯片
回复

使用道具 举报

powera  见习技师

发表于 2015-12-12 15:02:29

本帖最后由 powera 于 2015-12-12 15:07 编辑

请问Jane,除了那八个接数字口之外,另外两个针脚,从图上来看,都是接到5V上
为什么,不是一个接5V,一个接地吗?


哦,明白了,数码管那另外两个针脚是 公共端
共阳,则两个公共端都接5V
共阴,则两个公共端都接GND。:)

回复

使用道具 举报

qq135791050  见习技师

发表于 2016-5-19 15:46:45

数码管这样接是不是好点吧?23456789分别对应abcdefgDP
捕获.PNG
回复

使用道具 举报

jiashe2011  见习技师

发表于 2017-2-21 23:39:26

好好好!!!!
回复

使用道具 举报

李明哲  见习技师

发表于 2017-3-28 09:28:23

你好,我对数组不是太理解

int number[10][8] =            //the array is used to store the number 0~9
{
  {0,0,0,1,0,0,0,1},//0
  {0,1,1,1,1,1,0,1},//1
  {0,0,1,0,0,0,1,1},//2
  {0,0,1,0,1,0,0,1},//3
  {0,1,0,0,1,1,0,1},//4
  {1,0,0,0,1,0,0,1},//5
  {1,0,0,0,0,0,0,1},//6
  {0,0,1,1,1,1,0,1},//7
  {0,0,0,0,0,0,0,1},//8
  {0,0,0,0,1,1,0,1} //9
};

怎么知道0~9对应的数组就是这几个呢?
回复

使用道具 举报

李明哲  见习技师

发表于 2017-3-28 09:31:28

此段loop里的函数是什么意思,为什么没有  for(int pin = 2; pin <= 9 ; pin++){
     digitalWrite(pin,n[pin-2]); //数字引脚2~9依次按数组n0[8]中的数据显示  
这一段?

void loop() {
  if (irrecv.decode(&results)) {
      for(int i = 0; i <= 11; i++){
         
         if(results.value == codes[i]&& i <= 9){
               numberShow(i);  // display number 0~9 on the digital control
               currentNumber = i;  
               Serial.println(i);
               break;        
         }
         
         else if(results.value == codes[10]&& currentNumber != 0){
               currentNumber--;                 
               numberShow(currentNumber);      
               Serial.println(currentNumber);  
               break;        
         }
         
         //
         else if(results.value == codes[11]&& currentNumber != 9){
               currentNumber++;                 
               numberShow(currentNumber);      
               Serial.println(currentNumber);
               break;            
         }
    }
   
回复

使用道具 举报

Jane  管理员
 楼主|

发表于 2017-3-30 00:29:17

李明哲 发表于 2017-3-28 09:28
你好,我对数组不是太理解

int number[10][8] =            //the array is used to store the number 0~9 ...

QQ截图20170330002030.png 数字0的组成 = (b,a,f,g,e,d,c,DP)赋值为(0,0,0,1,0,0,0,1) 你看这样是不是能理解
回复

使用道具 举报

Jane  管理员
 楼主|

发表于 2017-3-30 00:30:08

李明哲 发表于 2017-3-28 09:31
此段loop里的函数是什么意思,为什么没有  for(int pin = 2; pin

你可以试下效果如何~
回复

使用道具 举报

李明哲  见习技师

发表于 2017-3-30 10:03:12

Jane 发表于 2017-3-30 00:29
数字0的组成 = (b,a,f,g,e,d,c,DP)赋值为(0,0,0,1,0,0,0,1) 你看这样是不是能理解
...

懂了,是0代表LOW,所以显示0的代表亮了。谢谢楼主啦~
回复

使用道具 举报

andyyr  学徒

发表于 2017-7-14 21:53:07

Arduino:1.8.3 (Windows 7), 开发板:"Arduino/Genuino Uno"

C:\Users\andyyt\Desktop\ygf\arduino-1.8.3\libraries\RobotIRremote\src\IRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope

int RECV_PIN = TKD2; // the pin the IR receiver is connected to

                ^

exit status 1
为开发板 Arduino/Genuino Uno 编译时出错。

在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。
回复

使用道具 举报

amoygirl  学徒

发表于 2018-3-27 21:44:00

请问为什么头脚两个+需要连接到5V?发现一端连接到5V就能正常工作了
回复

使用道具 举报

DFryV-PQkh7  学徒

发表于 2018-10-25 20:32:59

Jane 发表于 2015-1-8 10:26
没太看明白你的代码,我之前写过一段也是红外遥控的,给你参考下吧。

有没有电路图啊
回复

使用道具 举报

DFryV-PQkh7  学徒

发表于 2018-10-25 20:34:09

就红外控制8的
回复

使用道具 举报

gada888  版主

发表于 2018-10-28 10:13:01

受教了
回复

使用道具 举报

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

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail