你好,所以我一直用我的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);
}
}
答案 0 :(得分:0)
Sma正确地将问题确定为括号错位:
if (digitalRead(inSwitch == LOW)) // OOPS!
将inSwitch
与LOW
进行比较,可能会返回false。由于digitalRead
需要int,因此将false转换为0.因此,您读取引脚0.我认为没有引脚0,因此您可能会收到错误。然后将该返回值隐式地与0进行比较,以确定要采用if语句的哪个分支。
正确的陈述如下:
if (digitalRead(inSwitch) == LOW)
(社区维基因为我只是想提供一个更详细的答案。我不是想让别人的观察得到代表。)
答案 1 :(得分:0)
analogWrite是什么(pinPWM,HIGH);甚至意味着?缺少值(0-255),HIGH不是有效值。