Die Python Arduino Command API ist eine leichte Python-Bibliothek zur Kommunikation mit Arduino-Mikrocontroller-Boards von einem verbundenen Computer mit Standard-seriellen IO, entweder über einem physischen Draht oder drahtlos. Es wird unter Verwendung eines benutzerdefinierten Protokolls geschrieben, ähnlich wie Firma.
Auf diese Weise kann ein Benutzer Programme für Arduino mit Python -Code schnell protoype proteoype proteoype -programm für arduino schnell proteoype für arduino oder einfach les/kontrollieren/beheben/experimentieren mit harware, die mit einem Arduino -Board verbunden ist, ohne Skizzen selbst neu kompilieren und neu laden zu müssen.
Methodennamen innerhalb der Python Arduino -Befehls -API sind so eng wie möglich an ihren Arduino -Programmiersprachekollegen,
#!/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 )
Führen Sie entweder pip install arduino-python
aus einer Befehlszeile oder python setup.py build install
aus dem Quellverzeichnis aus, um diese Bibliothek zu installieren.
setup()
-Funktion (Zeile 348) in prototype.ino
angegebenen Baud -Rate kommuniziert. Ändern Sie es bei Bedarf dort.prototype.ino
mithilfe der Arduino -IDE auf Ihr Arduino -Board.from Arduino import Arduino
in Ihr Python -Skript, um mit Ihrem Arduino zu kommunizieren Eine Sammlung von Beispielen finden Sie unter examples.py
. Diese Datei enthält Methoden, die die Funktionalität vieler Arduino -Demo -Skizzen replizieren.
Das tests
enthält einige grundlegende Tests für die Bibliothek. Eine umfangreiche Codeabdeckung ist für jede Version etwas schwierig zu erwarten, da bei einem positiven Test tatsächlich die Verbindung und das Ausstellen von Befehlen an ein Live -Arduino ausgestellt werden, wobei die für die Prüfung einer bestimmten Funktion erforderlichen Hardware gehostet wird. Ein Kern grundlegender Kommunikationstests sollte jedoch zumindest hier beibehalten und verwendet werden, bevor sie sich in den master
-Zweig verschmelzen.
Nach der Installation können die interaktiven Tests aus dem Quellverzeichnis ausgeführt werden:
$ python tests/test_main.py
Automatisierte Tests können aus dem Quellverzeichnis durchgeführt werden mit:
$ python tests/test_arduino.py
Arduino(baud)
- Richten Sie die Kommunikation mit derzeit verbundenem und betriebenem Arduino ein. board = Arduino ( "9600" ) #Example
Der Gerätename / COM-Port des angeschlossenen Arduino wird automatisch zu erkennen. Wenn mehr als eine Arduino -Boards angeschlossen sind, kann der gewünschte COM -Port auch als optionales Argument übergeben werden:
board = Arduino ( "9600" , port = "COM3" ) #Windows example
board = Arduino ( "9600" , port = "/dev/tty.usbmodemfa141" ) #OSX example
Eine Auszeit für das Lesen vom Arduino kann auch als optionales Argument angegeben werden:
board = Arduino ( "9600" , timeout = 2 ) #Serial reading functions will
#wait for no more than 2 seconds
Digital I/O
Arduino.digitalWrite(pin_number, state)
Schalten Sie den digitalen Pin ein/ausArduino.digitalRead(pin_number)
Lesen Sie den Zustand eines digitalen Pin #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 E/A -Modus festlegenArduino.pulseIn(pin_number, state)
misst einen PulsArduino.pulseIn_set(pin_number, state)
misst einen Impuls mit Vorkonditionierung #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)
gibt den analogen Wert zurückArduino.analogWrite(pin_number, value)
legt den analogen Wert fest #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
Schichtregister
Arduino.shiftIn(dataPin, clockPin, bitOrder)
verschieben ein Byte in und gibt es zurückArduino.shiftOut(dataPin, clockPin, bitOrder, value)
verschieben das angegebene Byte aus bitOrder
sollte entweder "MSBFIRST"
oder "LSBFIRST"
sein
Die Unterstützung der Servo -Bibliotheksfunktionalität ist für bis zu 8 Servos enthalten.
Arduino.Servos.attach(pin, min=544, max=2400)
Erstellen Sie eine Servo -Instanz. Nur 8 Servos können gleichzeitig verwendet werden.Arduino.Servos.read(pin)
gibt den Winkel des an den angegebenen Stift befestigten Servos zurückArduino.Servos.write(pin, angle)
BewegenArduino.Servos.writeMicroseconds(pin, uS)
Schreiben Sie einen Wert in Mikrosekunden an den Servo auf einem angegebenen PinArduino.Servos.detach(pin)
löst den Servo am angegebenen Pin ab #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
Serielle Software -Funktionalität
Arduino.SoftwareSerial.begin(ss_rxPin, ss_txPin, ss_device_baud)
Software Serielles Gerät auf angegebenen Stiften initialisieren. Es können jeweils nur ein serielles Sofware -Gerät verwendet werden. Die vorhandene serielle Software -Instanz wird durch Aufrufen dieser Methode sowohl in Python als auch im Arduino Board überschrieben.Arduino.SoftwareSerial.write(data)
Senden Sie Daten mit der Arduino 'Write' -Funktion an die vorhandene serielle Software -Verbindung.Arduino.SoftwareSerial.read()
gibt ein Byte aus der vorhandenen seriellen Softwareverbindung zurück #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)
liest ein Byte aus dem EEPROMArduino.EEPROM.write(address, value)
schreibt ein Byte an das EEPROMArduino.EEPROM.size()
gibt die Größe des EEPROM zurück #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 ()))
Miser
Arduino.close()
schließt die serielle Verbindung zum Arduino. print()
und println()
)Wire.h
-Befehle)Serial1.read()
usw.)