Bom dia pessoal, espero que todos tenham uma ótima semana! No primeiro artigo desta semana quero falar um pouco sobre um produto que tive contato a pouco mais de dois meses, durante minhas aulas, introdutórias, de robótica. Trata-se do Lego MindStorms, que apesar de ser um produto da famosa Lego é muito mais do que um brinquedo.
Mas o que é o Lego MindStorms?
Bom, de forma bem simples trata-se de kit composto de um controlador, alguns motores, eixos, e centenas de peças de Lego que permitem ao usuário construir dezenas de robôs diferentes, sim robôs, e o melhor de tudo: programáveis.
Ou seja, você monta o robô escreve o programa para eles executar, transfere via Usb ou infravermelho e pronto! Daí basta usar a imaginação.
Veja abaixo alguns vídeos de robôs MindStorms em ação:
E aí curtiu? Demais né, bom mas e como programar o Lego MindStorms? Bom vamos a alguns conceitos básicos, primeiro a linguangem de programação, trata-se do NQC, uma linguagem escrita por Dave Baum, projetada especialmente para os robôs Lego.
Apesar de pouco conhecida a linguagem pode ser considerada simples e de fácil aprendizado, bastando um pouco de prática para que você possa domina-la, a IDE de desenvolvimento utilizada será o RCX Command Center, ele vai ajudar você a escrever o código, compilar e enviar aos robôs.
Bom, até aí tudo bem, mas que tal darmos uma olhada em um programa simples?
task main() {
OnFwd(OUT_A);
OnFwd(OUT_C);
Wait(400);
OnRev(OUT_A+OUT_C);
Wait(400);
Off(OUT_A+OUT_C);
}
Algo bem simples para começar , os programas NQC sempre são compostos de tarefas daí o código estar englobado em “task” sendo “main” a sua tarefa inicial. A partir desse ponto temos as instruções (statements), sempre finalizados por ; como qualquer boa linguagem de programação 🙂
Analisado as instruções temos:
OnFwd(OUT_A);
Este comando diz ao robô para habilitar (energizar) a saída A, isto é, o motor conectado à saída A do RCX girará para frente. Ele moverá com a velocidade máxima, a menos que a velocidade seja configurada antes da execução deste comando
OnFwd(OUT_C);
Semelhante à instrução anterior, porém agora girará o motor C. Após a execução desses dois comandos, ambos os motores estarão girando e o robô se move para frente.
Wait(400);
Agora é hora de esperar por um período de tempo. Esta instrução nos diz para aguardar pelo período de 4 segundos.
OnRev(OUT_A+OUT_C);
Tendo o robô se movimentado o suficiente para frente, diremos a ele para se mover no sentido reverso, ou seja, para trás. Observe que nós podemos configurar ambos os motores de uma única vez, utilizando OUT_A+OUT_C como argumento. Nós poderíamos ter combinado as duas primeiras instruções desta maneira.
Wait(400);
Novamente, esperamos por 4 segundos.
Off(OUT_A+OUT_C);
E, finalmente, desligamos ambos os motores.
Bem simples, bem direto, mas esse é apenas o começo dentro da infinidade de possibilidades que o kit Mindstorms nos dá, nos próximos dias vou trazer aqui mais algumas dicas sobre a linguagem NQC e a utilização de robôs MindStorms!
Um Abraço e até a próxima.