API команды Python Arduino-это легкая библиотека Python для общения с платами микроконтроллеров Arduino с подключенного компьютера с использованием стандартного последовательного IO, либо по физическому проводе, либо по беспроводной связи. Он написан с использованием пользовательского протокола, аналогичного Firmata.
Это позволяет пользователю быстро протоип программ для Arduino с использованием кода Python или просто прочитать/управлять/устранение неполадок/эксперимент с Harware, подключенным к плате Arduino, без необходимости перекомпилировать и перезагрузить эскизы на саму доску.
Названия методов в API команды Python Arduino предназначены как можно ближе к своим аналогам языка программирования 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 IDE.from Arduino import Arduino
в свой сценарий Python, чтобы общаться с вашим Arduino Для сбора примеров см. examples.py
. Этот файл содержит методы, которые повторяют функциональность многих демонстрационных набросков Arduino.
Каталог tests
содержит некоторые основные тесты для библиотеки. Обширное покрытие кода немного сложно ожидать от каждого выпуска, поскольку положительный тест включает в себя фактическое соединение и выдачу команд с живым Arduino, размещением любого оборудования, необходимого для тестирования конкретной функции. Но ядро базовых тестов связи должно быть, по крайней мере, здесь поддерживаться и использовать перед слиянием в master
ветвь.
После установки интерактивные тесты могут быть выполнены из исходного каталога:
$ python tests/test_main.py
Автоматизированные тесты могут быть проведены из исходного каталога с:
$ python tests/test_arduino.py
Arduino(baud)
- Настройте общение с подключенным в настоящее время и Powered 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
Цифровой ввод/вывод
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)
установлен режим ввода -вывода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
Аналоговый ввод/вывод
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 можно использовать за раз. Существующий серийный экземпляр программного обеспечения будет перезаписан, вызывая этот метод как в 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()
и т. Д.)