[python-brasil] PYTHON X Robotica Paralela DB25

282 views
Skip to first unread message

rodr...@ymail.com

unread,
Nov 11, 2009, 8:29:44 AM11/11/09
to python...@yahoogrupos.com.br
Olá pessoal sou novo tanto no grupo quanto em Python, gostaria que alguem me desse uma luz com Python, gostei muito da linguagem mais ainda estou caminhando, eu tenho um projeto de robotica, para resumi é uma interface com porta DB 25 (aquela de impressora) que na placa estam plugados dois motores servos e oito leds.

Gostaria de saber se alguem pode me explicar passo a passo como fazer para controlar motor servo e os leds, com Python atraves da porta paralela se alguem tiver algum exemplo fico muito agradecido.

Obrigado

Rodrigo Rodrigues

------------------------------------

,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/

<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html


/* Alberto Fabiano */

unread,
Nov 11, 2009, 11:36:52 AM11/11/09
to python...@yahoogrupos.com.br
Rodrigo,

Para utilizar portas paralelas com Python, eu já usei com sucesso
várias vezes o PyParallel [1], sobre o controle do motor servo via porta
paralela, se for um motor padrão talvez até veio um guia rústico junto com
ele sobre como deve ser feito a sinalização junto aos pinos da porta
paralela, recomendo apenas um circuito de proteção.

Porém já te garanto que o desempenho pode ser sofrível, o ideal é
utilizar um circuito adicional (microcontrolado) para o controle do servo
com uma interface serial para o PC com o devido controle de retardo. Outra
dica é continuar este assunto nas lista [sis_embarcados] [2]. E por último,
um meio muito utilizado para fazer estas experiências são com kits
educativos de baixo custo, como por exemplo o Arduino [3] que inclusive é
Open Hardware e aqui segue um exemplo de controle com ele [4] e outro kit
muito bacana é o Tower [5].

<jabah on>

Aliás, no II Seminário C & C++ para Sistemas Embarcados [6] ocorrerá o
sorteio de 4 kits Tower:

http://tr.im/embedded_seminar

</jabah off>

[1] http://pyserial.sourceforge.net/pyparallel.html
[2] http://br.groups.yahoo.com/group/sis_embarcados/
[3] http://www.arduino.cc/
[4] http://www.tigoe.net/pcomp/code/category/code/arduinowiring/31

<http://pyserial.sourceforge.net/pyparallel.html>[5]
http://www.towergeeks.org/

<http://www.towergeeks.org/>[6] http://tr.im/embedded_seminar


[]s
--
A.F.
"
alberto at (ccppbrasil.org | computer.org )
alberto.fabiano at (ieee.org | acm.org)

http://tr.im/embedded_seminar | http://tr.im/arg_fringe_science
"
#
# The best way to predict the future is to invent it , Alan Key
#
/* 0x42 0x69 0x74 0x20 0x46 0x61 0x6e */
""
Sem arriscar, não vivemos a esperança.
Dom Helder Câmara
""

2009/11/11 rodr...@ymail.com <rodr...@ymail.com>

>
>
> Olá pessoal sou novo tanto no grupo quanto em Python, gostaria que alguem
> me desse uma luz com Python, gostei muito da linguagem mais ainda estou
> caminhando, eu tenho um projeto de robotica, para resumi é uma interface com
> porta DB 25 (aquela de impressora) que na placa estam plugados dois motores
> servos e oito leds.
>
> Gostaria de saber se alguem pode me explicar passo a passo como fazer para
> controlar motor servo e os leds, com Python atraves da porta paralela se
> alguem tiver algum exemplo fico muito agradecido.
>
> Obrigado
>
> Rodrigo Rodrigues
>
>
>


[As partes desta mensagem que não continham texto foram removidas]

@maltzsama

unread,
Nov 11, 2009, 9:27:38 AM11/11/09
to python...@yahoogrupos.com.br
Ai vc encontra uma breve documentação de como controlar sua porta
paralela(DB25) atraves de python. Também tem os documentos de como controlar
a RS232(Serial)

http://pyserial.sourceforge.net/pyparallel.html

Demetrius Albuquerque
Linux & SO www.maltzsama.wordpress.com
do Contra Rock http://www.estacaodorock.com/v2/?p=13&blog_name=docontra


