首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么digitalWrite(a,低);不工作在7段发光二极管?

为什么digitalWrite(a,低);不工作在7段发光二极管?
EN

Stack Overflow用户
提问于 2022-03-28 14:08:04
回答 1查看 223关注 0票数 1
代码语言:javascript
复制
int a = 3;
int b = 4;
int c = 7;
int d = 6;
int e = 5;
int f = 2;
int g = 1;
void setup(){
pinMode(a,OUTPUT);
pinMode(b,OUTPUT);
pinMode(c,OUTPUT);
pinMode(d,OUTPUT);
pinMode(e,OUTPUT);
pinMode(f,OUTPUT);
pinMode(g,OUTPUT);
}
void loop(){
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(g, LOW);
digitalWrite(e, LOW);
delay(1000);
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(g, HIGH);
digitalWrite(e, HIGH);
}

我用的是7段LED。基本上,我想用1秒间隔来显示数字1-5,但是似乎digitalWrite低不起作用。它并没有停止输出。

EN

回答 1

Stack Overflow用户

发布于 2022-06-04 21:54:13

当Arduino到达loop()的末尾时,它立即再次调用loop()。两次通话之间没有任何延误。因此,第一组digitalWrite()的值将很快覆盖第二组的值。您将只能看到显示上的第一个值。如果你想看到第二组,你应该在它后面放一个delay(1000)

要用1秒间隔显示数字1-5,您可以编写如下内容:

代码语言:javascript
复制
int a = 3;
int b = 4;
int c = 7;
int d = 6;
int e = 5;
int f = 2;
int g = 1;

void setup()
{
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);
}

void loop()
{
  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, LOW);

  delay(1000);

  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, LOW);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);

  delay(1000);

  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, LOW);
  digitalWrite(g, HIGH);

  delay(1000);

  digitalWrite(a, LOW);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, LOW);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);

  delay(1000);

  digitalWrite(a, HIGH);
  digitalWrite(b, LOW);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, LOW);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);

  delay(1000);
}

下面的代码是一种更有效的方法来做同样的事情:

代码语言:javascript
复制
int a = 3;
int b = 4;
int c = 7;
int d = 6;
int e = 5;
int f = 2;
int g = 1;

void display(bool a_val, bool b_val, bool c_val, bool d_val, bool e_val, bool f_val, bool g_val)
{
  digitalWrite(a, a_val);
  digitalWrite(b, b_val);
  digitalWrite(c, c_val);
  digitalWrite(d, d_val);
  digitalWrite(e, e_val);
  digitalWrite(f, f_val);
  digitalWrite(g, g_val);
  delay(1000);
}

void setup()
{
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);
}

void loop()
{
  display(LOW,  HIGH, HIGH, LOW,  LOW,  LOW,  LOW);
  display(HIGH, HIGH, LOW,  HIGH, HIGH, LOW,  HIGH);
  display(HIGH, HIGH, HIGH, HIGH, LOW,  LOW,  HIGH);
  display(LOW,  HIGH, HIGH, LOW,  LOW,  HIGH, HIGH);
  display(HIGH, LOW,  HIGH, HIGH, LOW,  HIGH, HIGH);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71648810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档