Python Arduino Command API adalah perpustakaan Python ringan untuk berkomunikasi dengan papan mikrokontroler Arduino dari komputer yang terhubung menggunakan IO serial standar, baik di atas kawat fisik atau secara nirkabel. Itu ditulis menggunakan protokol khusus, mirip dengan firmata.
Hal ini memungkinkan pengguna untuk dengan cepat program Protoype untuk Arduino menggunakan kode Python, atau hanya membaca/mengontrol/memecahkan masalah/bereksperimen dengan Harware yang terhubung ke papan Arduino tanpa harus mengkompilasi ulang dan memuat ulang sketsa ke papan itu sendiri.
Metode Nama dalam API Perintah Python Arduino dirancang untuk sedekat mungkin dengan mitra bahasa pemrograman Arduino mereka
#!/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 )
Entah jalankan pip install arduino-python
dari baris perintah, atau jalankan python setup.py build install
dari direktori sumber untuk menginstal perpustakaan ini.
setup()
(baris 348) di prototype.ino
. Ubah di sana jika perlu.prototype.ino
ke papan Arduino Anda, menggunakan IDE Arduino.from Arduino import Arduino
ke dalam skrip Python Anda untuk berkomunikasi dengan Arduino Anda Untuk kumpulan contoh, lihat examples.py
. File ini berisi metode yang mereplikasi fungsionalitas banyak sketsa demo Arduino.
Direktori tests
berisi beberapa tes dasar untuk perpustakaan. Cakupan kode ekstensif agak sulit diharapkan untuk setiap rilis, karena tes positif melibatkan benar -benar menghubungkan dan mengeluarkan perintah ke Arduino langsung, hosting perangkat keras apa pun yang diperlukan untuk menguji fungsi tertentu. Tetapi inti dari tes komunikasi dasar setidaknya harus dipertahankan di sini dan digunakan sebelum bergabung ke cabang master
.
Setelah instalasi, tes interaktif dapat dijalankan dari direktori sumber:
$ python tests/test_main.py
Tes otomatis dapat dijalankan dari direktori sumber dengan:
$ python tests/test_arduino.py
Arduino(baud)
- Mengatur komunikasi dengan Arduino yang saat ini terhubung dan bertenaga. board = Arduino ( "9600" ) #Example
Nama perangkat / port COM dari Arduino yang terhubung akan terdeteksi secara otomatis. Jika ada lebih dari satu papan Arduino yang terhubung, port COM yang diinginkan juga dapat dilewati sebagai argumen opsional:
board = Arduino ( "9600" , port = "COM3" ) #Windows example
board = Arduino ( "9600" , port = "/dev/tty.usbmodemfa141" ) #OSX example
Time-out untuk membaca dari Arduino juga dapat ditentukan sebagai argumen opsional:
board = Arduino ( "9600" , timeout = 2 ) #Serial reading functions will
#wait for no more than 2 seconds
I/O Digital
Arduino.digitalWrite(pin_number, state)
menghidupkan/mematikan digital pinArduino.digitalRead(pin_number)
Baca status pin digital #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)
Setel pin I/O ModeArduino.pulseIn(pin_number, state)
mengukur pulsaArduino.pulseIn_set(pin_number, state)
mengukur pulsa, dengan prakondisi #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
Analog I/o
Arduino.analogRead(pin_number)
Mengembalikan nilai analogArduino.analogWrite(pin_number, value)
menetapkan nilai analog #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
Register shift
Arduino.shiftIn(dataPin, clockPin, bitOrder)
menggeser byte dan mengembalikannyaArduino.shiftOut(dataPin, clockPin, bitOrder, value)
Geser byte yang diberikan bitOrder
harus menjadi "MSBFIRST"
atau "LSBFIRST"
Dukungan fungsionalitas perpustakaan servo disertakan hingga 8 servos.
Arduino.Servos.attach(pin, min=544, max=2400)
Buat instance servo. Hanya 8 servos yang dapat digunakan sekaligus.Arduino.Servos.read(pin)
mengembalikan sudut servo yang terpasang pada pin yang ditentukanArduino.Servos.write(pin, angle)
Pindahkan servo yang terpasang pada pin ke sudut yang ditentukanArduino.Servos.writeMicroseconds(pin, uS)
Tulis nilai dalam mikrodetik ke servo pada pin yang ditentukanArduino.Servos.detach(pin)
melepaskan servo pada pin yang ditentukan #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
Fungsi serial perangkat lunak
Arduino.SoftwareSerial.begin(ss_rxPin, ss_txPin, ss_device_baud)
menginisialisasi perangkat serial perangkat lunak pada pin tertentu. Hanya satu perangkat serial sofware yang dapat digunakan sekaligus. Instance Serial Perangkat Lunak yang ada akan ditimpa dengan memanggil metode ini, baik dalam Python maupun di papan Arduino.Arduino.SoftwareSerial.write(data)
mengirim data menggunakan fungsi arduino 'tulis' ke koneksi serial perangkat lunak yang ada.Arduino.SoftwareSerial.read()
mengembalikan satu byte dari koneksi serial perangkat lunak yang ada #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)
membaca byte dari eepromArduino.EEPROM.write(address, value)
menulis byte ke EEPROMArduino.EEPROM.size()
Mengembalikan ukuran 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 ()))
Misc
Arduino.close()
menutup koneksi serial ke Arduino. print()
dan println()
)Wire.h
)Serial1.read()
, dll)