Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在arduino身上找不到合适的时间?_Arduino_Display_Arduino Ide_Led - Fatal编程技术网

在arduino身上找不到合适的时间?

在arduino身上找不到合适的时间?,arduino,display,arduino-ide,led,Arduino,Display,Arduino Ide,Led,我有一个小的7段led显示屏,我想知道是否能让它显示一分钟的最后一位数字。下载了Arduino的时间库,我尝试了几种方法,使用开关盒和if-else-if,但都给出了相同的结果,LED显示屏仅显示0。。。你能指出我做错了什么吗 #include <Time.h> #include <TimeLib.h> int led1=2; int led2=3; int led3=4; int led4=5; int led5=6; int led6=7; int led7=8;

我有一个小的7段led显示屏,我想知道是否能让它显示一分钟的最后一位数字。下载了Arduino的时间库,我尝试了几种方法,使用开关盒和if-else-if,但都给出了相同的结果,LED显示屏仅显示0。。。你能指出我做错了什么吗

#include <Time.h>
#include <TimeLib.h>

int led1=2;
int led2=3;
int led3=4;
int led4=5;
int led5=6;
int led6=7;
int led7=8;
int led8=9;

void setup() {

  pinMode(led1,OUTPUT);
  pinMode(led2,OUTPUT);
  pinMode(led3,OUTPUT);
  pinMode(led4,OUTPUT);
  pinMode(led5,OUTPUT);
  pinMode(led6,OUTPUT);
  pinMode(led7,OUTPUT);
  pinMode(led8,OUTPUT);

}

void loop(){
  time_t t=minute();
  int digit1=t%10;


  if(digit1==1){
    digitalWrite(led5, HIGH);
    digitalWrite(led3, HIGH);
    }else if(digit1==2)

    {
    digitalWrite(led6, HIGH);
    digitalWrite(led5, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    } else if(digit1==3)

    {
    digitalWrite(led4, HIGH);
    digitalWrite(led6, HIGH);
    digitalWrite(led5, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led2, HIGH);
    }else if(digit1==4)

    {
    digitalWrite(led4, HIGH);
    digitalWrite(led7, HIGH);
    digitalWrite(led5, HIGH);
    digitalWrite(led3, HIGH);
    }else if(digit1==5)

    {
    digitalWrite(led6, HIGH);
    digitalWrite(led7, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led2, HIGH);
    }else if(digit1==6)

    {
    digitalWrite(led6, HIGH);
    digitalWrite(led7, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    }else if(digit1==7)

    {
    digitalWrite(led5, HIGH);
    digitalWrite(led6, HIGH);
    digitalWrite(led3, HIGH);
    }else if(digit1==8)

    {
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led5, HIGH);
    digitalWrite(led6, HIGH);
    digitalWrite(led7, HIGH);
    }else if(digit1==9)

    {
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);
    digitalWrite(led5, HIGH);
    digitalWrite(led6, HIGH);
    digitalWrite(led7, HIGH);
    }else if(digit1==0)

    {
    digitalWrite(led1, HIGH);
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led5, HIGH);
    digitalWrite(led6, HIGH);
    digitalWrite(led7, HIGH);
    }





}    

你从来没有写任何一个引脚去低。当下一分钟到来时,合适的LED灯可能会亮起,但旧的LED灯不会熄灭,所以你看不到任何变化


为了避免每次循环都关闭和再次打开所有LED,我会存储最后一个已知的数字,并在每次循环迭代时,查看数字是否已更改。如果有,请关闭所有指示灯,然后运行您在此处发布的代码。

您没有添加低电平条件,因此当pin变高时,它将保持高电平。另外,我已经检查过了,我认为您的接线不正确。我在下面发布完整的代码和相应的连接


我已经尝试过你的方法重新布线并拉低相应的LED灯,但没有效果。问题在于“t”的赋值。我注释掉了switch case/if-else-if部分,并尝试在串行监视器上打印该值,该值始终为0。我还将添加串行监视器的照片。是的,显示器是公共阴极,显示器实际上是一个4位显示器,每个数字有一个阴极,然后每个led段有一个阳极。但问题不在于显示器,而在于时间变量t,以及它返回的内容……我通过上述程序获得正确的输出。要查看更改,您必须等待一分钟,然后才能看到从0到1的更改。我试着用时间t=秒;每秒都有输出。是的,我这样做,它从0开始稳定地运行,显示器的分钟功能也很好,但我听说这个时间库时,我在想,它可以从你连接到我机箱中的Aptop的设备获取时间,并将其存储,例如,存储11:23我所在地区的时间,然后你可以继续做任何你想做的事情,如果从笔记本电脑获取当前时间是你的moto,那么这将是另一个问题。我也很乐意帮忙。问题解决后,请接受答案并投票表决。干杯。我试过你的方法,但没用。问题在于“t”的赋值。我注释掉了switch case/if-else-if部分,并尝试在串行监视器上打印该值,该值始终为0。我还将添加一张串行监视器的照片。
#include <Time.h>
#include <TimeLib.h>