2009/11/11 rodr...@ymail.com <rodr...@ymail.com>

>
>
> Olá pessoal sou novo tanto no grupo quanto em Python, gostaria que alguem
> me desse uma luz com Python, gostei muito da linguagem mais ainda estou
> caminhando, eu tenho um projeto de robotica, para resumi é uma interface com
> porta DB 25 (aquela de impressora) que na placa estam plugados dois motores
> servos e oito leds.
>
> Gostaria de saber se alguem pode me explicar passo a passo como fazer para
> controlar motor servo e os leds, com Python atraves da porta paralela se
> alguem tiver algum exemplo fico muito agradecido.
>
> Obrigado
>
> Rodrigo Rodrigues
>
>
>

[As partes desta mensagem que não continham texto foram removidas]

------------------------------------

rodr...@ymail.com

unread,
Nov 11, 2009, 1:25:50 PM11/11/09
to python...@yahoogrupos.com.br
Olá obrigado pela dica, eu estou dando uma olhada nos link que você me passou, porem deixa eu explicar de novo, eu ja tenho o kit montado, com placa, dois servos de antena e 8 leds, ele hj roda em VB, mais me falaram que Python é mais simples alem de ser multiplataforma, gostaria de um ajuda no Python, desda inslação do mesmo a o codigo se alguem tem algum exemplo dos led e motor. Estou enviando o meu codigo fonte feito em VB, para vc ter uma ideia.

Option Explicit

Public Out_TTL As Byte 'contém BYTE para saida da porta
Public In_Port As Integer 'contém direção para leitura 'entrada' da LPT
Public Out_Port As Integer 'contém direção para escrever 'saida' na LPT

Private Sub Command1_Click() 'Ligando os dois motores para frente
If motor1.Caption = "Ligar Motor 1" Then
SetPortBit Out_Port, 3
motor1.Caption = "Desligar Motor 1"
Else
ClrPortBit Out_Port, 3
motor1.Caption = "Ligar Motor 1"
End If

If motor2.Caption = "Ligar Motor 2" Then
SetPortBit Out_Port, 2
motor2.Caption = "Desligar Motor 2"
Else
ClrPortBit Out_Port, 2
motor2.Caption = "Ligar Motor 2"
End If

End Sub

Private Sub Command3_Click() 'Ligar motor da direita para ir para esquerda, motivo roda livre.
If motor2.Caption = "Ligar Motor 2" Then
SetPortBit Out_Port, 2
motor2.Caption = "Desligar Motor 2"
Else
ClrPortBit Out_Port, 2
motor2.Caption = "Ligar Motor 2"
End If
End Sub

Private Sub Command4_Click() 'Ligar motor da esquerda para ir para direita, motivo roda livre.
If motor1.Caption = "Ligar Motor 1" Then
SetPortBit Out_Port, 3
motor1.Caption = "Desligar Motor 1"
Else
ClrPortBit Out_Port, 3
motor1.Caption = "Ligar Motor 1"
End If
End Sub

Private Sub saida_Click(Index As Integer)


If saida(Index).Value = 1 Then
SetPortBit Out_Port, Index
saida(Index).Caption = "Saida " & Index & " = 1 - Ligado "
Shape4(Index).BackColor = &HFF&

Else
ClrPortBit Out_Port, Index
saida(Index).Caption = "Saida " & Index & " = 0 - Desligada "
Shape4(Index).BackColor = &HE0E0E0

End If

End Sub

Private Sub teste_geral_Click()

Dim x As Integer


If teste_geral.Caption = "Liga todas Saídas" Then

teste_geral.Caption = "Desliga todas Saídas"

For x = 0 To 7
saida(x).Value = 1
Timer1.Enabled = True
SetPortBit Out_Port, x
Shape4(x).BackColor = &HFF&

Next x

Else
ClrPortBit Out_Port, 3
teste_geral.Caption = "Liga todas Saídas"

For x = 0 To 7
saida(x).Value = 0
Timer1.Enabled = True
ClrPortBit Out_Port, x
Shape4(x).BackColor = &HE0E0E0


Next x
End If










End Sub

Private Sub Command2_Click() 'Ligando os dois motores para trás
If direcao1.Caption = "Esquerda" Then
SetPortBit Out_Port, 0
direcao1.Caption = "Direita"
Else
ClrPortBit Out_Port, 0
direcao1.Caption = "Esquerda"
End If

