Escolar Documentos
Profissional Documentos
Cultura Documentos
Julho de 2010
Apoio:
Realizao:
Departamento de
Cincia da Computao
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 Ludgrio 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 crianas.
Na verdade ele um kit de rob programvel, voltado para a educao tecnolgica1, lanado
pela Lego em Julho de 2006, substituindo a primeira gerao do kit Lego Mindstorms. O nosso kit
o Kit Base 9797 e composto por 431 peas: 3 servomotores2, 4 sensores (toque, som, luz e
ultrassom), 7 cabos para conexes com motores e sensores, um cabo para interface USB, o Brick
Inteligente NXT, que o corpo central do rob, bateria recarregvel, base giratria, rodinhas com
pneus e vrias peas conhecidas como Lego Technic, como blocos, vigas, eixos, rodas, engrenagens
e polias.
O Brick NXT (em portugus, tijolo) o crebro dessas pequenas mquinas. Ele viabiliza
autonomia na execuo de diferentes tarefas tais como a criao, programao e montagem de
robs com noes de distncia, capazes de reagir a movimentos, rudos e cores3, e de executar
movimentos com razovel grau de preciso. O kit tambm inclui o NXT-G, um ambiente de
programao grfico que possibilita a criao e o download de programas para o NXT.
Os novos modelos permitem que se criem no apenas estruturas, mas tambm
comportamentos, permitindo a construo de modelos interativos, com os quais se pode aprender
conceitos bsicos de cincia e de engenharia. Os empregos didticos abrangem as reas de robtica,
controle, automao, fsica, matemtica, programao e projetos.
Explicando o NXT
1 O lema da Educao Tecnolgica preparar os estudantes para no serem apenas usurios de ferramentas
tecnolgicas, mas capazes de criar, solucionar problemas e usar os tipos de tecnologia de forma racional, efetiva e
significativa.
2 Servomotor uma mquina, mecnica ou eletromecnica, que apresenta movimento proporcional a um comando,
em vez de girar ou se mover livremente sem um controle mais efetivo de posio como a maioria dos motores.
3 Neste caso, para a percepo de cores necessrio a utilizao do sensor de cores, que no acompanha o kit 9797.
4
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Como j foi dito, o Brick NXT o corpo central do rob. Nele conectaremos cabos que vo
at os motores e cabos que vm dos sensores. Ele ser como o crebro (e como o corao). Nele
est contido o processador, que receber os programas que criaremos e ento os interpretar
(executar) fazendo o rob montado ganhar movimentos.
Para facilitar a comunicao e melhorar a compreenso dessa apostila pelos leitores, aqui
vamos nos referenciar ao Brick NXT somente como NXT.
As portas de entrada e sada
Como mostrado na figura acima, o NXT possui trs portas de sada (output), onde se
conectam os motores. Essas portas esto acima do visor (portas A, B e C). Abaixo dos botes esto
mais quatro portas, agora as de entrada (input), onde se conectam os sensores (portas 1, 2, 3 e 4).
importante checar com ateno se os motores e sensores esto conectados corretamente pois eles
no so permutveis.
A porta USB para comunicao com o software est prxima s portas de comunicao com
os motores. Atravs dela podemos instalar os programas do computador para o rob, e tambm
coletar dados do rob para o computador. Caso no queiramos fazer essa comunicao atravs de
fios, podemos utilizar o bluetooth, tambm disponvel no NXT. Desse modo precisaremos do nome
do NXT, que mostrado no visor.
5
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
O visor
Na parte superior do visor, no canto esquerdo, vemos cones que informam sobre o status e da
conexo bluetooth ou USB do rob. No canto direito vemos o cone da bateria informando a carga
disponvel.
O boto central - laranja - a tecla Enter do rob. Ele tambm usado para ligar o rob.
As setas direcionais - em cinza claro - so utilizadas para a navegao nos menus disponveis
no visor.
O boto inferior - em cinza escuro - utilizado para a navegao nos diferentes nveis dos
menus. Geralmente utilizado como o boto Voltar. Tambm usado para desligar o rob.
Faa voc mesmo!
6
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Explicando os sensores
Os sensores biolgicos do nosso corpo so clulas especializadas que so sensveis a
temperatura, luminosidade, vibrao, toxinas, hormnios, protenas, entre outros. No caso dos
nossos robs, podemos pegar a definio do dicionrio:
"Designao comum de dispositivos eltricos, eletrnicos, mecnicos ou biolgicos
capazes de responder a estmulos de natureza fsica (temperatura, presso, umidade,
velocidade, acelerao, luminosidade e etc.). So 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 lmpada o rob pode reagir e defender sua propriedade. Voc tambm
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 nveis de luz em
diferentes locais da sala. Por exemplo, aponte o sensor em direo janela. Ento aponte-o para
baixo da mesa. Veja como modificam as leituras.
Faa 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 boto Run (boto laranja). Agora aponte o sensor
para as diferentes cores disponveis 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 vm com a funo 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 reao divertida.
Sensor de toque
7
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Voc pode usar o sensor de toque para fazer seu rob pegar coisas: um brao robtico
equipado com um sensor de toque permite o rob saber se h ou no alguma coisa em seu brao
para agarrar. Ou voc pode fazer seu rob agir a um comando. Por exemplo, pressionando o boto
do sensor fazer o rob realizar alguma ao: andar, falar, fechar uma porta ou ligar sua TV.
Try me
O NXT vm com a funo 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 reao divertida.
Sensor de Ultrassom
Permite que o rob "veja" e passe a detectar onde os objetos esto. Voc
pode us-lo para fazer o rob evitar obstculos, detectar e medir a distncia, e
detectar movimentos.
O sensor de ultrassom mede distncias em centmetros e em polegadas. Ele capaz de medir
distncias de 0 a 255 centmetros com uma preciso de +/- 3 cm.
O sensor usa a mesma tcnica que os morcegos usam: ele consegue medir a distncia
calculando o tempo que leva para uma onda sonora bater em um objeto e retornar como se fosse
um eco.
Objetos maiores com superfcies duras retornam melhores leituras. Enquanto que objetos
feitos de tecido macio ou que possuem curvas (como uma bola) ou que so muito finos e pequenos
podem ser difceis para o sensor detectar.
* Dois ou mais sensores ultrassnicos atuando no mesmo espao podem interromper uns aos
outros sua leitura.
Faa 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 boto Run (boto laranja).
Para medir a distncia de um objeto mova sua mo para perto do sensor e observe a mudana de
leitura no visor.
Try me
O NXT vm com a funo 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 reao
divertida.
Sensor de Som
O sensor de som faz com que seu rob oua! O sensor de som pode detectar
tanto decibis (dB) quanto decibel ajustado (dBA). Um decibel uma medida da
presso do som.
dBA: no modo dBA a sensibilidade do sensor de som ajustada para a
8
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
sensibilidade dos ouvidos humanos. Em outras palavras, so os sons que os seus ouvidos so
capazes de ouvir.
dB: na medio de decibis padro (sem ajuste) todos os sons so 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 nveis de presso de som de at 90 dB o mesmo produzido por
uma roadeira de gramas. Nveis de presso sonora so muito complexos, ento as leituras do
sensor de som so 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 conversao normal prxima ao sensor, ou uma msica tocando em
um volume normal;
30 - 100% - como pessoas gritando ou uma msica sendo tocada em volume alto.
Faa voc mesmo!
O NXT vm com a funo 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 rotao embutido
9
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
O NXT vm com a funo Try Me. Selecione o menu "Try Me" no NXT para testar os
motores. Voc ver.
A montagem do nosso modelo
Nessa parte comearemos a montagem do nosso modelo de rob.
O modelo pronto dever ficar parecido com a imagem abaixo. A diferena que o nosso
modelo ficar todo conectado.
10
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Usamos esse modelo pois relativamente fcil, rpido e utiliza todos os sensores que
acompanham o kit, servindo muito bem ao propsito de apresentao que temos. As ilustraes 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
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
12
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
13
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
14
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
15
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
16
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
17
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
18
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
19
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
20
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
21
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
22
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
23
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
24
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
25
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
26
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
27
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
28
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
29
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
30
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
31
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
32
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
33
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
34
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
35
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
36
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
37
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
38
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
39
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
40
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
41
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
42
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Antes de comearmos a trabalhar com o software que utilizaremos para criar os programas
para os robs LEGO temos que falar sobre programao e sobre a lgica de programao.
O que programao?
Programao, segundo o dicionrio, o ato ou efeito de programar ou planejar um evento.
Tambm consta que programa um plano contendo as aes a serem tomadas em um evento. Mais
especificamente, na rea da informtica, a programao o ato de programar uma mquina para que
uma tarefa (programa) seja executada por ela. O programa uma sequncia de cdigos onde
especificamos o qu fazer e como fazer.
Com as definies anteriores, podemos inferir uma definio mais elaborada, com termos
mais adequados. Programao o processo de escrita, teste e manuteno de um programa de
computador. O programa escrito em uma linguagem de programao - embora seja possvel, com
alguma dificuldade, escrev-lo diretamente em linguagem de mquina - seguindo uma lgica de
programao. Diferentes partes de um programa podem ser escritas em diferentes linguagens.
Software um termo ingls generalizado que designa o conjunto de programas/aplicaes
armazenados em computador que so executados a fim de resolver alguma tarefa ou solucionar
43
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
algum problema. No Brasil tambm utilizamos o termo programa quando queremos substituir o
termo em ingls. Note que o prefixo SOFT (de software) usado em contraposio ao prefixo
HARD (de hardware). Ambos os termos j foram discutidos anteriormente no primeiro mdulo
desse projeto.
O que um algoritmo?
Definio: uma sequncia de passos (aes) que devem ser executados para se alcanar um
determinado objetivo.
Nota: No confunda algoritmo com algarismo. So duas palavras com significados
completamente diferentes.
Embora a palavra parea um pouco estranha, executamos algoritmos cotidianamente. Por
exemplo: a rotina diria 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 tambm
pode ser comparado como uma receita culinria. Se obedecermos passo a passo as instrues de
uma receita, chegamos sempre ao mesmo resultado.
Mais abaixo teremos vrios exemplos de algoritmos.
Comandos de Controle
Os comandos de controle permitem alterar a direo tomada por um programa (desvio), ou
fazer com que partes especficas de um algoritmo seja executada mais uma vez (loop).
Existem trs estruturas bsicas para a construo de algoritmos: sequenciao, seleo e
repetio. A combinao destas trs estruturas permite-nos a construo de algoritmos para a
resoluo de problemas.
Imagine a seguinte situao: precisamos elaborar um algoritmo para trocar uma lmpada. O
algoritmo abaixo um exemplo para a resoluo.
44
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Algoritmo 1
Incio
- pegue uma escada;
- coloque-a embaixo da lmpada;
- busque uma lmpada nova;
- suba na escada com a lmpada nova;
- retire a lmpada velha;
- coloque a lmpada nova;
- desa da escada.
Fim
Observe que este algoritmo resolve o nosso problema da troca de lmpada. Trata-se de um
algoritmo bastante simples, que utiliza-se apenas da estrutura de sequenciao, ou seja, nenhuma
seleo ou repetio de procedimentos aparece no algoritmo. Uma estrutura de sequncia,
caracteriza-se por possuir uma nica sequncia de aes, que executada apenas uma vez.
No entanto, antes de trocarmos a lmpada devemos nos certificar de que ela realmente esteja
queimada, para ento troc-la. Assim, podemos melhorar o nosso algoritmo.
Algoritmo 2
Incio
- ligue o interruptor
- se a lmpada no acender, ento:
- pegue uma escada
- coloque-a embaixo da lmpada
- busque uma lmpada nova
- suba na escada com a lmpada nova
- retire a lmpada velha
- coloque a lmpada nova
- desa da escada
- fim-se
Fim
Observe que agora o nosso algoritmo, alm da estrutura de sequncia, passa a utilizar uma
estrutura de seleo. Na estrutura de seleo, uma condio deve ser analisada. A partir do
resultado da anlise, um caminho do algoritmo ser executado. Em outras palavras, uma estrutura
de seleo seleciona (escolhe) aes a serem executadas a partir de uma condio (que pode ser
simples ou composta).
Embora nosso algoritmo tenha melhorado, ainda podemos deix-lo mais completo. Quando
verificamos que a lmpada est queimada, subimos para troc-la, mas no consideramos a hiptese
da lmpada nova tambm estar queimada, e se isso ocorrer, precisaremos executar algumas aes
novamente, at que possamos efetivamente resolver nosso problema.
45
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Algoritmo 3
Incio
- ligue o interruptor
- se a lmpada no acender, ento:
- pegue uma escada
- coloque-a embaixo da lmpada
- enquanto a lmpada no acender, faa:
- busque uma lmpada nova
- suba na escada com a lmpada nova
- retire a lmpada velha
- coloque a lmpada nova
- desa da escada
- fim-enquanto
- fim-se
Fim
Neste algoritmo somente pararemos de trocar a lmpada quando colocarmos uma lmpada
que acenda. Portanto, um conjunto de aes ser executado repetidamente enquanto a condio de
repetio for verdadeira. Assim, inserimos uma estrutura de repetio no nosso algoritmo, que
passa a trabalhar com as trs estruturas bsicas de construo de algoritmos.
Vamos supor agora que tenhamos 3 lmpadas na sala de estar de uma casa, e queremos trocar
as que no estiverem funcionando. Para isso inserimos outro estilo de estrutura de repetio.
Algoritmo 4
Incio
- para (as lmpadas da sala) de 1 at 3 faa:
- ligue o interruptor
- se a lmpada no acender, ento:
- pegue uma escada
- coloque-a embaixo da lmpada
- enquanto a lmpada no acender, faa:
- busque uma lmpada nova
- suba na escada com a lmpada nova
- retire a lmpada velha
- coloque a lmpada nova
- desa da escada
- fim-enquanto
- fim-se
- fim-para
Fim
46
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Muitas vezes ser necessrio desviar a execuo do programa segundo uma condio.
Exemplo: ir universidade de carro ou de nibus? Para se testar condies necessrio utilizar
operadores lgicos e operadores relacionais.
Operadores Lgicos
Os operadores "e", "ou" e "no" permitem realizar a combinao lgica de variveis4 do tipo
booleano (lgico).
Para isto utilizam-se as tabelas verdade:
Varivel1 Varivel2 E OU
V V V V
V F F V
F V F V
F F F F
Varivel NO
V F
F V
4 Na programao, uma varivel um elemento capaz de reter e representar um valor ou expresso. As variveis so
associadas a "nomes", chamados identificadores.
47
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Algoritmo 5
Incio
- para (as lmpadas da sala) de 1 at 3 faa:
- ligue o interruptor
- se a lmpada no acender, ento:
- pegue uma escada
- coloque-a embaixo da lmpada
- busque uma lmpada nova
- suba na escada com a lmpada nova
- retire a lmpada velha
- coloque a lmpada nova
- desa da escada
- se (a lmpada continua apagada) e (lmpadas novas acabaram),
ento:
- Pare!
- fim-se
- fim-se
- fim-para
Fim
Operadores Relacionais
Algoritmo 6
Incio
- enquanto (houver lmpadas queimadas) e (tiver lmpada em estoque)
faa:
- troque lmpada queimada por uma que funcione
- fim-enquanto
- se (n de lmpadas trocadas = n de lmpadas queimadas), ento:
48
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Algoritmo 7
Incio
- enquanto (houver lmpadas queimadas) e (tiver lmpada em estoque)
faa:
- lampada1 lampada_queimada
- lampada2
lampada_nova
- troqueLampadas (lampada1, lampada2)
- fim-enquanto
- se (n de lmpadas trocadas = n de lmpadas queimadas), ento:
- Imprimir (Terminou com sucesso!)
- seno:
- Imprimir (Terminou com falha!)
- fim-seno
- fim-se
Fim
49
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
A sada ou retorno de dados deve ser o resultado de alguma operao realizada por um
programa, proveniente de uma entrada dada anteriormente. Os valores podem ser armazenados em
variveis, podem servir como entrada para outras funes ou tambm podem ser utilizados pelo
dispositivo de hardware de sada padro, que no caso dos robs LEGO so os trs motores
conectados s portas A, B e C.
Algoritmo 8
Incio
- nrLampadasQueimadas receber_n_de_lmpadas_queimadas()
- nrLampadasTrocadas receber_n_de_lmpadas_trocadas()
- se (nrLampadasTrocadas = nrLampadasQueimadas), ento:
- Imprimir (Terminou com sucesso!)
- seno:
- Imprimir (Terminou com falha!)
- fim-seno
- fim-se
Fim
Algoritmo 9
Incio
- resultado = SOMAR(2, 3)
- Imprimir (resultado)
Fim
50
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
O software
D um duplo clique no cone criado na sua rea de trabalho.
Aps carregar o programa (barra verde totalmente carregada), a primeira janela do programa
ser inicializada:
51
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Getting Started: demonstrao dos comandos bsicos para operar o software pela
4
primeira vez, alm de uma rpida viso dos recursos oferecidos
Help Window (Ajuda Rpida): mostra dicas e funes bsicas dos cones e
5
ferramentas
Painel de Inicializao rpida: permite abrir um novo programa ou um que foi salvo
7
anteriormente.
No painel de inicializao rpida, clique em Start New Program, digite o nome do seu
programa e clique em "GO". A tela habilitar paleta de ferramentas e outras funes:
52
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Conecte o NXT ao computador atravs do cabo USB. Caso seja a primeira vez a ser
conectado aparecer, no canto inferior direito da tela, a seguinte mensagem em um balo: "Novo
Hardware Dectado". Aguarde at que outra mensagem seja exibida: "Novo Hardware encontrado e
pronto para ser usado".
Controlador (NXT Window)
53
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Paletas de Programao
54
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Display: exibe informaes na tela do NXT, desde cones at dados obtidos pelos
sensores.
Wait: determina uma espera, que pode ser em funo do tempo do evento de um dos
sensores.
Comando MOVE
55
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Ela indica a quantidade de rotaes que cada um dos motores realizou, ou poder 'resetar' os
valores.
1. Port: configura qual porta ser controlada, podendo ser uma, duas ou as trs
simultaneamente.
2. Direction: controla o sentido da rotao do motor (para frente, para trs ou parado).
Controla a direo do rob, quando a locomoo depende de 2 motores, cada um
controlando um lado da locomoo.
3. Steering: habilitado somente quando 2 motores esto selecionados, o que permite ao
rob fazer curvas e indica qual a direo que ele dever virar, ou se a curva ser mais
aberta ou mais fechada. Se somente um motor ou os trs motores estiverem
selecionados, essa opo ficar desabilitada.
4. Power: nvel de potncia dos motores (que vai de 0% a 100%). Este valor pode ser
ajustado digitando o nmero na caixa direita, ou deslizando o ponteiro sobre a barra
para a direita ou para a esquerda.
5. Duration: a durao do movimento do motor pode ser fornecida em:
Rotaes: equivale a uma volta completa do eixo;
Graus: uma volta equivale a 360, meia volta a 180 e assim sucessivamente;
Segundos: independente do nmero de voltas do motor, a porta ativada pelo
tempo determinado;
Ilimitado: ir se mover indefinidamente ou at que a programao execute o
prximo cone da sequncia. Quando se habilita essa funo, a Steering
desabilitada automaticamente;
6. Next Action: define a prxima ao 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, alm de "travar" o motor na
posio exata.
Coast: somente desligar o motor, permitindo que este continue o movimento por
inrcia, permitindo uma parada mais suave.
Programe o rob para que ele ande para frente, segundo as configuraes abaixo, e mea a
distncia percorrida:
56
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Comando RECORD/PLAY
Esses comandos so usados para gravar as aes que os motores realizam, desde
ensinar a posio de algum objeto para o brao mecnico at a sequncia de movimentos
que pode ser realizada por todos os motores ordenadamente.
Quando for escolhida a funo Record, aparecer a seguinte tela de configurao:
Utilizamos essa funo para executar uma sequncia de sons, ou para reproduzir
notas musicais durante a execuo do programa.
O painel de configurao da opo SoundFile apresentado abaixo:
57
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
5. Note: podemos escolher uma nova nota para ser executada e sua durao em segundos.
Ainda possvel selecionar a nota musical atravs do teclado.
Comando DISPLAY
58
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Comando WAIT
59
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
60
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
1. Button: seleciona qual dos botes aguarda para ser pressionado, podendo ser ou
. O boto no pode ser utilizado devido a sua funo "Voltar".
2. Action: define a ao que dever ocorrer com o boto escolhido, da mesma forma que
o sensor de toque.
3. Determina a quantidade a ser esperada.
61
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Aqui, o NXT ir ler o tempo de seus cronmetros internos (3 cronmetros), que podem ser
usados para determinar o tempo de resposta ou no do rob.
1. Timer: seleciona um dos trs cronmetros disponveis;
2. Action: caso esteja selecionada a caixa Read ele l o valor obtido no timer, ou zera o
cronmetro 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), nmero
(number) ou lgico (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
Introduo Programao com Robs Lego Projeto Levando a Informtica 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 sequncia 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
sequncia de comando seguinte.
Nesse caso o campo Until determina o valor da condio - true ou false - para que o fim do
loop acontea.
63
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Comando SWITCH
Permite que o programa tome uma "deciso" conforme o que foi pr-determinado.
Basicamente, possibilita duas opes: 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 programao de cada condio. Caso contrrio, somente ser
visto uma linha de cada vez e necessrio clicar na aba para ver cada uma das linhas;
3. Conditions: permite estabelecer as condies. Assim, quando selecionado Logic no
campo Type, teremos apenas duas condies (True ou False). Caso seja selecionado
Text ou Number, pode-se adicionar mais condies, desde que Flat View no seja
habilitado. S possvel ver as opes uma a uma, pelo clique nas abas, que aparecem
conforme mais condies so adicionadas.
4. O boto * permite definir qual a condio padro a ser tomada, caso nenhuma das
outras seja possvel.
64
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
65
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
66
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
67
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Data Hub
Nesse exemplo, temos o sensor de ultrassom, a funo "Number to Text", para possibilitar a
compatibilidade do formato do dado de sada com o dado de entrada.
Com esse programa acima, toda vez que alterar a distncia do objeto com o sensor, no display
ir aparecer a distncia medida pelo sensor. Note que as linhas so de cores diferentes,
representando formatos diferentes de dados. Caso a linha se torne cinza, significa que no existe
compatibilidade entre o dado de sada e o formato de entrada do mesmo.
68
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Numrico Amarelo
Texto Laranja
Incompatvel Cinza
Lgico Verde
69
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Essas funes tambm podem ser acessadas pela Paleta Padro (j vista anteriormente).
70
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
ACTION
COMANDO LAMP
Configura o funcionamento de lmpadas 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
Introduo Programao com Robs Lego Projeto Levando a Informtica 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 trs timers (cronmetros) do NXT, podendo
optar por ler o valor atual ou ainda fazer a contagem iniciar do zero novamente
(reset).
72
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
FLOW
COMANDO STOP
No possui painel de configurao e sua funo finalizar todo o programa. No
caso de ser usado junto a motores, desliga os motores aps uma rotao, interrompendo
a leitura dos sensores e das demais funes.
Outros comandos do menu FLOW so Wait, Loop e Switch, e j foram vistos anteriormente.
DATA
Logic: realiza operaes lgicas a partir dos seguintes operadores lgicos - "And",
"Or", "Not" e "Xor".
Math: realiza as quatro operaes com os valores obtidos pelos sensores, podendo
utiliz-los como parmetros.
73
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Range: define o intervalo que pode ser usado, ou que deve ser analisado.
COMANDO LOGIC
possvel realizar operaes com operadores lgicos. Para facilitar a compreenso, siga as
tabelas verdade das pginas 46 e 47.
COMANDO MATH
Permite realizar operaes matemticas (adio, subtrao, diviso e
multiplicao) com os valores obtidos pelos sensores, utilizando tais resultados em
grficos ou como parmetros de configurao.
74
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
1. Valores da operao;
2. Operation: tipos de operao: Addition (Adio), Subtraction (Subtrao),
Multiplication (Multiplicao), Division (Diviso).
COMANDO COMPARE
Compara valores e define a condio como igualdade, maior que ou menor que.
COMANDO RANGE
Define o intervalo de valores para ser usado como na configurao.
1. Test: nmero para testar a condio, se esta no tiver sido definida por outro cone;
2. Define o incio e o fim do intervalo a ser usado;
3. Operation: define se os nmeros estaro dentro (inside) ou fora (outside) do intervalo.
COMANDO RANDOM
Gera um valor aleatrio, dentro de um intervalo determinado, que pode ser usado
na configurao.
75
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
COMANDO VARIABLE
Define variveis para serem usadas durante a programao, sendo que o software
possui trs pr-definidas.
Para criar novas variveis, v ao menu Edit > Define Variables e, na caixa que se abre clique
em Create para criar uma nova varivel e definir o tipo. Ao colocar o cone na tela, este ir aparecer
na relao de variveis do programa.
1. List: define o nome e o tipo da varivel - lgica (logic), numrica (number) ou texto
(text);
2. Action: define a ao em relao ao valor da varivel; atravs dele possvel 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
condio de verdadeiro ou falso, dependendo do tipo da varivel.
ADVANCED
76
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Keep Alive: Coloca o NXT em estado de espera, seja para efetuar uma ao ou,
simplesmente, detectar dados sem consumir excessivamente a bateria.
COMANDO TEXT
Combina vrias sequncias de texto, concatenando at trs delas;
77
Introduo Programao com Robs Lego Projeto Levando a Informtica 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: Nmero 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 interao e preciso maior do rob com o ambiente.
78
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
COMANDO RESET
Quando utilizado o comando MOVE, automaticamente o NXT faz um ajuste entre
a rotao dos motores configurados, aumentando a preciso dos movimentos. Porm, ao
utilizar o parmetro de configurao COAST, o mesmo pode perder a preciso na quantidade de
movimento (Degrees ou Rotations). Para ajustar a durao do movimento nessa situao, 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 podero ser baixados via download na internet, em WebDownloads,
disponibilizados por usurios como voc.
Esses blocos de programa so uma sequncia de comandos pr-determinados que foram
salvos, para facilitar a programao dos seus robs.
79
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Web Downloads: rene 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
descrio do que ele faz.
Logo abaixo aparecem os comandos que voc selecionou anteriormente.
80
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
81
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Referncias
MORAES, Paulo Srgio de. Curso Bsico de Lgica de Programao, Unicamp -
Centro de Computao, 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 Programao para o NXT software - Educao Tecnolgica. ZOOM Ed.
Educacional Ltda, 2003. 2003.
82
Introduo Programao com Robs Lego Projeto Levando a Informtica do Campus ao Campo
Sobre o projeto
Este projeto prope a difuso de conhecimentos da rea de computao para jovens alunos da
zona rural. Em especfico, o conhecimento em informtica existente no campus de Catalo da
Universidade Federal de Gois e os jovens pertencentes zona rural de Catalo, no estado de Gois.
Alm disso vislumbrado a aquisio 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 Catalo.
O projeto coordenado pela Prof Dr. Selma Terezinha Milagre e tem a colaborao dos
professores Dr. Alexsandro Santos Soares, Dr. Marcelo Henrique Stoppa, Ms. Mrcio Antnio
Duarte, Dr. Roberto Mendes Finzi Neto e Dr. Vaston Gonalves da Costa.
Os bolsistas deste projeto so os autores deste material.
83