Arduino中的PIN = 0不会触发电机

时间:2017-09-05 03:44:14

标签: c arduino arduino-uno atmega

我正在尝试使用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);
  }
}

1 个答案:

答案 0 :(得分:5)

==的优先级高于&。您需要将前两个术语放在括号中。

你的意思是:

if((PIND &_BV(PD6))==0)

但编译器看到的是:

if(PIND & (_BV(PD6)==0))