API Python Arduino Command API عبارة عن مكتبة بيثون خفيفة الوزن للتواصل مع لوحات متحكم Arduino من جهاز كمبيوتر متصل باستخدام IO التسلسلي القياسي ، إما على سلك فعلي أو لاسلكي. مكتوبة باستخدام بروتوكول مخصص ، على غرار Firmata.
يتيح ذلك للمستخدم برامج البرامج السريعة لـ Arduino باستخدام رمز Python ، أو ببساطة قراءة/التحكم/استكشاف الأخطاء وإصلاحها/تجربة Harware متصلة بلوحة Arduino دون الحاجة إلى إعادة ترجمة الرسومات وإعادة تحميلها إلى اللوحة نفسها.
تم تصميم أسماء الأسلوب داخل واجهة برمجة تطبيقات Python Arduino Command لتكون أقرب ما يمكن لنظيرات لغة البرمجة 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
Sketch على لوح Arduino الخاص بك ، باستخدام Arduino IDE.from Arduino import Arduino
إلى نص Python الخاص بك للتواصل مع Arduino الخاص بك للحصول على مجموعة من الأمثلة ، انظر examples.py
. يحتوي هذا الملف على طرق تكرر وظائف العديد من الرسومات التجريبية Arduino.
يحتوي دليل tests
على بعض الاختبارات الأساسية للمكتبة. من الصعب توقع تغطية الشفرة الواسعة لكل إصدار ، نظرًا لأن الاختبار الإيجابي يتضمن توصيل أوامر أوامر فعليًا بأردوينو مباشر ، واستضاف أي أجهزة مطلوبة لاختبار وظيفة معينة. ولكن ينبغي الحفاظ على جوهر اختبارات الاتصال الأساسية على الأقل هنا واستخدامه قبل الاندماج في الفرع 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
الرقمية 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)
وضع وضع دبوس 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 servos.
Arduino.Servos.attach(pin, min=544, max=2400)
إنشاء مثيل مؤازرة. يمكن استخدام 8 servos فقط في وقت واحد.Arduino.Servos.read(pin)
يرجع زاوية المؤازرة المرفقة بالدبوس المحددArduino.Servos.write(pin, angle)
حرك مؤازرة متصلة على دبوس بزاوية محددةArduino.Servos.writeMicroseconds(pin, uS)
اكتب قيمة في microseconds إلى المؤازرة على دبوس محدد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 Serial واحد فقط في وقت واحد. سيتم الكتابة على المثيل التسلسلي للبرامج الحالية عن طريق استدعاء هذه الطريقة ، سواء في Python أو على لوحة Arduino.Arduino.SoftwareSerial.write(data)
إرسال البيانات باستخدام وظيفة Arduino 'Write' إلى الاتصال التسلسلي للبرامج الحالية.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()
، إلخ)