A API de comando Python Arduino é uma biblioteca Python leve para se comunicar com as placas de microcontrolador Arduino de um computador conectado usando o IO serial padrão, em um fio físico ou sem fio. Está escrito usando um protocolo personalizado, semelhante ao firmata.
Isso permite que um usuário faça programas de Protoype rapidamente para Arduino usando o código Python ou simplesmente leia/controle/solucione/experimente harware conectado a uma placa Arduino sem nunca ter que recompilar e recarregar os esboços no próprio quadro.
Os nomes dos métodos da API de comando de Python Arduino são projetados para estar o mais próximo possível de suas contrapartes da linguagem de programação do 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 )
Execute pip install arduino-python
a partir de uma linha de comando ou execute python setup.py build install
no diretório de origem para instalar esta biblioteca.
setup()
(linha 348) no prototype.ino
. Altere lá, se necessário.prototype.ino
esboço na sua placa Arduino, usando o Arduino IDE.from Arduino import Arduino
ao seu script Python para se comunicar com seu Arduino Para uma coleção de exemplos, consulte examples.py
. Este arquivo contém métodos que replicam a funcionalidade de muitos esboços de demonstração do Arduino.
O diretório tests
contém alguns testes básicos para a biblioteca. A extensa cobertura do código é um pouco difícil de esperar para cada lançamento, pois um teste positivo envolve realmente conectar e emitir comandos a um Arduino ao vivo, hospedando qualquer hardware necessário para testar uma função específica. Mas um núcleo de testes básicos de comunicação deve ser mantido aqui e usado antes de se fundir no ramo master
.
Após a instalação, os testes interativos podem ser executados no diretório de origem:
$ python tests/test_main.py
Os testes automatizados podem ser executados no diretório de origem com:
$ python tests/test_arduino.py
Arduino(baud)
- Configure a comunicação com Arduino atualmente conectado e alimentado. board = Arduino ( "9600" ) #Example
O nome do dispositivo / porta COM do Arduino conectado será detectado automaticamente. Se houver mais de uma placa Arduino conectada, a porta COM desejada também poderá ser aprovada como um argumento opcional:
board = Arduino ( "9600" , port = "COM3" ) #Windows example
board = Arduino ( "9600" , port = "/dev/tty.usbmodemfa141" ) #OSX example
Um tempo limite para a leitura do Arduino também pode ser especificado como um 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)
Ligue/desative o pino digitalArduino.digitalRead(pin_number)
LEIA estado de um pino 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)
Defina o modo de E/S pinoArduino.pulseIn(pin_number, state)
mede um pulsoArduino.pulseIn_set(pin_number, state)
mede um pulso, com pré -condicionamento #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)
retorna o valor analógicoArduino.analogWrite(pin_number, value)
define o 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)
Mudar um byte e o retornaArduino.shiftOut(dataPin, clockPin, bitOrder, value)
Mudar o byte dado para fora bitOrder
deve ser "MSBFIRST"
ou "LSBFIRST"
O suporte à funcionalidade da biblioteca servo está incluído para até 8 servos.
Arduino.Servos.attach(pin, min=544, max=2400)
Crie uma instância do servo. Apenas 8 servos podem ser usados ao mesmo tempo.Arduino.Servos.read(pin)
retorna o ângulo do servo anexado ao pino especificadoArduino.Servos.write(pin, angle)
mova um servo anexo em um alfinete para um ângulo especificadoArduino.Servos.writeMicroseconds(pin, uS)
Escreva um valor em microssegundos no servo em um pino especificadoArduino.Servos.detach(pin)
desaneza o servo no pino 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
Funcionalidade serial de software
Arduino.SoftwareSerial.begin(ss_rxPin, ss_txPin, ss_device_baud)
Inicialize o dispositivo serial de software em pinos especificados. Apenas um dispositivo serial de software pode ser usado por vez. A instância serial de software existente será substituída chamando esse método, tanto no Python quanto na placa Arduino.Arduino.SoftwareSerial.write(data)
Envie dados usando a função 'write' Arduino para a conexão serial de software existente.Arduino.SoftwareSerial.read()
retorna um byte da conexão serial 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)
lê um byte da EEPROMArduino.EEPROM.write(address, value)
escreve um byte para a EEPROMArduino.EEPROM.size()
retorna o tamanho da 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 ()))
Misc
Arduino.close()
fecha a conexão serial com o Arduino. print()
e println()
))Wire.h
)Serial1.read()
, etc)