PythonとArduino ( windows版 )
2015/12/04
PythonとArduinoでのデータのやりとり
OS:windows7(32bit) Arduino1.0.5 Python2.7.6
基本的にはシリアル通信でデータをやりとりする為PySerialをダウンロード、インストールしておく。
1.Python → Arduino
Arduino側
byte val=0; int led = 13; void setup() { pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { if(Serial.available() > 0){ val = Serial.read(); Serial.println(val); if(val == 'a'){ digitalWrite(led,HIGH); delay(1000); } else if(val == 'b') { digitalWrite(led,LOW); delay(1000); } } }
Python側
import serial
ser = serial.Serial(2, 9600,timeout=5)
print ser.portstr
ser.write(‘ababababa’)
ser = serial.Serial(2, 9600,timeout=5)
print ser.portstr
ser.write(‘ababababa’)
ser = serial.Serial(2← ここでポートの設定をする。0から数えるので、たとえばArduinoがCOM3のとき、2とする。多分。
>>>ser.write(‘a’) で点灯
>>>ser.write(‘b’) で消灯
2.Arduino → Python
Arduinoのアナログピンで読んだデータを送る。今回はテスト用に手元にあったLM35と、100kΩの可変抵抗器+51kΩの抵抗器を試用。
結線の様子
Python側
import serial
ser = serial.Serial(2, 9600,timeout=5)
print ser.portstr
while True:
print ser.readline()
ser = serial.Serial(2, 9600,timeout=5)
print ser.portstr
while True:
print ser.readline()
Arduino側
void setup() { Serial.begin(9600); } void loop() { int x = analogRead(0); int tmp = analogRead(1); int temperature = (tmp* 500 / 1024 ); Serial.print(x); Serial.print(","); Serial.println(temperature); delay(1000); }
こんな感じで表示されます。
参考にさせて頂いたページ
http://hsh.s2jp.com/2011/09/arduino-voltmeter/