2013-10-20 3 views
1

내가 아두 이노을 처리에서 샤아를 보내려고하고 있지만, 아두 이노는 그 중 2를 인식하고, 문제가 '2'문자 함께처리 아두 이노 연결 어려움

나는 's'를 누르면 열쇠는 arduino rx led 조명을 볼 수 있기 때문에 처리 코드가 '2'문자를 보내고 있지만 모터는 아무것도하지 않습니다.

'1'또는 '0'문자를 사용하면 문제가 없습니다. ' 2 'arduino 코드에서 drive_forward 및 drive_reverse 해당하는 있지만'2 'char 할당 된 한 ca에서 작동하지 않았다 ca SES, 나는 '1'and가'0 '문자가 전송되고 난는 아두 이노 코드에 뭔가 것 같아요,하지만 난 어떤

아두 이노 코드 모르는

잘 받았습니다 말했듯이 :

int motor1 = 4; 
int motor2 = 5; 
char val; 

// --------------------------------------------------------------- Setup 
void setup() { 
Serial.begin(9600); 

// Setup motors 

pinMode(motor1, OUTPUT); 
pinMode(motor2, OUTPUT); 

} 


// ---------------------------------------------------------------- Loop 
void loop() { 
    if (Serial.available()>0) 
    { // If data is available to read, 
    val = Serial.read(); // read it and store it in val 
    } 
    if (val == '2'){ 
     drive_forward(); 
     } 
    if (val == '1'){ 
     drive_reverse(); 
        } 
    if (val == '0'){ 
    motor_stop(); 

        } 

} 

// --------------------------------------------------------------------------- Drive 

void motor_stop(){ 

digitalWrite(motor1, LOW); 
digitalWrite(motor2, LOW); 


} 
void drive_forward(){ 

digitalWrite(motor1, HIGH); 
digitalWrite(motor2, LOW); 
delay(15); 
digitalWrite(motor1, LOW); 
digitalWrite(motor2, LOW); 
delay(15); 


} 
void drive_reverse(){ 

digitalWrite(motor2, HIGH); 
digitalWrite(motor1, LOW); 
delay(15); 
digitalWrite(motor2, LOW); 
digitalWrite(motor1, LOW); 
delay(15); 


} 

처리 코드 :

import processing.serial.*; 

Serial myPort; 


void setup() 
{ 
    size(200,200); 
    myPort = new Serial(this, Serial.list()[2], 9600); 


} 
void draw() { 





    } 
void keyPressed() { 
    if (key == 'w' || key == 'W') 
    { 
     myPort.write('1'); 
    println("1");} 
     if (key == 's' || key == 'S') 
    { 
     myPort.write('2'); 
    println("2");} 
} 
void keyReleased() { 
myPort.write('0'); 
println("0"); 

}

+0

,하지만 당신은 '0'에 발을 초기화해야한다. – struthersneil

+2

Arduino 시리얼 모니터를 사용 하시겠습니까? – ladislas

+0

하나의 프로그램 만이 COM 포트를 사용할 수 있습니다. 직렬 모니터를 사용하면 처리 프로그램을 arduino에 연결하여 수신하는 것을 정확히 알 수 없으므로 RX 링크가 켜지는 것을 볼 수 있습니다. 처리에서 '2'문자를 보내려고 할 때 –

답변

1

@tailedmouse 상기 된 바와 같이, (S) 정수로 끝나는 데이터.

처리 코드 :

//skipped some code 
void keyPressed() { 
    if (key == 'w' || key == 'W') { 
     myPort.write(1); 
    } 

    if (key == 's' || key == 'S') { 
     myPort.write(2); 
     println("2"); 
    } 
} 

void keyReleased() { 
    myPort.write(0); 
    println("0"); 
} 

아두 이노 코드 : 문제가 될 가능성

//skipped some code. 
void loop() { 
    if (Serial.available()>0) { 
     // If data is available to 
     read, val = Serial.read(); 
     // read it and store it in val 
    } 

    if (val == 2) { 
     drive_forward(); 
    } 

    if (val == '1') { 
     drive_reverse(); 
    } 

    if (val == '0') { 
     motor_stop(); 
    } 
}