Python e Arduino, uma boa combinação.

Olá a todos. Hoje venho mostrar uma dica rápida porem muito útil de como usar Python, Arduino, e Wiring (Programação do arduino) para criar sistemas de hardware e software. Para esse tutorial vou usar a PySerial na programação python. Não farei nenhuma explicação sobre esse modulo pois criei um tutorial especialmente para isso, para quem não viu, pode conferi-lo AQUI.

O objetivo é criar um pequeno programa em Python que enviara sinais para o código do arduino e este fará alguma ação programada, no caso acender ou apagar um led. Muito simples. Utilizei o mesmo código no tutorial feito para a categoria python com algumas pequenas adequações: Veja o código abaixo:

# Autor: Fernando Krein Pinheiro
# Data: 07/09/2011
# Linguagem: Python

# ========= IMPORTANTE ===========
# O codigo esta livre para usar,
# citar e compartilhar desde que
# mantida sua fonte e seu autor.
# Obrigado.

#! /usr/bin/env python
import serial
porta = '/dev/ttyUSB0'
baud_rate = 9600
#######################################################################
def escrever_porta():

   try:
       valor = (raw_input("Digite 1 para ligar o led.\nDigite 2 para desligar o led.\n"))
       Obj_porta = serial.Serial(porta, baud_rate)
       Obj_porta.write(valor)
       ler_porta()
       Obj_porta.close()

   except serial.SerialException:
       print"ERRO: Verifique se ha algum dispositivo conectado na porta!"

#########################################################################
def ler_porta():

   try:
       Obj_porta = serial.Serial(porta, baud_rate)
       valor = Obj_porta.readline()
       print"Arduino disse: ",valor
       Obj_porta.close()

   except serial.SerialException:
       print"ERRO: Verifique se ha algum dispositivo conectado na porta!"

################################ MAIN ####################################
if __name__=='__main__':

    	escrever_porta()

Vamos ao código do arduino:


int ledPin =  13;
void setup()
{
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop()
{
  int valor_recebido;
  valor_recebido = Serial.read();

  if(valor_recebido == '1')
  {
      digitalWrite(ledPin, HIGH);
      Serial.println("O led conectado ao pino 13 foi ligado!");
  }
  if(valor_recebido == '2')
  {
      digitalWrite(ledPin, LOW);
      Serial.println("O led conectado ao pino 13 foi desligado!");
  }
}

Conecte um led ao pino 13 do arduino como no esquema abaixo:

Faça o upload do código para a placa e então execute o codigo em python.
No Linux você pode executa-lo via terminal usando o comando: python arquivo.py

Então é isso, espero que tenha gostado da dica!! Até a próxima…

Anúncios
por ferpinheiro Postado em Arduino

4 comentários em “Python e Arduino, uma boa combinação.

  1. Ao fazer o seu código obtive o seguinte erro amigo:
    Traceback (most recent call last):
    File “C:\Users\Bruno\workspace\Automacao\src\ComunicacaoArduino.py”, line 43, in
    escrever_porta()
    File “C:\Users\Bruno\workspace\Automacao\src\ComunicacaoArduino.py”, line 21, in escrever_porta
    Obj_porta.write(valor)
    File “C:\Python33\lib\site-packages\serial\serialwin32.py”, line 258, in write
    data = bytes(data)
    TypeError: string argument without an encoding

    Saberia me dizer oque pode ser?

  2. muito boa a dica para quem quer começar a trabalhar com o python e arduino. Mas no meu caso precisei colocar um capacitor de 10 uF entre o reset e o terra do meu UNO, pois toda vez que ele fechava a porta serial, o código do arduino era resetado e apagava o led.

  3. Bom dia

    Gostaria que passase mais detalhes , como que ligo no arduino a comunicação serial?

    Como que faço para dar o comando??

    Obrigado

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s