【发布时间】:2015-06-16 03:55:20
【问题描述】:
我是使用 Arduino 的初学者,我正在尝试使用 LED 进行二进制计数。
我的代码是:
int ledPins[] = {2,3,4,5,6,7,8,9};
{
int delaytime = 500;
int x;
int mod;
int index;
int remain;
for (x=0; x<512; x++)
{
if(x%2 == 1)
{
digitalWrite(2,HIGH);
}
else
{
digitalWrite(2,LOW);
}
for (index=1, mod=4, remain=1; index<8; index++, mod*=2, remain+=4)
{
if(x%mod>remain)
{
digitalWrite(ledPins[index],HIGH);
}
else {
digitalWrite(ledPins[index], LOW);
}
}
delay(delaytime);
}
}
我希望 LED 在 x%mod> 保留时打开。 (例如 7%4>1,因此 LED 3 将亮起)
请有人帮帮我。非常感谢。
【问题讨论】:
-
我怎样才能让他们做我想让他们做的事?我希望 mod 乘以 2 并保持增加 4
-
@GregHewgill 谢谢。我认为这会起作用,但由于某种原因,现在第一个 LED 保持亮起,然后其他几个 LED 稍后亮起。即使我将代码恢复原状,现在也会发生这种情况。
-
好吧,您可能需要查看确定哪些 LED 应该点亮的算法。我不太确定您的
x%mod>remain条件实际上应该检查什么,但它似乎并没有进行位提取。我会使用&和<<等运算符重写该循环(搜索“以二进制形式打印数字”或类似内容以获取更多详细信息)。 -
@GregHewgill 伙计,我一定累了。我把所有的支票都弄乱了。我想修改数字,如果它大于数字,则 LED 亮起(例如 6%4=2、2>1,因此 LED 1 将亮起)。我用 >> 来检查,现在它们都亮了,前 4 个 LED 似乎以某种毫无意义的模式闪烁。
标签: c binary arduino counter led