別棟備忘録4

*

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← ここでポートの設定をする。0から数えるので、たとえばArduinoがCOM3のとき、2とする。多分。
>>>ser.write(‘a’) で点灯
>>>ser.write(‘b’) で消灯
2.Arduino → Python
Arduinoのアナログピンで読んだデータを送る。今回はテスト用に手元にあったLM35と、100kΩの可変抵抗器+51kΩの抵抗器を試用。
結線の様子
P1020903.jpg
PTA_ブレッドボード
Python側

import serial
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);
}

こんな感じで表示されます。
ArduinoToP.jpg
参考にさせて頂いたページ
http://hsh.s2jp.com/2011/09/arduino-voltmeter/

 - Python