PythonからArduinoにシリアルで文字列を送る場合、pyserialを使って、こんな感じで書くと思います。
import serial
ser = serial.Serial()
ser.baudrate = 9600
ser.port = 2 # COM3->2,COM5->4
ser.open()
ser.write("Hello")
ser.portはUSBを抜き差しするたびに変わるので、Arduino IDEでポートを確認し、Macの場合はser.port = "/dev/tty.usbmodem1451"
、WindowsだとCOM3に刺さってる場合、ser.port = 2
と書くわけですが、抜き差しするたびに変わって面倒ということで、こういう書き方も用意されてます。
import serial
import serial.tools.list_ports
ser = serial.Serial()
ser.baudrate = 9600
ser.port = list(serial.tools.list_ports.comports())[0][0]
ser.open()
ser.write("Hello")
この書き方、環境によっては失敗するみたいで、Macなら/dev配下を適当に探せば見つかるだろうと、こういう書き方を試してみたら、ちゃんと動きました。
ser = serial.Serial()
ser.baudrate = 9600
for file in os.listdir('/dev'):
if "tty.usbmodem" in file:
ser.port = '/dev/'+file
ser.open()
Windowsの場合、数字で指定されるので、こんな書き方でもいいですね。
ser = serial.Serial()
ser.baudrate = 9600
for i in range(100):
try:
ser.port = i
ser.open()
break
except:
i = i