-1

シリアル (pySerial) 経由で arduino からデータを取得しています。次に、区切り文字 (:) によって 3 つの値に分割されます。スライス ([0:5]) を使用して余分な 2 文字 (改行だと思います) を削除しています。

ここまでは順調ですね。しかし、rjust や zfill 、さらには format() でさえも正しく動作しません。たとえば、zfill(5) を使用し、arduino の出力値が 8.00 の場合、変更はなく、3 文字になります。zfill(7) を使用すると機能し、合計 7 文字になります。

何が起こっている?

Arduino はこれを ~1 秒ごとに出力しています: 22.00:36.00:58.00

import time
import serial

connected = False

port = '/dev/ttyACM0'
baud = 9600

ser = serial.Serial(port, baud)

# loop until arduino is ready
while not connected:
    serin = ser.read()
    connected = True

# read aruino output
while ser.readline():
    readings = ser.readline().split(':', 2)

    lum = readings[2][0:5].rjust(5, '0')
    #lum = readings[2][0:5].zfill(5) same result as with rjust

    print(lum)
    time.sleep(1)

IDLEを備えたRasberian OSをPythonエディターとして実行しているRaspberry Piに接続されたArduino Unoを使用しています。

4

1 に答える 1