arduino数字阅读不工作

时间:2017-09-18 13:19:42

标签: arduino arduino-uno plc

你好,所以我一直用我的arduino用cytron MD-10电机驱动器屏蔽来控制电机极性,我让它工作了。然后,当我回来工作时,似乎数字读取引脚没有区分高电压和低电压,其中一个灯持续通电。输出功能设置为连续供应的测量值为4.84伏,然后开关闭合,电压降至0并进入相应的环路。我的董事会炒了吗?我应该尝试什么?

const int outSwitch = 13;
const int inSwitch = 12;
const int pinPWM = 3;
const int pinDir = 2;
int lightOne = 11;
int lightTwo= 10;
static int Dir = 1;
static int cycleCounter = 0;

void setup() {
  // Set Pin Out/Inputs:
  pinMode(pinPWM, OUTPUT);
  pinMode(pinDir, OUTPUT);
  pinMode(outSwitch, INPUT);
  pinMode(inSwitch, INPUT);
  pinMode(lightOne, OUTPUT);
  pinMode(lightTwo, OUTPUT);
  analogWrite(pinPWM, LOW);
}

void loop() {

  // Both Read a low input value from the switch and then makes
  //direction the opposite causing it to travel backwards:
  if(digitalRead(inSwitch == LOW)){
    analogWrite(pinPWM, HIGH);
    digitalWrite(pinDir,Dir);
    digitalWrite(lightOne, LOW);
    digitalWrite(lightTwo, HIGH);
  }

  else if(digitalRead(outSwitch == LOW)){
    analogWrite(pinPWM, HIGH);
    digitalWrite(pinDir, -Dir);
    digitalWrite(lightOne, LOW);
    digitalWrite(lightTwo, HIGH);
  }
}

2 个答案:

答案 0 :(得分:0)

Sma正确地将问题确定为括号错位:

if (digitalRead(inSwitch == LOW))  // OOPS!

inSwitchLOW进行比较,可能会返回false。由于digitalRead需要int,因此将false转换为0.因此,您读取引脚0.我认为没有引脚0,因此您可能会收到错误。然后将该返回值隐式地与0进行比较,以确定要采用if语句的哪个分支。

正确的陈述如下:

if (digitalRead(inSwitch) == LOW)

(社区维基因为我只是想提供一个更详细的答案。我不是想让别人的观察得到代表。)

答案 1 :(得分:0)

analogWrite是什么(pinPWM,HIGH);甚至意味着?缺少值(0-255),HIGH不是有效值。