2014-07-07 2 views
0

나는 새로운 프로그래밍이다. 부울에 정수 항상 1을 준다

나는 아두 이노 부울하는 정수를 변환 할 노력하고 있어요,하지만 난 항상 1 이 제발 도와 얻을 :

///////////////////////////////// 
boolean booleanValue; 
int val; 


void setup() { 
Serial.begin(9600);// connect to the serial port 
} 

void loop() { 
    if (Serial.available()) { 
    val = Serial.read();//// read the serial port 
     boolean booleanValue = !!val; 


    Serial.println(booleanValue); 
    } 

} 
+0

'val'이 0이면 1을 얻지 않아야합니다. –

+0

안녕하세요! 에 오신 것을 환영합니다. 꽤 좋은 질문이 있다고 생각하지만, 문제를 일으키기 위해 무엇을하고 있는지 정확히 알면 도움이 될 것입니다. 정확히 입력 한 내용은 무엇입니까? 정확히 "1"을 보여주는 라인은 무엇입니까? 이전 단계가 효과가 있다는 것을 어떻게 확인 했습니까? –

답변

1

당신은 Serial.parseInt() 대신 Serial.read()을 사용해야합니다.

Serial.read()은 문자 "0"에 대한 입력 바이트의 16 진수 30에 대한 비트 패턴을 반환합니다. 입력이 0 바이트가 아닌 숫자, 문자 등이 아닌 경우 0을 반환합니다.

또는 입력이 정확히 0x30인지 확인하고이를 false로 처리하고 다른 모든 입력을 true로 처리 할 수 ​​있습니다.

의심되는 코드를 격리하고 정확히 입력 된 코드를 알고 있어야합니다. 이 경우, 읽은 후 바로 Serial.println(val,HEX);을 삽입하면 변환이 아니라 읽는 방법에 문제가 있다고 말할 수 있습니다.

관련 문제