If direcao2.Caption = "Esquerda" Then
SetPortBit Out_Port, 1
direcao2.Caption = "Direita"
Else
ClrPortBit Out_Port, 1
direcao2.Caption = "Esquerda"
End Sub

Private Sub direcao1_Click() 'ligando motor da esquerda
If direcao1.Caption = "Esquerda" Then
SetPortBit Out_Port, 0
direcao1.Caption = "Direita"
Else
ClrPortBit Out_Port, 0
direcao1.Caption = "Esquerda"
End If
End Sub

Private Sub direcao2_Click() 'ligando motor da direita
If direcao2.Caption = "Esquerda" Then
SetPortBit Out_Port, 1
direcao2.Caption = "Direita"
Else
ClrPortBit Out_Port, 1
direcao2.Caption = "Esquerda"
End If
End Sub

Private Sub Form_Load() 'Procedimento Inicial

'Configuração da COMBOLIST cmbLptSelect
cmbLptSelect.AddItem "0x378"
cmbLptSelect.AddItem "0x278"
cmbLptSelect.AddItem "0x3BC"

'Estabelecendo LPT1 como Padrão
cmbLptSelect.ListIndex = 0

SetLPTAddress 'direção base da LTP

Port_Reset 'reset Saidas TTL

End Sub


Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Cancel = 1
End Sub


Private Sub Form_Unload(Cancel As Integer) 'sair do programa
Port_Reset 'resetando saidas TTL
End
End Sub


Private Sub cmdSalir_Click() 'presionando SAIDA, reset
Port_Reset
End
End Sub


Private Sub Port_Reset() 'procedimento para resetar as saidas TTL
PortOut Out_Port, 0
End Sub


Private Sub cmbLptSelect_Click()

SetLPTAddress 'chamando rotina para determinar a direção
'base do novo LPT escolhido
End Sub


Private Sub cmdHelpOnLpt_Click()
frmHelpOnLpt.Show
End Sub


Private Sub SetLPTAddress() 'estabelecendo a direção correspondente
'Seleção das portas
Select Case cmbLptSelect.ListIndex
Case Is = 0
Out_Port = &H378

Case Is = 1
Out_Port = &H278

Case Is = 2
Out_Port = &H3BC
End Select

In_Port = Out_Port + 1

End Sub


Private Sub motor1_Click() 'ligar motor 1

If motor1.Caption = "Ligar Motor 1" Then
SetPortBit Out_Port, 3
motor1.Caption = "Desligar Motor 1"
Else
ClrPortBit Out_Port, 3
motor1.Caption = "Ligar Motor 1"
End If
End Sub

Private Sub motor2_Click() 'ligar motor 2

If motor2.Caption = "Ligar Motor 2" Then
SetPortBit Out_Port, 2
motor2.Caption = "Desligar Motor 2"
Else
ClrPortBit Out_Port, 2
motor2.Caption = "Ligar Motor 2"
End If
End Sub

Private Sub Timer1_Timer() 'tempo de 50ms para espera no
Dim Lectura As Byte 'estado das
Dim Estado(3) As Byte 'entradas INPUT 0 a 3
Dim Estado_Str(3) As String
Dim x As Byte

Lectura = PortIn(In_Port) 'leitura da porta de entrada

'filtro solo los bit's que necesito conocer
Estado(0) = Lectura And &H8 '= 00001000 Binario
Estado(1) = Lectura And &H10 '= 00010000 Binario
Estado(2) = Lectura And &H20 '= 00100000 Binario
Estado(3) = Lectura And &H40 '= 01000000 Binario

For x = 0 To 3
If Estado(x) <> 0 Then
Estado_Str(x) = "0 - Aberto"
Entradas(x).BackColor = &HE0E0E0
Else
Estado_Str(x) = "1 - Fechado"
Entradas(x).BackColor = &HC000&
End If
Next x

lblInput0.Caption = "Entrada 3 = " & Estado_Str(0)
lblInput1.Caption = "Entrada 1 = " & Estado_Str(1)
lblInput2.Caption = "Entrada 2 = " & Estado_Str(2)
lblInput3.Caption = "Entrada 0 = " & Estado_Str(3)

End Sub

--- Em python...@yahoogrupos.com.br, "/* Alberto Fabiano */" <alberto@...> escreveu

