L'API de commande Python Arduino est une bibliothèque Python de poids légère pour communiquer avec les cartes de microcontrôleur Arduino à partir d'un ordinateur connecté à l'aide d'une IO série standard, soit sur un fil physique ou sans fil. Il est écrit à l'aide d'un protocole personnalisé, similaire à Firmata.
Cela permet à un utilisateur de protuire les programmes de protoype pour Arduino à l'aide du code Python, ou de simplement lire / contrôler / dépanner / expérimenter avec Harware connecté à une carte Arduino sans jamais avoir à recompiler et à recharger des croquis à la carte elle-même.
Les noms de méthode dans l'API de commande Python Arduino sont conçus pour être aussi proches que possible de leurs homologues en langage de programmation 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 )
Exécutez pip install arduino-python
à partir d'une ligne de commande, soit exécutez python setup.py build install
à partir du répertoire source pour installer cette bibliothèque.
setup()
(ligne 348) dans prototype.ino
. Changez-le si nécessaire.prototype.ino
sur votre carte Arduino, en utilisant l'ide Arduino.from Arduino import Arduino
dans votre script Python pour communiquer avec votre Arduino Pour une collection d'exemples, voir examples.py
. Ce fichier contient des méthodes qui reproduisent la fonctionnalité de nombreux croquis de démonstration Arduino.
Le répertoire tests
contient quelques tests de base pour la bibliothèque. Une couverture de code étendue est un peu difficile à attendre pour chaque version, car un test positif implique de connecter et d'émettre des commandes à un Arduino en direct, hébergeant tout matériel requis pour tester une fonction particulière. Mais un noyau de tests de communication de base doit au moins être maintenu ici et utilisé avant de fusionner dans la branche master
.
Après l'installation, les tests interactifs peuvent être exécutés à partir du répertoire source:
$ python tests/test_main.py
Les tests automatisés peuvent être exécutés à partir du répertoire source avec:
$ python tests/test_arduino.py
Arduino(baud)
- Configurez la communication avec Arduino actuellement connecté et alimenté. board = Arduino ( "9600" ) #Example
Le port de périphérique / com de l'Arduino connecté sera automatiquement détecté. S'il y a plus d'un Arduino Boards connecté, le port COM souhaité peut également être transmis comme un argument facultatif:
board = Arduino ( "9600" , port = "COM3" ) #Windows example
board = Arduino ( "9600" , port = "/dev/tty.usbmodemfa141" ) #OSX example
Un délai de lecture de l'Arduino peut également être spécifié comme un argument facultatif:
board = Arduino ( "9600" , timeout = 2 ) #Serial reading functions will
#wait for no more than 2 seconds
E / S numérique
Arduino.digitalWrite(pin_number, state)
activer / désactiver la broche numériqueArduino.digitalRead(pin_number)
lire l'état d'une épingle numérique #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)
définir le mode d'E / S PINArduino.pulseIn(pin_number, state)
mesure une impulsionArduino.pulseIn_set(pin_number, state)
mesure une impulsion, avec préconditionnement #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
E / S analogique
Arduino.analogRead(pin_number)
renvoie la valeur analogiqueArduino.analogWrite(pin_number, value)
définit la valeur analogique #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
Registre de décalage
Arduino.shiftIn(dataPin, clockPin, bitOrder)
découragez un octet et le renvoieArduino.shiftOut(dataPin, clockPin, bitOrder, value)
décalent l'octet donné bitOrder
doit être "MSBFIRST"
ou "LSBFIRST"
La prise en charge des fonctionnalités de la bibliothèque des servo est incluse pour jusqu'à 8 servos.
Arduino.Servos.attach(pin, min=544, max=2400)
Créer une instance de servo. Seuls 8 servos peuvent être utilisés en même temps.Arduino.Servos.read(pin)
renvoie l'angle du servo attaché à la broche spécifiéeArduino.Servos.write(pin, angle)
déplacez un servo attaché sur une broche à un angle spécifiéArduino.Servos.writeMicroseconds(pin, uS)
Écrivez une valeur en microsecondes au servo sur une broche spécifiéeArduino.Servos.detach(pin)
détache le servo sur la broche spécifiée #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
Fonctionnalité en série logicielle
Arduino.SoftwareSerial.begin(ss_rxPin, ss_txPin, ss_device_baud)
initialiser le périphérique série logiciel sur les broches spécifiées. Un seul appareil série Sofware peut être utilisé à la fois. L'instance de série logicielle existante sera écrasée en appelant cette méthode, à la fois dans Python et sur la carte Arduino.Arduino.SoftwareSerial.write(data)
Envoi des données à l'aide de la fonction Arduino «Write» à la connexion série logicielle existante.Arduino.SoftwareSerial.read()
renvoie un octet de la connexion en série logicielle existante #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)
lit un octet de l'EepromArduino.EEPROM.write(address, value)
écrit un octet à l'EepromArduino.EEPROM.size()
renvoie la taille de l'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 ()))
Mission
Arduino.close()
ferme la connexion série à l'Arduino. print()
et println()
)Wire.h
)Serial1.read()
, etc.)