Python ArduinoコマンドAPIは、物理ワイヤーまたはワイヤレスで標準のシリアルIOを使用して、接続されたコンピューターからArduinoマイクロコントローラーボードと通信するための軽量のPythonライブラリです。これは、Firmataに似たカスタムプロトコルを使用して書かれています。
これにより、ユーザーはPythonコードを使用してArduinoのプロトイププログラムをすばやくプロトイププログラムすることができます。また、Board自体にスケッチを再コンパイルしてリロードすることなく、Arduinoボードに接続されたHarwareを単に読み取り/制御/トラブルシューティング/実験することができます。
Python ArduinoコマンドAPI内のメソッド名は、Arduinoプログラミング言語の言語に可能な限り近くにあるように設計されています
#!/usr/bin/env python
"""
Blinks an LED on digital pin 13
in 1 second intervals
"""
from Arduino import Arduino
import time
board = Arduino ( '9600' ) #plugged in via USB, serial com at rate 9600
board . pinMode ( 13 , "OUTPUT" )
while True :
board . digitalWrite ( 13 , "LOW" )
time . sleep ( 1 )
board . digitalWrite ( 13 , "HIGH" )
time . sleep ( 1 )
pip install arduino-python
か、 python setup.py build install
ソースディレクトリからインストールして、このライブラリをインストールします。
prototype.ino
のsetup()
関数(行348)で指定されたボーレートで通信していることを確認します。必要に応じてそこに変更してください。prototype.ino
スケッチをロードします。from Arduino import Arduino
Arduinoと通信する例のコレクションについては、 examples.py
参照してください。このファイルには、多くのArduinoデモスケッチの機能を複製するメソッドが含まれています。
tests
ディレクトリには、ライブラリの基本的なテストが含まれています。肯定的なテストでは、特定の機能をテストするために必要なハードウェアをホストする肯定的なテストでは、肯定的なテストには実際にコマンドをライブArduinoに接続および発行することが含まれるため、広範なコードカバレッジを期待するのは少し困難です。ただし、基本的な通信テストのコアは、少なくともここで維持され、 master
ブランチに合流する前に使用する必要があります。
インストール後、インタラクティブテストはソースディレクトリから実行できます。
$ python tests/test_main.py
自動テストは、以下をソースディレクトリから実行できます。
$ python tests/test_arduino.py
Arduino(baud)
- 現在接続された搭載されたArduinoとの通信をセットアップします。 board = Arduino ( "9600" ) #Example
接続されたArduinoのデバイス名 / comポートは自動検出されます。複数のArduinoボードが接続されている場合、目的のCOMポートをオプションの引数として渡すこともできます。
board = Arduino ( "9600" , port = "COM3" ) #Windows example
board = Arduino ( "9600" , port = "/dev/tty.usbmodemfa141" ) #OSX example
Arduinoから読むためのタイムアウトは、オプションの引数として指定することもできます。
board = Arduino ( "9600" , timeout = 2 ) #Serial reading functions will
#wait for no more than 2 seconds
デジタルI/O
Arduino.digitalWrite(pin_number, state)
デジタルピンをオン/オフにしますArduino.digitalRead(pin_number)
デジタルピンの状態を読み取ります #Digital read / write example
board . digitalWrite ( 13 , "HIGH" ) #Set digital pin 13 voltage
state_1 = board . digitalRead ( 13 ) #Will return integer 1
board . digitalWrite ( 13 , "LOW" ) #Set digital pin 13 voltage
state_2 = board . digitalRead ( 13 ) #Will return integer 0
Arduino.pinMode(pin_number, io_mode)
Pin I/Oモードを設定しますArduino.pulseIn(pin_number, state)
パルスを測定しますArduino.pulseIn_set(pin_number, state)
、前提条件でパルスを測定します #Digital mode / pulse example
board . pinMode ( 7 , "INPUT" ) #Set digital pin 7 mode to INPUT
duration = board . pulseIn ( 7 , "HIGH" ) #Return pulse width measurement on pin 7
アナログI/O
Arduino.analogRead(pin_number)
アナログ値を返しますArduino.analogWrite(pin_number, value)
アナログ値を設定します #Analog I/O examples
val = board . analogRead ( 5 ) #Read value on analog pin 5 (integer 0 to 1023)
val = val / 4 # scale to 0 - 255
board . analogWrite ( 11 ) #Set analog value (PWM) based on analog measurement
シフトレジスタ
Arduino.shiftIn(dataPin, clockPin, bitOrder)
バイトをシフトして返しますArduino.shiftOut(dataPin, clockPin, bitOrder, value)
与えられたバイトをシフトしますbitOrder
"MSBFIRST"
または"LSBFIRST"
のいずれかでなければなりません
サーボライブラリの機能サポートは、最大8つのサーボに含まれています。
Arduino.Servos.attach(pin, min=544, max=2400)
サーボインスタンスを作成します。一度に使用できるのは8つのサーボのみです。Arduino.Servos.read(pin)
指定されたピンに取り付けられたサーボの角度を返しますArduino.Servos.write(pin, angle)
ピンに付着したサーボを指定された角度に移動するArduino.Servos.writeMicroseconds(pin, uS)
指定されたピンでサーボにマイクロ秒単位で値を書きますArduino.Servos.detach(pin)
指定されたピンでサーボを剥がします #Servo example
board . Servos . attach ( 9 ) #declare servo on pin 9
board . Servos . write ( 9 , 0 ) #move servo on pin 9 to 0 degrees
print board . Servos . read ( 9 ) # should be 0
board . Servos . detach ( 9 ) #free pin 9
ソフトウェアシリアル機能
Arduino.SoftwareSerial.begin(ss_rxPin, ss_txPin, ss_device_baud)
指定されたピンでソフトウェアシリアルデバイスを初期化します。一度に使用できるSofwareシリアルデバイスは1つだけです。既存のソフトウェアシリアルインスタンスは、PythonとArduinoボードの両方でこの方法を呼び出すことにより上書きされます。Arduino.SoftwareSerial.write(data)
arduino 'write'関数を使用して既存のソフトウェアシリアル接続にデータを送信します。Arduino.SoftwareSerial.read()
既存のソフトウェアシリアル接続から1つのバイトを返します #Software serial example
board . SoftwareSerial . begin ( 0 , 7 , "19200" ) # Start software serial for transmit only (tx on pin 7)
board . SoftwareSerial . write ( " test " ) #Send some data
response_char = board . SoftwareSerial . read () #read response character
Eeprom
Arduino.EEPROM.read(address)
eepromからバイトを読み取りますArduino.EEPROM.write(address, value)
eepromにバイトを書き込みますArduino.EEPROM.size()
eepromのサイズを返します #EEPROM read and write examples
location = 42
value = 10 # 0-255(byte)
board . EEPROM . write ( location , 10 )
print ( board . EEPROM . read ( location ))
print ( 'EEPROM size {size}' . format ( size = board . EEPROM . size ()))
その他
Arduino.close()
arduinoへのシリアル接続を閉じます。 print()
とprintln()
)を展開するWire.h
コマンド)を追加Serial1.read()
など)