我一直使用我的Arduino来控制电机极性与赛创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);
}
}发布于 2017-09-19 02:44:16
Sma正确地将问题识别为括号的位置错误:
if (digitalRead(inSwitch == LOW)) // OOPS!它将inSwitch与LOW进行比较,后者可能返回false。由于digitalRead需要一个整数,因此将false转换为0。所以你要读取引脚0。我不认为有引脚0,所以你可能会得到一个错误。然后将该返回值隐式地与0进行比较,以确定采用if语句的哪个分支。
正确的语句应如下所示:
if (digitalRead(inSwitch) == LOW)(社区维基,因为我只是想提供一个更详细的答案。我并不是想为别人的观察争取代表。)
发布于 2017-09-20 02:50:10
analogWrite(pinPWM,HIGH);到底是什么意思?缺少值(0-255),高不是有效值。
https://stackoverflow.com/questions/46280363
复制相似问题