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低不起作用。它并没有停止输出。
发布于 2022-06-04 21:54:13
当Arduino到达loop()的末尾时,它立即再次调用loop()。两次通话之间没有任何延误。因此,第一组digitalWrite()的值将很快覆盖第二组的值。您将只能看到显示上的第一个值。如果你想看到第二组,你应该在它后面放一个delay(1000)。
要用1秒间隔显示数字1-5,您可以编写如下内容:
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);
}下面的代码是一种更有效的方法来做同样的事情:
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);
}https://stackoverflow.com/questions/71648810
复制相似问题