2016-08-04 4 views
1

직렬 통신을 통해 arduino와 raspberry pi를 통신해야합니다. 그리고이 여기 내 아두 이노 코드Raspberry pi - arduino 시리얼 통신

int ledPinSpeedOne = 11; 
int ledPinSpeedTwo = 12; 
int ledPinSpeedThree = 13; 

char inbyte; 

void setup() { 

    Serial.begin(9600); 

    pinMode(ledPinSpeedOne, OUTPUT); 
    pinMode(ledPinSpeedTwo, OUTPUT); 
    pinMode(ledPinSpeedThree, OUTPUT); 

    digitalWrite(ledPinSpeedOne, LOW); 
    digitalWrite(ledPinSpeedTwo, LOW); 
    digitalWrite(ledPinSpeedThree, LOW); 
} 

void loop() 
{ 

    if (Serial.available() > 0) { 
    delay(100); 
    inbyte=Serial.read(); 
    if (inbyte == '3') functionSpeedTwo(); 
    } 
} 

//functionSpeedTwo 
void functionSpeedTwo() { 
    digitalWrite(ledPinSpeedOne, LOW); 
    digitalWrite(ledPinSpeedTwo, HIGH); 
    digitalWrite(ledPinSpeedThree, LOW); 
} 

입니다 그리고 .. 내가 양쪽에 동일한 전송 속도를 사용하고 있지만, 여전히 내가이 일을 할 수없는거야,

을 내가 라즈베리이 무엇인지되어 통신 할 수 파이 사이드,

#!/usr/bin/python 
import serial 
ser = serial.Serial('/dev/ttyACM0',9600) 
ser.write('3') 

가끔은 작동하지만 때로는 효과가 있습니다. 아무도 나를이 문제를 해결하는 데 도움이 될 수 있습니다.

+0

python 스크립트를 실행할 때 arduino가 재설정되는지 확인하십시오. 그렇다면 pyserial로 포트를 열기 전에 제어 라인 상태를 설정하십시오 – handle

+0

"제어 라인 상태"는 무엇을 의미합니까 ??? –

+0

스크립트를 실행할 때 Arduino가 재설정됩니까? – handle

답변

0

내 문제를 해결했습니다. 값에 액세스하는 데 시간 차이가 있었고 값을 얻기 위해 while 루프를 추가해야했습니다. 내 arduino 코드에서 24 번 줄에 지연을 추가했습니다.