Montar o NXT Explorer e o programa do LEGO é extremamente fácil, porém, romper as barreiras para além das possibilidades simplesmente disposníveis é o que é mais interessante. Um grande e bom desafio é montar um programa no PC para fazer comunicação via Bluetooth com o NXT: Para isso, utilizei meu velho conhecido de guerra, o Visual basic 2005. Com isso, a implementação via software está garantida, porém, o desafio está em fazer os "bixos" se comunicarem. Vamos lá:
Pra começar, vc deve ter no PC um dispositivo de comunicação via Bluetooth, no meu caso eu utilizei um modelo "Pen Drive", que é o mais comum.
Feito isto, agora siga os passo-a-passos deste site: http://www.extremenxt.com/vbpart1.htm
Para ajudar no entendimento da programação, é preciso ler a documentação sobre comunicação Bluetooth do NXT. Esta documentação vc encontra aki. Aliás, acredito que esta é uma obrigação para qualquer programador de baixo nível, ou seja, conhecer bem como é implementado os comandos de hardware, alocação de memória e funcionamento geral, evita perda de tempo e ajuda em uma fácil montagem do programa.
O código do site, onde é explicado a conexão, leitura da bateria e fechamento da conexão, está comentado abaixo:
Ainda abaixo, mostro como ficou o meu programa...
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
With SerialPort1
.PortName = "COM9" '<<<<> .BaudRate = 96000
.Parity = IO.Ports.Parity.None
.DataBits = 8
.StopBits = IO.Ports.StopBits.One
.ReadTimeout = 300 '300ms
.WriteTimeout = 300 '300ms
End With
SerialPort1.Open()
Label1.Text = "Connected"
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim byteOut(5) As Byte
Dim byteIn(6) As Byte
Dim Voltage, i As Integer
Try
byteOut(0) = &H2 '2 bytes na msg de saida
byteOut(1) = &H0 'deve ser 0 para NXT
byteOut(2) = &H0 '&H0 = resposta esperada &H80 = nao esperada
byteOut(3) = &HB '$HB = comando de leitura da bateria
SerialPort1.Write(byteOut, 0, 4) '0 = offset de byteOut e 4 = numero de bytes pra ler a reposta
byteIn(0) = SerialPort1.ReadByte ' nummero de bytes na msg
byteIn(1) = SerialPort1.ReadByte ' deve ser 0 para NXT
For i = 2 To 1 + byteIn(0) ' ler o resto da msg
byteIn(i) = SerialPort1.ReadByte()
Next
Voltage = byteIn(5) + byteIn(6) * 256 ' a voltagemé parte do Byte 5 e 6
Label2.Text = Voltage 'mostra a voltagem
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub
Robson
Assinar:
Postar comentários (Atom)
Este comentário foi removido pelo autor.
ResponderExcluirPoxa, muito didático! Vou tentar fazer! Parece que é fácil, né?
ResponderExcluirBlz Cara??
ResponderExcluirTentei montar o q vc passou e ñ to conseguindo, mandei um e-mail pra vc, se vc puder dar uma lida no arquivo anexo, eu agradeço, vlw!!!!
Este comentário foi removido pelo autor.
ResponderExcluirVoce pode me dizer como faz a barra de progresso da bateria e o label do lado?
ResponderExcluirbernardomnascimento@hotmail.com
E como fazer para desconectar do NXT?
ResponderExcluirSou muito inexperiente.