> 2009/11/11 rodrig007@... <rodrig007@...>

Paulo Eduardo Neves

unread,
Nov 13, 2009, 11:38:24 AM11/13/09
to python...@yahoogrupos.com.br
Não entendo nada de robótica, só vou contar uma historinha que li outro dia.

Quando o Jim Hugunin foi contratado pela Microsoft para fazer o que
viria a ser o IronPython, ele saiu catando dentro da empresa quem já
usava Python. E o grupo mais forte em Python era exatamente o grupo de
robótica! Desde de então eles têm sido o principal cliente internos
do IronPython.

Eles desenvolvem o Microsoft(r) Robotics Developer Studio
(http://www.microsoft.com/Robotics/ ) no qual IronPython é uma das
linguagens suportadas
Já ouvi falar bem deste treco, inclusive elogiando as inovações de
sua arquitetura de web services REST.

Só que usando-o, desconfio que você não terá uma aplicação multi-plataforma.:-P

Aqui tem um vídeo que mostra como controlar um robô usando IronPython
http://www.microsoft.com/winme/0703/29490/Microsoft_Robotics_Studio_Controlling_Simulated_Robots_Using_Iron_Python/Local/index.html
Deve ser legal, mas eu não consigo ver em meu computador Linux:-(

[]s
Paulo Eduardo Neves
http://www.mosquito.pro.br

2009/11/11 rodr...@ymail.com <rodr...@ymail.com>


>
> Olá pessoal sou novo tanto no grupo quanto em Python, gostaria que alguem me desse uma luz com Python, gostei muito da linguagem mais ainda estou caminhando, eu tenho um projeto de robotica, para resumi é uma interface com porta DB 25 (aquela de impressora) que na placa estam plugados dois motores servos e oito leds.
>
> Gostaria de saber se alguem pode me explicar passo a passo como fazer para controlar motor servo e os leds, com Python atraves da porta paralela se alguem tiver algum exemplo fico muito agradecido.
>

Pedro Werneck

unread,
Nov 13, 2009, 12:26:32 PM11/13/09
to python...@yahoogrupos.com.br
On Wednesday 11 November 2009 11:29:44 rodr...@ymail.com wrote:
> Olá pessoal sou novo tanto no grupo quanto em Python, gostaria que alguem
> me desse uma luz com Python, gostei muito da linguagem mais ainda estou
> caminhando, eu tenho um projeto de robotica, para resumi é uma interface
> com porta DB 25 (aquela de impressora) que na placa estam plugados dois
> motores servos e oito leds.
>
> Gostaria de saber se alguem pode me explicar passo a passo como fazer para
> controlar motor servo e os leds, com Python atraves da porta paralela se
> alguem tiver algum exemplo fico muito agradecido.
>


Recomendo que você use a extensão que eu fiz para o Parapin.

Ele tem funções que são apenas uma camada direta sobre as funções do Parapin,
mas também tem uma interface orientada a objetos para quem precisa controlar
pinos individualmente mesmo, trata a porta paralela como um objeto sequência,
e cada pino como um objeto isolado. Se você precisa controlar pinos
individualmente é bem prático, principalmente se é para controlar motor ou
motor de passo. Há uma função própria para enviar pulsos.

Por exemplo, você quer acender leds... depois de importar os módulos, primeiro
cria a porta:

port = parapin.Port(LPT1, outmode=LP_DATA_PINS)

Se você quer controlar o pino 4:

pino4 = port[4]

Se você quer um único objeto Pin que controle o pino 5 e 6 simultaneamente:

pino5e6 = port.get_pin(5, 6)

E por aí vai... pegue e dê uma olhada no código de teste e no exemplo:

http://linux.wareseeker.com/Programming/parapin-1.5.0.zip/328090


--
Pedro Werneck

Rodrigo Rodrigues Freitas

unread,
Nov 15, 2009, 10:39:34 AM11/15/09
to python...@yahoogrupos.com.br
Memso assim obrigado pela dica, a dica vale muito vou da uma pesquisada. abraço.

--- Em sex, 13/11/09, Paulo Eduardo Neves <paulo...@gmail.com> escreveu:

De: Paulo Eduardo Neves <paulo...@gmail.com>
Assunto: Re: [python-brasil] PYTHON X Robotica Paralela DB25
Para: python...@yahoogrupos.com.br
Data: Sexta-feira, 13 de Novembro de 2009, 14:38





Não entendo nada de robótica, só vou contar uma historinha que li outro dia.

Quando o Jim Hugunin foi contratado pela Microsoft para fazer o que

viria a ser o IronPython, ele saiu catando dentro da empresa quem já

usava Python. E o grupo mais forte em Python era exatamente o grupo de

robótica! Desde de então eles têm sido o principal cliente internos

do IronPython.

Eles desenvolvem o Microsoft(r) Robotics Developer Studio

(http://www.microsof t.com/Robotics/ ) no qual IronPython é uma das

linguagens suportadas

Já ouvi falar bem deste treco, inclusive elogiando as inovações de

sua arquitetura de web services REST.

Só que usando-o, desconfio que você não terá uma aplicação multi-plataforma. :-P

Aqui tem um vídeo que mostra como controlar um robô usando IronPython

http://www.microsof t.com/winme/ 0703/29490/ Microsoft_ Robotics_ Studio_Controlli ng_Simulated_ Robots_Using_ Iron_Python/ Local/index. html

Deve ser legal, mas eu não consigo ver em meu computador Linux:-(

[]s

Paulo Eduardo Neves

http://www.mosquito .pro.br

2009/11/11 rodrig007@ymail. com <rodrig007@ymail. com>

>

> Olá pessoal sou novo tanto no grupo quanto em Python, gostaria que alguem me desse uma luz com Python, gostei muito da linguagem mais ainda estou caminhando, eu tenho um projeto de robotica, para resumi é uma interface com porta DB 25 (aquela de impressora) que na placa estam plugados dois motores servos e oito leds.

>

> Gostaria de saber se alguem pode me explicar passo a passo como fazer para controlar motor servo e os leds, com Python atraves da porta paralela se alguem tiver algum exemplo fico muito agradecido.

>





____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]

------------------------------------

Rodrigo Rodrigues Freitas

unread,
Nov 15, 2009, 10:43:56 AM11/15/09
to python...@yahoogrupos.com.br
Obrigado vou testar sim valeu mesmo pela dica.


--- Em sex, 13/11/09, Pedro Werneck <pjwe...@gmail.com> escreveu:

De: Pedro Werneck <pjwe...@gmail.com>
Assunto: Re: [python-brasil] PYTHON X Robotica Paralela DB25
Para: python...@yahoogrupos.com.br

Data: Sexta-feira, 13 de Novembro de 2009, 15:26

 





On Wednesday 11 November 2009 11:29:44 rodrig007@ymail. com wrote:

> Olá pessoal sou novo tanto no grupo quanto em Python, gostaria que alguem

> me desse uma luz com Python, gostei muito da linguagem mais ainda estou

> caminhando, eu tenho um projeto de robotica, para resumi é uma interface

> com porta DB 25 (aquela de impressora) que na placa estam plugados dois

> motores servos e oito leds.

>

> Gostaria de saber se alguem pode me explicar passo a passo como fazer para

> controlar motor servo e os leds, com Python atraves da porta paralela se

> alguem tiver algum exemplo fico muito agradecido.

>

Recomendo que você use a extensão que eu fiz para o Parapin.

Ele tem funções que são apenas uma camada direta sobre as funções do Parapin,

mas também tem uma interface orientada a objetos para quem precisa controlar

pinos individualmente mesmo, trata a porta paralela como um objeto sequência,

e cada pino como um objeto isolado. Se você precisa controlar pinos

individualmente é bem prático, principalmente se é para controlar motor ou

motor de passo. Há uma função própria para enviar pulsos.

Por exemplo, você quer acender leds... depois de importar os módulos, primeiro

cria a porta:

port = parapin.Port( LPT1, outmode=LP_DATA_ PINS)

Se você quer controlar o pino 4:

pino4 = port[4]

Se você quer um único objeto Pin que controle o pino 5 e 6 simultaneamente:

pino5e6 = port.get_pin( 5, 6)

E por aí vai... pegue e dê uma olhada no código de teste e no exemplo:

http://linux. wareseeker. com/Programming/ parapin-1. 5.0.zip/328090

--

Pedro Werneck





____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com

[As partes desta mensagem que não continham texto foram removidas]

------------------------------------

Reply all
Reply to author
Forward
0 new messages