Python Arduino Command API เป็นไลบรารี Python น้ำหนักเบาสำหรับการสื่อสารกับบอร์ดไมโครคอนโทรลเลอร์ Arduino จากคอมพิวเตอร์ที่เชื่อมต่อโดยใช้ Serial IO มาตรฐานไม่ว่าจะเป็นสายจริงหรือแบบไร้สาย มันถูกเขียนขึ้นโดยใช้โปรโตคอลที่กำหนดเองคล้ายกับ Firmata
สิ่งนี้ช่วยให้ผู้ใช้สามารถโปรแกรม protoype สำหรับ Arduino ได้อย่างรวดเร็วโดยใช้รหัส Python หรือเพียงแค่อ่าน/ควบคุม/แก้ไขปัญหา/ทดลองกับ Harware ที่เชื่อมต่อกับบอร์ด Arduino โดยไม่ต้องคอมไพล์ใหม่และโหลดภาพร่างลงในบอร์ดเอง
ชื่อวิธีการภายใน Python Arduino Command 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
จากไดเรกทอรีต้นฉบับเพื่อติดตั้งไลบรารีนี้
setup()
(บรรทัด 348) ใน prototype.ino
เปลี่ยนที่นั่นถ้าจำเป็นprototype.ino
ลงบนบอร์ด Arduino ของคุณโดยใช้ Arduino IDEfrom Arduino import Arduino
ลงในสคริปต์ Python ของคุณเพื่อสื่อสารกับ Arduino ของคุณ สำหรับการรวบรวมตัวอย่างดู examples.py
ไฟล์นี้มีวิธีการที่ทำซ้ำฟังก์ชันการทำงานของภาพร่างการสาธิต Arduino จำนวนมาก
ไดเรกทอรี tests
มีการทดสอบพื้นฐานสำหรับไลบรารี การครอบคลุมรหัสที่กว้างขวางเป็นเรื่องยากที่จะคาดหวังสำหรับทุกรุ่นเนื่องจากการทดสอบในเชิงบวกเกี่ยวข้องกับการเชื่อมต่อและการออกคำสั่งให้กับ Arduino สดโดยโฮสต์ฮาร์ดแวร์ใด ๆ ที่จำเป็นในการทดสอบฟังก์ชั่นเฉพาะ แต่อย่างน้อยก็เป็นแกนหลักของการทดสอบการสื่อสารขั้นพื้นฐานที่นี่และใช้ก่อนที่จะรวมเข้ากับสาขา master
หลังจากการติดตั้งการทดสอบแบบโต้ตอบสามารถเรียกใช้จากไดเรกทอรีต้นฉบับ:
$ python tests/test_main.py
การทดสอบอัตโนมัติสามารถเรียกใช้จากไดเรกทอรีต้นฉบับด้วย:
$ python tests/test_arduino.py
Arduino(baud)
- ตั้งค่าการสื่อสารกับ Arduino ที่เชื่อมต่อและขับเคลื่อนในปัจจุบัน board = Arduino ( "9600" ) #Example
ชื่ออุปกรณ์ / พอร์ต com ของ Arduino ที่เชื่อมต่อจะถูกตรวจพบอัตโนมัติ หากมีการเชื่อมต่อบอร์ด 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
Digital I/O
Arduino.digitalWrite(pin_number, state)
เปิด/ปิดดิจิตอล PINArduino.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)
ตั้งค่าโหมด I/OArduino.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)
เขียนค่าใน microseconds ไปยังเซอร์โวบน PIN ที่ระบุ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 ได้ทีละตัวเท่านั้น อินสแตนซ์อนุกรมซอฟต์แวร์ที่มีอยู่จะถูกเขียนทับโดยการเรียกใช้วิธีนี้ทั้งใน Python และบนบอร์ด ArduinoArduino.SoftwareSerial.write(data)
ส่งข้อมูลโดยใช้ฟังก์ชั่นการเขียน 'Arduino' ไปยังการเชื่อมต่ออนุกรมซอฟต์แวร์ที่มีอยู่Arduino.SoftwareSerial.read()
ส่งคืนหนึ่งไบต์จากการเชื่อมต่ออนุกรมซอฟต์แวร์ที่มีอยู่ #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)
อ่านไบต์จาก EEPROMArduino.EEPROM.write(address, value)
เขียนไบต์ไปยัง EEPROMArduino.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()
ฯลฯ )