シリアル (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を使用しています。