Escolar Documentos
Profissional Documentos
Cultura Documentos
Julho de 2010
Apoio:
Realização:
Departamento de
Ciência da Computação
Autores:
• Ana Paula Suzuki paullasuzuki@gmail.com
• André Reis de Geus geus.andre@gmail.com
• Gabriela Quirino Pereira gabiquirino@gmail.com
• Rayner de Melo Pires raynermp@gmail.com
• Salviano Ludgério Felipe Gomes salviano.lfg@gmail.com
O que é o NXT?
O Lego Mindstorms NXT mais se parece com um brinquedo, e é utilizado amplamente em
todo o mundo por escolas, universidades, e mesmo por crianças.
Na verdade ele é um kit de robô programável, voltado para a educação tecnológica1, lançado
pela Lego em Julho de 2006, substituindo a primeira geração do kit Lego Mindstorms. O nosso kit é
o Kit Base 9797 e é composto por 431 peças: 3 servomotores2, 4 sensores (toque, som, luz e
ultrassom), 7 cabos para conexões com motores e sensores, um cabo para interface USB, o Brick
Inteligente NXT, que é o corpo central do robô, bateria recarregável, base giratória, rodinhas com
pneus e várias peças conhecidas como Lego Technic, como blocos, vigas, eixos, rodas, engrenagens
e polias.
O Brick NXT (em português, tijolo) é o cérebro dessas pequenas máquinas. Ele viabiliza
autonomia na execução de diferentes tarefas tais como a criação, programação e montagem de
robôs com noções de distância, capazes de reagir a movimentos, ruídos e cores3, e de executar
movimentos com razoável grau de precisão. O kit também inclui o NXT-G, um ambiente de
programação gráfico que possibilita a criação e o download de programas para o NXT.
Os novos modelos permitem que se criem não apenas estruturas, mas também
comportamentos, permitindo a construção de modelos interativos, com os quais se pode aprender
conceitos básicos de ciência e de engenharia. Os empregos didáticos abrangem as áreas de robótica,
controle, automação, física, matemática, programação e projetos.
Explicando o NXT
1 O lema da Educação Tecnológica é preparar os estudantes para não serem apenas usuários de ferramentas
tecnológicas, mas capazes de criar, solucionar problemas e usar os tipos de tecnologia de forma racional, efetiva e
significativa.
2 Servomotor é uma máquina, mecânica ou eletromecânica, que apresenta movimento proporcional a um comando,
em vez de girar ou se mover livremente sem um controle mais efetivo de posição como a maioria dos motores.
3 Neste caso, para a percepção de cores é necessário a utilização do sensor de cores, que não acompanha o kit 9797.
4
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Como já foi dito, o Brick NXT é o corpo central do robô. Nele conectaremos cabos que vão
até os motores e cabos que vêm dos sensores. Ele será como o cérebro (e como o coração). Nele
está contido o processador, que receberá os programas que criaremos e então os interpretará
(executará) fazendo o robô montado ganhar movimentos.
Para facilitar a comunicação e melhorar a compreensão dessa apostila pelos leitores, aqui
vamos nos referenciar ao Brick NXT somente como NXT.
As portas de entrada e saída
Como mostrado na figura acima, o NXT possui três portas de saída (output), onde se
conectam os motores. Essas portas estão acima do visor (portas A, B e C). Abaixo dos botões estão
mais quatro portas, agora as de entrada (input), onde se conectam os sensores (portas 1, 2, 3 e 4). É
importante checar com atenção se os motores e sensores estão conectados corretamente pois eles
não são permutáveis.
A porta USB para comunicação com o software está próxima às portas de comunicação com
os motores. Através dela podemos instalar os programas do computador para o robô, e também
coletar dados do robô para o computador. Caso não queiramos fazer essa comunicação através de
fios, podemos utilizar o bluetooth, também disponível no NXT. Desse modo precisaremos do nome
do NXT, que é mostrado no visor.
5
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
O visor
Na parte superior do visor, no canto esquerdo, vemos ícones que informam sobre o status e da
conexão bluetooth ou USB do robô. No canto direito vemos o ícone da bateria informando a carga
disponível.
O botão central - laranja - é a tecla Enter do robô. Ele também é usado para ligar o robô.
As setas direcionais - em cinza claro - são utilizadas para a navegação nos menus disponíveis
no visor.
O botão inferior - em cinza escuro - é utilizado para a navegação nos diferentes níveis dos
menus. Geralmente é utilizado como o botão Voltar. Também é usado para desligar o robô.
Faça você mesmo!
6
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Explicando os sensores
Os sensores biológicos do nosso corpo são células especializadas que são sensíveis a
temperatura, luminosidade, vibração, toxinas, hormônios, proteínas, entre outros. No caso dos
nossos robôs, podemos pegar a definição do dicionário:
"Designação comum de dispositivos elétricos, eletrônicos, mecânicos ou biológicos
capazes de responder a estímulos de natureza física (temperatura, pressão, umidade,
velocidade, aceleração, luminosidade e etc.). São utilizados em sistemas de controle e
monitoramento."
No nosso kit temos quatro sensores: o de luz, o de toque, o de ultrassom e o de som.
Vamos ver para que serve cada um?
Sensor de luz
Você pode usar o sensor de luz para criar um robô alarme de assaltante: quando um intruso
entrar numa sala e acender a lâmpada o robô pode reagir e defender sua propriedade. Você também
pode usar o sensor de luz para criar um robô que segue linhas ou um robô que classifica coisas por
cores.
Detectando a luz ambiente
Teste a habilidade do sensor de luz em detectar a luz ambiente medindo os níveis de luz em
diferentes locais da sala. Por exemplo, aponte o sensor em direção à janela. Então aponte-o para
baixo da mesa. Veja como modificam as leituras.
Faça você mesmo!
Conecte o sensor ao NXT. Selecione no visor o submenu View. Selecione o ícone do sensor de
luz e a porta onde você o conectou, e pressione o botão Run (botão laranja). Agora aponte o sensor
para as diferentes cores disponíveis na folha de teste de cores. (Caso a sua apostila esteja em preto e
branco pergunte ao monitor sobre a folha de teste colorida).
Try me
O NXT vêm com a função Try Me. Conecte o sensor de luz à porta 3 do NXT e selecione o
menu "Try Me" no NXT para testar o sensor de luz. Você terá uma reação divertida.
Sensor de toque
7
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Você pode usar o sensor de toque para fazer seu robô pegar coisas: um braço robótico
equipado com um sensor de toque permite o robô saber se há ou não alguma coisa em seu braço
para agarrar. Ou você pode fazer seu robô agir a um comando. Por exemplo, pressionando o botão
do sensor fazer o robô realizar alguma ação: andar, falar, fechar uma porta ou ligar sua TV.
Try me
O NXT vêm com a função Try Me. Conecte o sensor de toque à porta 1 do NXT e selecione o
menu "Try Me" no NXT para testar o sensor de toque. Você terá uma reação divertida.
Sensor de Ultrassom
Permite que o robô "veja" e passe a detectar onde os objetos estão. Você
pode usá-lo para fazer o robô evitar obstáculos, detectar e medir a distância, e
detectar movimentos.
O sensor de ultrassom mede distâncias em centímetros e em polegadas. Ele é capaz de medir
distâncias de 0 a 255 centímetros com uma precisão de +/- 3 cm.
O sensor usa a mesma técnica que os morcegos usam: ele consegue medir a distância
calculando o tempo que leva para uma onda sonora bater em um objeto e retornar – como se fosse
um eco.
Objetos maiores com superfícies duras retornam melhores leituras. Enquanto que objetos
feitos de tecido macio ou que possuem curvas (como uma bola) ou que são muito finos e pequenos
podem ser difíceis para o sensor detectar.
* Dois ou mais sensores ultrassônicos atuando no mesmo espaço podem interromper uns aos
outros sua leitura.
Faça você mesmo!
Conecte o sensor de ultrassom ao NXT. Selecione no visor o submenu View. Selecione o ícone
do sensor de ultrassom e a porta onde você o conectou, e pressione o botão Run (botão laranja).
Para medir a distância de um objeto mova sua mão para perto do sensor e observe a mudança de
leitura no visor.
Try me
O NXT vêm com a função Try Me. Conecte o sensor de ultrassom à porta 4 do NXT e
selecione o menu "Try Me" no NXT para testar o sensor de ultrassom Você terá uma reação
divertida.
Sensor de Som
O sensor de som faz com que seu robô ouça! O sensor de som pode detectar
tanto decibéis (dB) quanto decibel ajustado (dBA). Um decibel é uma medida da
pressão do som.
dBA: no modo dBA a sensibilidade do sensor de som é ajustada para a
8
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
sensibilidade dos ouvidos humanos. Em outras palavras, são os sons que os seus ouvidos são
capazes de ouvir.
dB: na medição de decibéis padrão (sem ajuste) todos os sons são medidos com a mesma
sensibilidade. Deste modo, estes sons podem ser muito altos ou muito baixos para serem ouvidos
por nossos ouvidos.
O sensor de som pode medir níveis de pressão de som de até 90 dB – o mesmo produzido por
uma roçadeira de gramas. Níveis de pressão sonora são muito complexos, então as leituras do
sensor de som são mostradas no visor em percentagens (%). Quanto menor for o valor, mais calmo
é o ambiente. Por exemplo:
4 - 5% - é como uma sala de estar silenciosa;
5 - 10% - seria como uma pessoa conversando um pouco distante;
10 - 30% - é como uma conversação normal próxima ao sensor, ou uma música tocando em
um volume normal;
30 - 100% - é como pessoas gritando ou uma música sendo tocada em volume alto.
Faça você mesmo!
O NXT vêm com a função Try Me. Conecte o sensor de som à porta 2 do NXT e selecione o
menu "Try Me" no NXT para testá-lo.
Explicando os Servomotores
Sensor de rotação embutido
9
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
O NXT vêm com a função Try Me. Selecione o menu "Try Me" no NXT para testar os
motores. Você verá.
A montagem do nosso modelo
Nessa parte começaremos a montagem do nosso modelo de robô.
O modelo pronto deverá ficar parecido com a imagem abaixo. A diferença é que o nosso
modelo ficará todo conectado.
10
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Usamos esse modelo pois é relativamente fácil, rápido e utiliza todos os sensores que
acompanham o kit, servindo muito bem ao propósito de apresentação que temos. As ilustrações e o
passo-a-passo que seguiremos foi copiado do guia ilustrado que acompanha o kit Lego Educacional
9797.
Vamos agora montar nosso robô. Iremos construí-lo passo-a-passo, testando todos os
sensores, um de cada vez.
Primeiramente, o robô montado ficará como na imagem abaixo, sem os sensores:
11
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
12
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
13
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
14
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
15
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
16
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
17
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
18
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
19
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
20
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
21
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
22
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
23
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
24
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
25
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
26
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
27
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
28
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
29
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
30
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
31
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
32
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
33
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
34
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
35
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
36
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
37
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
38
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
39
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
40
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
41
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
42
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Antes de começarmos a trabalhar com o software que utilizaremos para criar os programas
para os robôs LEGO temos que falar sobre programação e sobre a lógica de programação.
O que é programação?
Programação, segundo o dicionário, é o ato ou efeito de programar ou planejar um evento.
Também consta que programa é um plano contendo as ações a serem tomadas em um evento. Mais
especificamente, na área da informática, a programação é o ato de programar uma máquina para que
uma tarefa (programa) seja executada por ela. O programa é uma sequência de códigos onde
especificamos o quê fazer e como fazer.
Com as definições anteriores, podemos inferir uma definição mais elaborada, com termos
mais adequados. Programação é o processo de escrita, teste e manutenção de um programa de
computador. O programa é escrito em uma linguagem de programação - embora seja possível, com
alguma dificuldade, escrevê-lo diretamente em linguagem de máquina - seguindo uma lógica de
programação. Diferentes partes de um programa podem ser escritas em diferentes linguagens.
“Software” é um termo inglês generalizado que designa o conjunto de programas/aplicações
armazenados em computador que são executados a fim de resolver alguma tarefa ou solucionar
43
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
algum problema. No Brasil também utilizamos o termo programa quando queremos substituir o
termo em inglês. Note que o prefixo SOFT (de software) é usado em contraposição ao prefixo
HARD (de hardware). Ambos os termos já foram discutidos anteriormente no primeiro módulo
desse projeto.
O que é um algoritmo?
Definição: uma sequência de passos (ações) que devem ser executados para se alcançar um
determinado objetivo.
Nota: Não confunda “algoritmo” com “algarismo”. São duas palavras com significados
completamente diferentes.
Embora a palavra pareça um pouco estranha, executamos algoritmos cotidianamente. Por
exemplo: a rotina diária de um aluno, que se levanta de manhã, se prepara, pega um ônibus (ou
carro) para vir até a UFG, assiste as aulas, volta para a casa (de ônibus ou carro), estuda durante a
tarde, toma banho, janta, estuda depois do jantar, e em seguida vai dormir, é um algoritmo que a
maioria dos alunos executa diariamente (ou pelo menos deveria executar). Um algoritmo também
pode ser comparado como uma receita culinária. Se obedecermos passo a passo as instruções de
uma receita, chegamos sempre ao mesmo resultado.
Mais abaixo teremos vários exemplos de algoritmos.
Comandos de Controle
Os comandos de controle permitem alterar a direção tomada por um programa (desvio), ou
fazer com que partes específicas de um algoritmo seja executada mais uma vez (loop).
Existem três estruturas básicas para a construção de algoritmos: sequenciação, seleção e
repetição. A combinação destas três estruturas permite-nos a construção de algoritmos para a
resolução de problemas.
Imagine a seguinte situação: precisamos elaborar um algoritmo para trocar uma lâmpada. O
algoritmo abaixo é um exemplo para a resolução.
44
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Algoritmo 1
Início
- pegue uma escada;
- coloque-a embaixo da lâmpada;
- busque uma lâmpada nova;
- suba na escada com a lâmpada nova;
- retire a lâmpada velha;
- coloque a lâmpada nova;
- desça da escada.
Fim
Observe que este algoritmo resolve o nosso problema da troca de lâmpada. Trata-se de um
algoritmo bastante simples, que utiliza-se apenas da estrutura de sequenciação, ou seja, nenhuma
seleção ou repetição de procedimentos aparece no algoritmo. Uma estrutura de sequência,
caracteriza-se por possuir uma única sequência de ações, que é executada apenas uma vez.
No entanto, antes de trocarmos a lâmpada devemos nos certificar de que ela realmente esteja
queimada, para então trocá-la. Assim, podemos melhorar o nosso algoritmo.
Algoritmo 2
Início
- ligue o interruptor
- se a lâmpada não acender, então:
- pegue uma escada
- coloque-a embaixo da lâmpada
- busque uma lâmpada nova
- suba na escada com a lâmpada nova
- retire a lâmpada velha
- coloque a lâmpada nova
- desça da escada
- fim-se
Fim
Observe que agora o nosso algoritmo, além da estrutura de sequência, passa a utilizar uma
estrutura de seleção. Na estrutura de seleção, uma condição deve ser analisada. A partir do
resultado da análise, um “caminho” do algoritmo será executado. Em outras palavras, uma estrutura
de seleção seleciona (escolhe) ações a serem executadas a partir de uma condição (que pode ser
simples ou composta).
Embora nosso algoritmo tenha melhorado, ainda podemos deixá-lo mais completo. Quando
verificamos que a lâmpada está queimada, subimos para trocá-la, mas não consideramos a hipótese
da lâmpada nova também estar queimada, e se isso ocorrer, precisaremos executar algumas ações
novamente, até que possamos efetivamente resolver nosso problema.
45
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Algoritmo 3
Início
- ligue o interruptor
- se a lâmpada não acender, então:
- pegue uma escada
- coloque-a embaixo da lâmpada
- enquanto a lâmpada não acender, faça:
- busque uma lâmpada nova
- suba na escada com a lâmpada nova
- retire a lâmpada velha
- coloque a lâmpada nova
- desça da escada
- fim-enquanto
- fim-se
Fim
Neste algoritmo somente pararemos de trocar a lâmpada quando colocarmos uma lâmpada
que acenda. Portanto, um conjunto de ações será executado repetidamente enquanto a condição de
repetição for verdadeira. Assim, inserimos uma estrutura de repetição no nosso algoritmo, que
passa a trabalhar com as três estruturas básicas de construção de algoritmos.
Vamos supor agora que tenhamos 3 lâmpadas na sala de estar de uma casa, e queremos trocar
as que não estiverem funcionando. Para isso inserimos outro estilo de estrutura de repetição.
Algoritmo 4
Início
- para (as lâmpadas da sala) de 1 até 3 faça:
- ligue o interruptor
- se a lâmpada não acender, então:
- pegue uma escada
- coloque-a embaixo da lâmpada
- enquanto a lâmpada não acender, faça:
- busque uma lâmpada nova
- suba na escada com a lâmpada nova
- retire a lâmpada velha
- coloque a lâmpada nova
- desça da escada
- fim-enquanto
- fim-se
- fim-para
Fim
46
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Muitas vezes será necessário desviar a execução do programa segundo uma condição.
Exemplo: ir à universidade de carro ou de ônibus? Para se testar condições é necessário utilizar
operadores lógicos e operadores relacionais.
Operadores Lógicos
Os operadores "e", "ou" e "não" permitem realizar a combinação lógica de variáveis4 do tipo
booleano (lógico).
Para isto utilizam-se as tabelas verdade:
Variável1 Variável2 E OU
V V V V
V F F V
F V F V
F F F F
Variável NÃO
V F
F V
4 Na programação, uma variável é um elemento capaz de reter e representar um valor ou expressão. As variáveis são
associadas a "nomes", chamados identificadores.
47
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Algoritmo 5
Início
- para (as lâmpadas da sala) de 1 até 3 faça:
- ligue o interruptor
- se a lâmpada não acender, então:
- pegue uma escada
- coloque-a embaixo da lâmpada
- busque uma lâmpada nova
- suba na escada com a lâmpada nova
- retire a lâmpada velha
- coloque a lâmpada nova
- desça da escada
- se (a lâmpada continua apagada) e (lâmpadas novas acabaram),
então:
- Pare!
- fim-se
- fim-se
- fim-para
Fim
Operadores Relacionais
Algoritmo 6
Início
- enquanto (houver lâmpadas queimadas) e (tiver lâmpada em estoque)
faça:
- troque lâmpada queimada por uma que funcione
- fim-enquanto
- se (nº de lâmpadas trocadas = nº de lâmpadas queimadas), então:
48
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Algoritmo 7
Início
- enquanto (houver lâmpadas queimadas) e (tiver lâmpada em estoque)
faça:
- lampada1 ← lampada_queimada
- lampada2 ←
lampada_nova
- troqueLampadas (lampada1, lampada2)
- fim-enquanto
- se (nº de lâmpadas trocadas = nº de lâmpadas queimadas), então:
- Imprimir (“Terminou com sucesso!”)
- senão:
- Imprimir (“Terminou com falha!”)
- fim-senão
- fim-se
Fim
49
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
A saída ou retorno de dados deve ser o resultado de alguma operação realizada por um
programa, proveniente de uma entrada dada anteriormente. Os valores podem ser armazenados em
variáveis, podem servir como entrada para outras funções ou também podem ser utilizados pelo
dispositivo de hardware de saída padrão, que no caso dos robôs LEGO são os três motores
conectados às portas A, B e C.
Algoritmo 8
Início
- nrLampadasQueimadas ← receber_nº_de_lâmpadas_queimadas()
- nrLampadasTrocadas ← receber_nº_de_lâmpadas_trocadas()
- se (nrLampadasTrocadas = nrLampadasQueimadas), então:
- Imprimir (“Terminou com sucesso!”)
- senão:
- Imprimir (“Terminou com falha!”)
- fim-senão
- fim-se
Fim
Algoritmo 9
Início
- resultado = SOMAR(2, 3)
- Imprimir (resultado)
Fim
50
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
O software
Dê um duplo clique no ícone criado na sua área de trabalho.
Após carregar o programa (barra verde totalmente carregada), a primeira janela do programa
será inicializada:
51
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Getting Started: demonstração dos comandos básicos para operar o software pela
4
primeira vez, além de uma rápida visão dos recursos oferecidos
Help Window (Ajuda Rápida): mostra dicas e funções básicas dos ícones e
5
ferramentas
Painel de Inicialização rápida: permite abrir um novo programa ou um que foi salvo
7
anteriormente.
No painel de inicialização rápida, clique em Start New Program, digite o nome do seu
programa e clique em "GO". A tela habilitará à paleta de ferramentas e outras funções:
52
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Conecte o NXT ao computador através do cabo USB. Caso seja a primeira vez a ser
conectado aparecerá, no canto inferior direito da tela, a seguinte mensagem em um balão: "Novo
Hardware Dectado". Aguarde até que outra mensagem seja exibida: "Novo Hardware encontrado e
pronto para ser usado".
Controlador (NXT Window)
53
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Paletas de Programação
54
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Display: exibe informações na tela do NXT, desde ícones até dados obtidos pelos
sensores.
Wait: determina uma espera, que pode ser em função do tempo do evento de um dos
sensores.
Comando MOVE
55
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Ela indica a quantidade de rotações que cada um dos motores realizou, ou poderá 'resetar' os
valores.
1. Port: configura qual porta será controlada, podendo ser uma, duas ou as três
simultaneamente.
2. Direction: controla o sentido da rotação do motor (para frente, para trás ou parado).
Controla a direção do robô, quando a locomoção depende de 2 motores, cada um
controlando um lado da locomoção.
3. Steering: habilitado somente quando 2 motores estão selecionados, o que permite ao
robô fazer curvas e indica qual a direção que ele deverá virar, ou se a curva será mais
“aberta” ou mais “fechada”. Se somente um motor ou os três motores estiverem
selecionados, essa opção ficará desabilitada.
4. Power: nível de potência dos motores (que vai de 0% a 100%). Este valor pode ser
ajustado digitando o número na caixa à direita, ou deslizando o ponteiro sobre a barra
para a direita ou para a esquerda.
5. Duration: a duração do movimento do motor pode ser fornecida em:
• Rotações: equivale a uma volta completa do eixo;
• Graus: uma volta equivale a 360º, meia volta a 180º e assim sucessivamente;
• Segundos: independente do número de voltas do motor, a porta é ativada pelo
tempo determinado;
• Ilimitado: irá se mover indefinidamente ou até que a programação execute o
próximo ícone da sequência. Quando se habilita essa função, a Steering é
desabilitada automaticamente;
6. Next Action: define a próxima ação dos motores. Pode ser:
• Brake: fará com que o robô pare ao realizar a quantidade de movimento
determinado, o que pode fazê-lo parar bruscamente, além de "travar" o motor na
posição exata.
• Coast: somente desligará o motor, permitindo que este continue o movimento por
inércia, permitindo uma parada mais suave.
Programe o robô para que ele ande para frente, segundo as configurações abaixo, e meça a
distância percorrida:
56
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Comando RECORD/PLAY
Esses comandos são usados para gravar as ações que os motores realizam, desde
ensinar a posição de algum objeto para o braço mecânico até a sequência de movimentos
que pode ser realizada por todos os motores ordenadamente.
Quando for escolhida a função Record, aparecerá a seguinte tela de configuração:
Utilizamos essa função para executar uma sequência de sons, ou para reproduzir
notas musicais durante a execução do programa.
O painel de configuração da opção SoundFile é apresentado abaixo:
57
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
5. Note: podemos escolher uma nova nota para ser executada e sua duração em segundos.
Ainda é possível selecionar a nota musical através do teclado.
Comando DISPLAY
58
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Comando WAIT
59
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
60
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1. Button: seleciona qual dos botões aguarda para ser pressionado, podendo ser ou
. O botão não pode ser utilizado devido a sua função "Voltar".
2. Action: define a ação que deverá ocorrer com o botão escolhido, da mesma forma que
o sensor de toque.
3. Determina a quantidade a ser esperada.
61
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Aqui, o NXT irá ler o tempo de seus cronômetros internos (3 cronômetros), que podem ser
usados para determinar o tempo de resposta ou não do robô.
1. Timer: seleciona um dos três cronômetros disponíveis;
2. Action: caso esteja selecionada a caixa Read ele lê o valor obtido no timer, ou zera o
cronômetro selecionado se a caixa Reset estiver marcada;
3. Until: determina se deve esperar um valor maior ou menor que o indicado a frente (em
segundos).
1. Message: determina que tipo de mensagem deve receber, se texto (text), número
(number) ou lógico (logic);
2. Compare to: permite comparar as mensagens, com limites pré-definidos.
3. MailBox: determina em qual caixa de correio deve receber a mensagem. Existem 10
diferentes caixas para serem usadas.
62
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Comando LOOP
Quando for selecionado Time, o loop se repetirá durante um determinado tempo, ou seja, ele
aciona um timer que irá determinar quando a sequência dentro do loop é iniciada e verifica se esse
tempo é mais do que o configurado (em segundos). Se for maior, o loop termina e passa para a
sequência de comando seguinte.
Nesse caso o campo Until determina o valor da condição - true ou false - para que o fim do
loop aconteça.
63
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Comando SWITCH
Permite que o programa tome uma "decisão" conforme o que foi pré-determinado.
Basicamente, possibilita duas opções: Value ou Sensor.
Quandor for escolhido Value:
1. Type: define o tipo de valor, no caso de Value, que pode ser Logic, Number ou Text;
2. Display: como será exibido o ícone. Em Flat View, teremos linhas separadas,
permitindo visualizar a programação de cada condição. Caso contrário, somente será
visto uma linha de cada vez e é necessário clicar na aba para ver cada uma das linhas;
3. Conditions: permite estabelecer as condições. Assim, quando selecionado Logic no
campo Type, teremos apenas duas condições (True ou False). Caso seja selecionado
Text ou Number, pode-se adicionar mais condições, desde que Flat View não seja
habilitado. Só é possível ver as opções uma a uma, pelo clique nas abas, que aparecem
conforme mais condições são adicionadas.
4. O botão * permite definir qual a condição padrão a ser tomada, caso nenhuma das
outras seja possível.
64
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
65
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
66
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
67
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Data Hub
Nesse exemplo, temos o sensor de ultrassom, a função "Number to Text", para possibilitar a
compatibilidade do formato do dado de saída com o dado de entrada.
Com esse programa acima, toda vez que alterar a distância do objeto com o sensor, no display
irá aparecer a distância medida pelo sensor. Note que as linhas são de cores diferentes,
representando formatos diferentes de dados. Caso a linha se torne cinza, significa que não existe
compatibilidade entre o dado de saída e o formato de entrada do mesmo.
68
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Numérico Amarelo
Texto Laranja
Incompatível Cinza
Lógico Verde
69
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Essas funções também podem ser acessadas pela Paleta Padrão (já vista anteriormente).
70
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
ACTION
COMANDO LAMP
Configura o funcionamento de lâmpadas com o NXT.
SENSOR
Seus comandos permitem ler os valores/respostas dos sensores, calibrar seus valores,
e permite que usemos estes dados dentro do programa.
71
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Sound Sensor: Permite saber instantaneamente o valor que o sensor está obtendo,
quando conectado ao NXT.
Timer: Permite alterar os valores dos três timers (cronômetros) do NXT, podendo
optar por ler o valor atual ou ainda fazer a contagem iniciar do zero novamente
(reset).
72
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
FLOW
COMANDO STOP
Não possui painel de configuração e sua função é finalizar todo o programa. No
caso de ser usado junto a motores, desliga os motores após uma rotação, interrompendo
a leitura dos sensores e das demais funções.
Outros comandos do menu FLOW são Wait, Loop e Switch, e já foram vistos anteriormente.
DATA
Logic: realiza operações lógicas a partir dos seguintes operadores lógicos - "And",
"Or", "Not" e "Xor".
Math: realiza as quatro operações com os valores obtidos pelos sensores, podendo
utilizá-los como parâmetros.
73
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Range: define o intervalo que pode ser usado, ou que deve ser analisado.
COMANDO LOGIC
É possível realizar operações com operadores lógicos. Para facilitar a compreensão, siga as
tabelas verdade das páginas 46 e 47.
COMANDO MATH
Permite realizar operações matemáticas (adição, subtração, divisão e
multiplicação) com os valores obtidos pelos sensores, utilizando tais resultados em
gráficos ou como parâmetros de configuração.
74
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1. Valores da operação;
2. Operation: tipos de operação: Addition (Adição), Subtraction (Subtração),
Multiplication (Multiplicação), Division (Divisão).
COMANDO COMPARE
Compara valores e define a condição como igualdade, maior que ou menor que.
COMANDO RANGE
Define o intervalo de valores para ser usado como na configuração.
1. Test: número para testar a condição, se esta não tiver sido definida por outro ícone;
2. Define o início e o fim do intervalo a ser usado;
3. Operation: define se os números estarão dentro (inside) ou fora (outside) do intervalo.
COMANDO RANDOM
Gera um valor aleatório, dentro de um intervalo determinado, que pode ser usado
na configuração.
75
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
COMANDO VARIABLE
Define variáveis para serem usadas durante a programação, sendo que o software
possui três pré-definidas.
Para criar novas variáveis, vá ao menu Edit > Define Variables e, na caixa que se abre clique
em Create para criar uma nova variável e definir o tipo. Ao colocar o ícone na tela, este irá aparecer
na relação de variáveis do programa.
1. List: define o nome e o tipo da variável - lógica (logic), numérica (number) ou texto
(text);
2. Action: define a ação em relação ao valor da variável; através dele é possível utilizar
um valor já definido, ou atribuir um novo para uso posterior;
3. Value: quando habilitado Write em Action, pode-se atribuir um valor, texto ou
condição de verdadeiro ou falso, dependendo do tipo da variável.
ADVANCED
76
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Keep Alive: Coloca o NXT em estado de espera, seja para efetuar uma ação ou,
simplesmente, detectar dados sem consumir excessivamente a bateria.
COMANDO TEXT
Combina várias sequências de texto, concatenando até três delas;
77
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1. Action: Determina se é para ler (read), escrever (write), fechar (close) ou deletar
(delete) o arquivo;
2. Name: Determina o nome do arquivo a ser criado;
3. Type: Tipo do arquivo;
4. Text/Number: Número ou texto a ser escrito no arquivo;
COMANDO CALIBRATE
Permite calibrar os sensores de luz e de som com os valores do ambiente,
permitindo uma interação e precisão maior do robô com o ambiente.
78
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
COMANDO RESET
Quando utilizado o comando MOVE, automaticamente o NXT faz um ajuste entre
a rotação dos motores configurados, aumentando a precisão dos movimentos. Porém, ao
utilizar o parâmetro de configuração COAST, o mesmo pode perder a precisão na quantidade de
movimento (Degrees ou Rotations). Para ajustar a duração do movimento nessa situação, usamos o
comando RESET MOTOR.
A paleta personalizada irá conter dois menus: os blocos de programa que você irá criar, em
My Blocks, ou aqueles que poderão ser baixados via download na internet, em WebDownloads,
disponibilizados por usuários como você.
Esses blocos de programa são uma sequência de comandos pré-determinados que foram
salvos, para facilitar a programação dos seus robôs.
79
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Web Downloads: reúne todos os blocos que você fizer o download da web.
Para ter blocos no menu My Blocks, é preciso criá-los antes. Para isso, siga os seguintes
passos:
1. Abra uma janela e crie o programa que você deseja transformar em um bloco, como
por exemplo,
2. Em seguida, selecione esse bloco e vá ao menu Edit e clique em Make a New Block. O
assistente My Builder será aberto;
3. Em Block Name, nomeie o seu bloco, e em Block Description, escreva uma breve
descrição do que ele faz.
Logo abaixo aparecem os comandos que você selecionou anteriormente.
80
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
81
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Referências
• MORAES, Paulo Sérgio de. Curso Básico de Lógica de Programação, Unicamp -
Centro de Computação, 2000.
• [Online] What is NXT? - http://mindstorms.lego.com/en-us/whatisnxt/default.aspx
• [Online] NXT Tutorial - http://www.ortop.org/NXT_Tutorial/index.html
• Manual de Programação para o NXT software - Educação Tecnológica. ZOOM Ed.
Educacional Ltda, 2003. 2003.
82
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Sobre o projeto
Este projeto propõe a difusão de conhecimentos da área de computação para jovens alunos da
zona rural. Em específico, o conhecimento em informática existente no campus de Catalão da
Universidade Federal de Goiás e os jovens pertencentes à zona rural de Catalão, no estado de Goiás.
Além disso é vislumbrado a aquisição de conhecimentos por parte dos envolvidos, a possibilidade
de incluir o jovem do campo social e digitalmente.
É financiado com recursos do CNPQ e apoiado pela Prefeitura Municipal de Catalão.
O projeto é coordenado pela Profª Dr. Selma Terezinha Milagre e tem a colaboração dos
professores Dr. Alexsandro Santos Soares, Dr. Marcelo Henrique Stoppa, Ms. Márcio Antônio
Duarte, Dr. Roberto Mendes Finzi Neto e Dr. Vaston Gonçalves da Costa.
Os bolsistas deste projeto são os autores deste material.
83