请专家帮我看看,这段代码
代码如下,2和3口为输出,接led。上机测试,8口高电平后,2口灯亮,但是8口变0后,2口等要过一会才熄灭。同样,如果8口低电平,9口高电平,会出现2和3同时亮着,会过8口才熄灭。不知道这是为什么void setup()
{
pinMode( 9 , INPUT);
pinMode( 8 , INPUT);
pinMode( 2 , OUTPUT);
pinMode( 3 , OUTPUT);
}
void loop()
{
if (digitalRead(8))
{
delay( 1000 );
digitalWrite( 2 , HIGH );
}
else
{
digitalWrite( 2 , LOW );
}
if (digitalRead(9))
{
delay( 1000 );
digitalWrite( 3 , HIGH );
}
else
{
digitalWrite( 3 , LOW );
}
} 可能是你的线路接成低电平LOW, 才点亮LED. 你用 if(digitalRead(9)==HIGH) 这样的语法试试。 由於你不斷進行 delay(1000), 有一至兩秒的延遲也是合理的.
把 delay(1000) 刪去再看看吧. 如果你想要做到8口高电平1秒后2口点亮,低电平后2口立即灭掉,
这样的代码逻辑是有问题的。
高电平和低电平是个持续状态,你的代码会不断停在某一个状态下,也就会不停delay(1000)。
你应该捕获从低电平转向高电平的瞬间来控制2口状态,
也就是说要保存上一次的状态,只有上一次状态是低电平,这一次状态是高电平才触发。
另外,如果是用按钮来控制的话要做抖动处理。
页:
[1]