Este final de semana inteiro, trabalhei em 2 bibliotecas para conectar o PIC com NXT.
Vejam o vídeo para ter uma idéia do que é que estou falando...
Precisei muito disso, e nunca encontrei nada parecido pela internet, oque me motivou a fazer mais ainda.
O porque de usar o PIC? é um microcontrolador, é bastante conhecido e de fácil acesso. O que usei, é um 16F877, mas pode ser usado qualquer outro com hardware para I²C.
I²C é um protocolo de comunicação, que o NXT usa para ler sensores especiais, como o de ultrasom, giro, aceleração... O PIC 16F877 possui o hardware para leitura do mesmo.
A parte mais complicada, foi tudo. Não tinha um osciloscópio para realizar medições, portanto foi tudo na tentativa e erro.
Afinal, qual a vantagem de se comunicar com o PIC? Vamos lá. O NXT só possui 4 portas de sensores, o que nos limita a 4 sensores correto? O microcontrolador, nesse caso, servira como um expansor de sensores, e também, como uma plataforma para integrar quaisquer tipos de sensores e atuadores como servo motor, motores de passo, sensores analógicos e digitais... E a quantidade de sensores que pode ser ligadas a ele, é limitada a quantidade de pinos que possui, nesse caso, cerca de 30 e poucos...
O compilador usado para programar o NXT foi o RobotC (em C) e para o pic foi o CCS, portanto aconselho a usar esses para não ocorrer nenhuma incompatibilidade.
BAIXE AQUI OS ARQUIVOS!
Configurar um sensor no PIC, é bastante simples. Você precisa configurar 4 coisas:
- Um registrador unico, que esteja entre 0 e 127 (em hexadecimal)
- Um valor default, que sera carregado junto com o PIC (uma constante, ou um dado do eeprom)
- Uma função a ser executada quando esse registrador for chamado
- Uma função a ser executada quando esse registrador for alterado (opcional)
No NXT, para configurar é bem simples:
- Use a função 'PIC877_init(PORTA);' para iniciar o PIC;
- Use a função 'PIC877_sendCmd(PORTA,REGISTRADOR,DADO);' para enviar um comando ao PIC;
- Use a função 'PIC877_getData(PORTA,REGISTRADOR);' para receber um dado do PIC
Se tiverem duvidas quanto ao seu uso, não fique com vergonha, poste um comentário que serei muito grato em responder.
É capaz de melhorar o código? ótimo! melhore e só não esqueça de enviar para mim, afinal, divulgar faz parte
Sigam meu blog e o twitter (twitter.com/techlego) para dar uma força!
Muuuuito bacana, camarada!! Parabéns!
ResponderExcluirO vídeo ficou muito massa!!
Interessante, não sabia dessa possibilidade. Parabéns pelo trabalho!
ResponderExcluirVou ver se consigo informações para você neste site
http://pt.lego.wikia.com/wiki/Wiki_Lego
Este comentário foi removido pelo autor.
ResponderExcluirJefferson Fernando:
ResponderExcluirE ae Ivan!
Parabéns pelo seu trabalho e pelo apoio a comunidade!!!
Abração e sucesso!!!
Parabens... esse post ta salvando minha vida...
ResponderExcluirO PIC são 5v. Cada pilha são quantos volts? Quantas pilhas você está usando? Sucesso!!
ResponderExcluircada pilha da 1.2v, sendo 4 pilhas, total de 4.8v (acho que esta certo! rs)
ResponderExcluirAbraço!
Ivan, primeiramente parabens!! Muito bom!!
ResponderExcluirHelp me!! Estou desenvolvendo meu TCC (Eng Automaçao e controle) e preciso controlar o acionamento de um servomotor através da leitura de um sensor de rotação. O controle é do tipo: aumenta giro = servo aciona sentido horario / diminui giro = servo anti-horario. É possivel fazer isso com PIC e NXT? Tem uma maneira mais facil? (por ser 1 sensor e 1 servo)
É caro este material (PIC 16F877 e NXT)?
O que é o NXT exatamente? O PIC não pode ser programado para a função diretamente sem NXT?
Agradeço desde já