2009-10-24 3 views
9

좋습니다. 따라서 Arduino 회로가 정확하고 코드가 올바른 것입니다. 나는 이것을 알기 때문에 Arduino IDE에 내장 된 시리얼 모니터를 사용하고 'H'LED가 켜지면 'L'을 보내면 LED가 꺼지기 때문이다. 나는 초 동안 LED가 깜박 코드를 실행하면 Arduino의 Pyserial 문제 - Python 셸에서 작동하지만 프로그램에서는 작동하지 않습니다.

는 지금은 다시 꺼집니다 파이썬 프로그램

import serial 
ser = serial.Serial("COM4",9600) 
ser.write("H") 

했다. 그러나 쉘에서이 라인들을 각각 따로 따로 처리 할 때와 똑같이 작동합니다.

아이디어가 있으십니까?

+0

가비지 수집되는 직렬 객체와 관련 될 수 있습니까? – Autoplectic

답변

5

나는 똑같은 문제가 있었는데 직렬 연결을 여는 것에서 약 2 초 지연을 추가하면 작동하는데 1 초가 충분하지 않았습니다.

+0

쓰기 전에 2 초가 지체되어이 문제가 해결되었습니다. – Phil

8

직렬 포트를 열면 Arduino가 재설정됩니다. Arduino는 부팅에 약간의 시간이 걸리므로 모든 입력은 bitbucket으로 이동합니다 (또는 아마도 bootloader로 이동하여 신이 그것을 알고 있음). 수면을 삽입하면 Arduino가 직렬 코드처럼 올 때까지 기다립니다. 이것이 대화식으로 작동하는 이유입니다. 당신은 소프트웨어가 올라 오는데 필요한 1.5 초를 기다리고있었습니다.

시리얼 포트를 열면 Arduino Uno가 재설정됨을 확인했습니다. 나는 setup() 루틴에서 LED를 깜박이는 프로그램을 번쩍 들었다. open("/dev/ttyACM0")으로 전화하면 리셋을 시작하기에 충분했다. 이것은 일련의 지원에서 혼란스럽고 문서화되지 않은 주름입니다.

+0

설명을 보려면 [Arduino Playground] (http://playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection)을 참조하십시오. –

1

코드를 수정하여 모든 사람들이 무엇이 추가되어야하는지 알 수 있도록합니다.

import serial 
import time 
ser = serial.Serial("COM4",9600) 
time.sleep(3) 
ser.write("H") 

수면 상태를 추가하면 일련 번호가 문제없이 열리도록하는 데 도움이됩니다.

관련 문제