请高手帮忙看看这段代码问题在哪里
for(int i=0; i < steps; i++){int n =digitalRead(8);
if (n==LOW)
break;
n =digitalRead(9);
if (n==LOW)
break;
n =digitalRead(9);
if (n==LOW)
break;
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);我需要检测数字端口8,9,10 只要其中一个为LOW 就跳出循环 不执行STEP_PIN的HIGH LOW动作 但是实际情况是STEP_PIN还是会动作 只是他动作的不规律 有时会动作 有时不会 第8行的端口号错了,在每个读取端口值之后加上20的延迟试试 而且加了检测这三个检测代码以后 steps的数值明明有几万 但是他只循环了没几次 去掉检测代码就相安无事了 我说 break会不会只是退出if啊 if (digitalRead(8) == Low|| digitalRead(9) == LOW || digitalRead(10) == LOW) {
}
一句判断的事情,非要搞那么复杂。。 zcbzjx 发表于 2012-11-19 22:24 static/image/common/back.gif
if (digitalRead(8) == Low|| digitalRead(9) == LOW || digitalRead(10) == LOW) {
}
这段代码受教了,但是加了检测以后会丢步咋回事 大家提问题最好说下试验环境啊。比如什么设备,ide版本,有没有用什么库,光这个咋个看啊。
我估计是8 9 10 没加上拉电阻的事。 不好意思 我补充一下IDE是1.0.1的 检测的8,9,10口是TB上买的感应式接近开关 没有加上下拉电阻 没有用库 改成中断不知道行不行 重来没用过中断代码 :dizzy: 就是没加上拉电阻的问题,这个必须要上拉电阻的。。 端口模式设置没有? 端口模式是设置了 INPUT 咋个还没解决,上拉就行了吧。。
页:
[1]