我正在尝试使用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);
}
}
答案 0 :(得分:5)
==
的优先级高于&
。您需要将前两个术语放在括号中。
你的意思是:
if((PIND &_BV(PD6))==0)
但编译器看到的是:
if(PIND & (_BV(PD6)==0))