int a  = 2;
int b  = 3;
int c  = 4;
int d  = 5;
int e  = 6;
int f  = 7;
int g  = 8;
int dp = 9;

void setup() {
    pinMode(led1,OUTPUT);
    pinMode(led2,OUTPUT);
    pinMode(led3,OUTPUT);
    pinMode(led4,OUTPUT);
    pinMode(led5,OUTPUT);
    pinMode(led6,OUTPUT);
    pinMode(led7,OUTPUT);
    pinMode(led8,OUTPUT);
}

void loop(){
    time_t t=minute();
    int digit1=t%10;


    if(digit1==0) {
        digitalWrite(a, HIGH);
        digitalWrite(b, HIGH);
        digitalWrite(c, HIGH);
        digitalWrite(d, HIGH);
        digitalWrite(e, HIGH);
        digitalWrite(f, HIGH);
        digitalWrite(g, LOW);
        digitalWrite(dp, LOW);   
    }

    else if(digit1==1) {
        digitalWrite(a, LOW);
        digitalWrite(b, HIGH);
        digitalWrite(c, HIGH);
        digitalWrite(d, LOW);
        digitalWrite(e, LOW);
        digitalWrite(f, LOW);
        digitalWrite(g, LOW);
        digitalWrite(dp, LOW);   
    }

    else if(digit1==2) {
        digitalWrite(a, HIGH);
        digitalWrite(b, HIGH);
        digitalWrite(c, LOW);
        digitalWrite(d, HIGH);
        digitalWrite(e, HIGH);
        digitalWrite(f, LOW);
        digitalWrite(g, HIGH);
        digitalWrite(dp, LOW);   
    }

    else if(digit1==3) {
        digitalWrite(a, HIGH);
        digitalWrite(b, HIGH);
        digitalWrite(c, HIGH);
        digitalWrite(d, HIGH);
        digitalWrite(e, LOW);
        digitalWrite(f, LOW);
        digitalWrite(g, HIGH);
        digitalWrite(dp, LOW);   
    }

    else if(digit1==4) {
        digitalWrite(a, LOW);
        digitalWrite(b, HIGH);
        digitalWrite(c, HIGH);
        digitalWrite(d, LOW);
        digitalWrite(e, LOW);
        digitalWrite(f, HIGH);
        digitalWrite(g, HIGH);
        digitalWrite(dp, LOW);   
    }

    else if(digit1==5) {
        digitalWrite(a, HIGH);
        digitalWrite(b, LOW);
        digitalWrite(c, HIGH);
        digitalWrite(d, HIGH);
        digitalWrite(e, LOW);
        digitalWrite(f, HIGH);
        digitalWrite(g, HIGH);
        digitalWrite(dp, LOW);   
    }

    else if(digit1==6) {
        digitalWrite(a, LOW);
        digitalWrite(b, LOW);
        digitalWrite(c, HIGH);
        digitalWrite(d, HIGH);
        digitalWrite(e, HIGH);
        digitalWrite(f, HIGH);
        digitalWrite(g, HIGH);
        digitalWrite(dp, LOW);   
    }

    else if(digit1==7) {
        digitalWrite(a, HIGH);
        digitalWrite(b, HIGH);
        digitalWrite(c, HIGH);
        digitalWrite(d, LOW);
        digitalWrite(e, LOW);
        digitalWrite(f, LOW);
        digitalWrite(g, LOW);
        digitalWrite(dp, LOW);   
    }

    else if(digit1==8) {
        digitalWrite(a, HIGH);
        digitalWrite(b, HIGH);
        digitalWrite(c, HIGH);
        digitalWrite(d, HIGH);
        digitalWrite(e, HIGH);
        digitalWrite(f, HIGH);
        digitalWrite(g, HIGH);
        digitalWrite(dp, LOW);   
    }

    else if(digit1==9) {
        digitalWrite(a, HIGH);
        digitalWrite(b, HIGH);
        digitalWrite(c, HIGH);
        digitalWrite(d, HIGH);
        digitalWrite(e, LOW);
        digitalWrite(f, HIGH);
        digitalWrite(g, HIGH);
        digitalWrite(dp, LOW);   
    }
}