9

よし、私のArduino回路とそのコードは正しいと確信している。これは、Arduino IDE に組み込まれているシリアル モニタを使用して、'H' を送信すると LED が点灯し、'L' を送信すると LED がオフになるためです。

今、私はPythonプログラムを作りました

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

コードを実行すると、LED が 1 秒間点滅してから消えます。ただし、シェルでこれらの各行を個別に実行すると、想定どおりに機能します。

何か案は?

4

4 に答える 4

8

シリアルポートを開くと、Arduinoがリセットされます。Arduinoは起動に時間がかかるため、すべての入力はビットバケットに送られます(または、神がそれを使って何を知っているかを知るブートローダーに送られます)。スリープを挿入すると、Arduinoが起動するのを待ってシリアルコードを表示します。これがインタラクティブに機能する理由です。ソフトウェアが起動するのに必要な1.5秒待っていました。

シリアルポートを開くとArduinoUnoがリセットされることを確認しまし; ルーチンからLEDを点滅させるプログラムをフラッシュしましたsetup()-リセットをトリガーするには呼び出しopen("/dev/ttyACM0")で十分でした。これは私見ですが、シリアルサポートの紛らわしく文書化されていないしわです。

于 2011-02-09T06:16:15.457 に答える
6

私は同じ問題を抱えていましたが、シリアル接続を開いてから書き込みまで約2秒の遅延を追加すると機能します.1秒では不十分でした.

于 2010-07-17T19:39:27.593 に答える
1

もう少し明確にするために、コードを変更して、何を追加する必要があるかを誰もが確認できるようにします。

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

スリープ ステートメントを追加すると、シリアルを問題なく開くことができます。

于 2013-08-23T18:56:49.850 に答える