2017-09-18 5 views
0

안녕하세요. 그래서 저는 arduino를 사용하여 cytron MD-10 모터 드라이버 방패로 모터 극성을 제어했으며 작동 시켰습니다. 그런 다음 다시 작동 할 때 디지털 읽기 핀이 높은 전압과 낮은 전압을 구별하지 못하는 것처럼 보였고 하나의 표시등이 계속 켜져있는 것처럼 보였습니다. 출력은 측정 된 4.84 볼트의 연속 공급으로 설정된 상태로 기능 한 다음 스위치가 닫히면 전압이 0으로 떨어지고 해당 루프를 입력해야합니다. 내 보드 튀김인가요? 내가 해봐야 할게 뭐야?arduino 디지털 읽기가 작동하지 않습니다.

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

이 아마 false를 돌려 LOWinSwitch 비교 :

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

스몰 올바르게 괄호의 잘못된 배치 등의 문제를 확인했다. digitalRead은 int를 기대하기 때문에, false는 0으로 변환됩니다. 그래서 핀 0을 읽습니다. 핀 0이 없다고 생각합니다. 따라서 오류가 발생할 수 있습니다. 그런 다음 반환 값은 암시 적으로 0과 비교되어 if 문에서 어떤 분기를 수행할지 결정합니다.

올바른 문은 다음과 같습니다

if (digitalRead(inSwitch) == LOW) 

(.. 난 그냥 더 자세한 대답을 제공하기 위해 노력하고 있기 때문에 커뮤니티 위키 내가 다른 사람의 관찰 담당자를 얻으려고 노력하고 있지 않다)

+1

단지 설명을 위해서 : Arduino에는 핀 0이있다. 그리고 잘못된 핀을 읽으면 0을 반환합니다. if (port == NOT_A_PIN) LOW를 반환합니다. – KIIV

0

analogWrite (pinPWM, HIGH)는 무엇입니까? 심지어 의미? 값 (0-255)이 누락되면 HIGH가 유효한 값이 아닙니다.

관련 문제