La API del comando Python Arduino es una biblioteca de Python de peso ligero para comunicarse con las tablas de microcontrolador Arduino desde una computadora conectada utilizando IO estándar IO, ya sea sobre un cable físico o de forma inalámbrica. Se escribe utilizando un protocolo personalizado, similar a la firma.
Esto permite que un usuario se produzca rápidamente programas para Arduino utilizando el código Python, o simplemente lea/controle/resuelva/experimente con Harware conectado a una placa Arduino sin tener que volver a compilar y recargar bocetos a la placa.
Los nombres de métodos dentro de la API del comando Python Arduino están diseñados para estar lo más cerca posible de sus contrapartes de lenguaje de programación 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 )
Ejecute pip install arduino-python
desde una línea de comandos o ejecute python setup.py build install
desde el directorio de origen para instalar esta biblioteca.
setup()
(línea 348) en prototype.ino
. Cambiarlo allí si es necesario.prototype.ino
en su tablero Arduino, utilizando el IDE Arduino.from Arduino import Arduino
a su guión de Python para comunicarse con su Arduino Para una colección de ejemplos, ver examples.py
. Este archivo contiene métodos que replican la funcionalidad de muchos bocetos de demostración de Arduino.
El directorio tests
contiene algunas pruebas básicas para la biblioteca. La cobertura de código extensa es un poco difícil de esperar para cada versión, ya que una prueba positiva implica realmente conectar y emitir comandos a un Arduino en vivo, alojando cualquier hardware requerido para probar una función en particular. Pero un núcleo de pruebas de comunicación básica debe mantener al menos aquí y usarse antes de fusionarse en la rama master
.
Después de la instalación, las pruebas interactivas se pueden ejecutar desde el directorio de origen:
$ python tests/test_main.py
Las pruebas automatizadas se pueden ejecutar desde el directorio de origen con:
$ python tests/test_arduino.py
Arduino(baud)
- Configurar comunicación con Arduino conectado y alimentado actualmente. board = Arduino ( "9600" ) #Example
El nombre del dispositivo / puerto COM del Arduino conectado se detectará automáticamente. Si hay más de una junta de Arduino conectadas, el puerto COM deseado también se puede pasar como un argumento opcional:
board = Arduino ( "9600" , port = "COM3" ) #Windows example
board = Arduino ( "9600" , port = "/dev/tty.usbmodemfa141" ) #OSX example
Un tiempo de espera para leer del Arduino también se puede especificar como un argumento opcional:
board = Arduino ( "9600" , timeout = 2 ) #Serial reading functions will
#wait for no more than 2 seconds
E/S digital
Arduino.digitalWrite(pin_number, state)
enciende el pin digital/desactivadoArduino.digitalRead(pin_number)
Leer estado de un pin digital #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)
establecer el modo de E/SArduino.pulseIn(pin_number, state)
mide un pulsoArduino.pulseIn_set(pin_number, state)
mide un pulso, con preacondicionamiento #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 analógica
Arduino.analogRead(pin_number)
Devuelve el valor analógicoArduino.analogWrite(pin_number, value)
establece el valor analógico #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
Registro de turno
Arduino.shiftIn(dataPin, clockPin, bitOrder)
cambia un byte y lo devuelveArduino.shiftOut(dataPin, clockPin, bitOrder, value)
desplaza el byte dado bitOrder
debe ser "MSBFIRST"
o "LSBFIRST"
El soporte de funcionalidad de la biblioteca de servo se incluye para hasta 8 servos.
Arduino.Servos.attach(pin, min=544, max=2400)
Crear instancia de servo. Solo se pueden usar 8 servos a la vez.Arduino.Servos.read(pin)
Devuelve el ángulo del servo unido al pin especificadoArduino.Servos.write(pin, angle)
Mueva un servo conectado en un pin a un ángulo especificadoArduino.Servos.writeMicroseconds(pin, uS)
Escriba un valor en microsegundos al servo en un pin especificadoArduino.Servos.detach(pin)
separa el servo en el pin especificado #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
Funcionalidad en serie de software
Arduino.SoftwareSerial.begin(ss_rxPin, ss_txPin, ss_device_baud)
Inicialice el dispositivo serial de software en pines especificados. Solo se puede usar un dispositivo serie Sofware a la vez. La instancia de serie de software existente se sobrescribirá llamando a este método, tanto en Python como en el tablero de Arduino.Arduino.SoftwareSerial.write(data)
Enviar datos utilizando la función Arduino 'Write' a la conexión serie de software existente.Arduino.SoftwareSerial.read()
Devuelve un byte de la conexión serie de software existente #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)
lee un byte de la EEPROMArduino.EEPROM.write(address, value)
escribe un byte para el EEPROMArduino.EEPROM.size()
Devuelve el tamaño del 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 ()))
Maga
Arduino.close()
cierra la conexión en serie al Arduino. print()
e println()
)Wire.h
)Serial1.read()
, etc.)