我正在尝试使用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/

10-09 01:59