2017-09-18 28 views
0

こんにちは、私はcytron MD-10モータードライバシールドでモータの極性を制御するためにarduinoを使用していました。その後、私が仕事に戻ったとき、デジタル読取りピンが高電圧と低電圧とを区別していないかのように見え、ライトの1つが連続的にオンになっていました。出力は測定された4.84ボルトの連続供給で設定されたように機能し、スイッチが閉じて電圧が0に下がり、対応するループに入るはずです。私のボードは揚げられていますか?私は何を試してみてください?arduinoデジタル読み取りが動作しない

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

これはおそらく、falseを返しLOW、へinSwitch比較:

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); 
    } 
} 
+3

'if'および' else if'条件では、角カッコが間違っています。 'if(digitalRead(inSwitch)== LOW)'と 'else if(digitalRead(outSwitch)== LOW)'である必要があります。 – Sma

答えて

0

SMAは正しく括弧の紛失などの問題を特定しました。 digitalReadはintを予期しているので、そのfalseは0に変換されます。したがって、ピン0の読み取りを行います。ピン0があるとは思わないので、おそらくエラーが発生します。その戻り値は、if文のどの枝を取るべきかを決定するために暗黙的に0と比較されます。

正しい文は次のようになります。

if (digitalRead(inSwitch) == LOW) 

(。。私はより詳細な答えを提供しようとしているので、コミュニティのWikiは、私は他の誰かの観察のために担当者を取得しようとしていないよ)

+1

Arduinoにピン0があります。無効なピンの読み取りは0を返す:if(port == NOT_A_PIN)がLOWを返す; – KIIV

0

analogWrite(pinPWM、HIGH)とは何ですか?さえ意味ですか?値がない(0-255)、HIGHは有効な値ではありません。

関連する問題