我正在尝试使用if语句在Arduino Uno板上使用C来控制电机。但是,当我设置为当传感器的PIN等于0时,电动机将运行,它根本不工作。我还尝试将PIN设置为不等于0和1,两者都可以正常工作。你们能给我一张支票吗?非常感谢你。
int MotorL=11;
int DirectionR=12;
int MotorR=10;
int DirectionL=13;
int SensorM=0;
#include <avr/io.h>
#include <util/delay.h>
void setup() {
pinMode(DirectionL,OUTPUT);
pinMode(DirectionR,OUTPUT);
pinMode(SensorM,INPUT);
digitalWrite(DirectionL,HIGH);
digitalWrite(DirectionR,HIGH);
analogWrite(MotorL,0);
analogWrite(MotorR,0);
}
void loop() {
if(PIND &_BV(PD6)==0){ //General movement: forward
analogWrite(MotorL,84);
analogWrite(MotorR,97);
}else{
analogWrite(MotorL,0);
analogWrite(MotorR,0);
}
}
最佳答案
==
的优先级高于&
。您需要将前两个术语放在括号中。
您的意思是:
if((PIND &_BV(PD6))==0)
但是编译器看到的是:
if(PIND & (_BV(PD6)==0))
关于c - Arduino中的PIN = 0不会触发电机,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46046690/