Vous êtes sur la page 1sur 79

Edenilton Oliveira

NXT-G Passo a Passo


NERDS da Fronteira, UFMS/CPPP.
Edenilton Oliveira
NXT-G Passo a Passo

NERDS da Fronteira, UFMS/CPPP.


Orientao e Reviso Tcnica: Prof. Dr. Amaury Antnio de Castro Junior
2014 Edenilton Oliveira & NERDS da Fronteira, UFMS/CPPP.
Qualquer parte desta publicao pode ser reproduzida, desde que citada a fonte.
Dados Internacionais de Catalogao na Publicao (cip) Cmara Brasileira do Livro, sp,
Brasil
Oliveira, E. L.
NXT-G Passo a Passo / Edenilton Lima de Oliveira. Ponta Por: NERDS da
Fronteira, UFMS/CPP., 2014.
Bibliografa.
Sumrio
1 Conhecendo o Kit LEGO Mindstorms NXT 2.0 5
1.1 Bloco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.2 Motores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Sensor de Toque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Sensor de Cor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5 Sensor de Distncia . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6 Curiosidade: Como o Sensor Ultrassnico Determina a Distncia de
um Objeto? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7 Montando uma Estrutura Bsica . . . . . . . . . . . . . . . . . . . . 9
1.8 Conhecendo o Ambiente de Programao NXT-G . . . . . . . . . . . 9
1.9 Conhecendo os cones . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.10 Fios de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 Iniciando a Programao com NXT-G: Blocos Bsicos 19
2.1 Bloco Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Bloco Move . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3 Bloco Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4 Bloco Stop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.5 Bloco Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.6 Bloco Random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.7 Bloco Number To Text . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3 Sensores 33
3.1 Sensor Toque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Sensor de Ultrassnico . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3 Sensor de Cor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4 Blocos Controladores de Fluxos 39
4.1 Bloco Wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2 Bloco Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.3 Bloco Compare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5 Laos 59
5.1 Parando o lao com o sensor de toque . . . . . . . . . . . . . . . . . 60
i
ii Sumrio
5.2 Parando o lao com o sensor de ultrassnico . . . . . . . . . . . . . . 60
5.3 Parando o lao com o sensor de cor . . . . . . . . . . . . . . . . . . . 61
5.4 Parando o lao usando contador . . . . . . . . . . . . . . . . . . . . . 61
5.5 Solucionando o problema incial usando lao infnito . . . . . . . . . . 62
Lista de Figuras
0.1 Algortmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1 Bloco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Motor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3 Sensor de Toque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Sensor de Cor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.5 Sensor de distncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.6 Medindo Distncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.7 Estrutura Bsica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.8 Montando uma Estrutura Bsica - Passo 2 . . . . . . . . . . . . . . . . . 11
1.9 Montando uma Estrutura Bsica - Passo 3 . . . . . . . . . . . . . . . . . 11
1.10 Montando uma Estrutura Bsica - Passo 4 . . . . . . . . . . . . . . . . . 12
1.11 Montando uma Estrutura Bsica - Passo 5 . . . . . . . . . . . . . . . . . 13
1.12 Montando uma Estrutura Bsica - Passo 6 . . . . . . . . . . . . . . . . . 14
1.13 rea de Trabalho NXT-G . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.14 Paletas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.15 Blocos Comuns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.16 Todos os Blocos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.17 Personalizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.18 Mostrando e ocultando abas . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.19 Personalizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.1 cone Bloco Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Painel de confguraes - Mostrando uma Imagem . . . . . . . . . . . . . 20
2.3 Painel de confguraes - Mostrando uma Mensagem de Texto . . . . . . 20
2.4 Painel de confguraes - Mostrando um Desenho . . . . . . . . . . . . . 20
2.5 a)Primeiro programa- bloco Wait . . . . . . . . . . . . . . . . . . . . . . 21
2.6 b)Primeiro programa- bloco Wait . . . . . . . . . . . . . . . . . . . . . 21
2.7 Primeiro programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.8 Primeiro programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.9 desenhando uma linha na tela com o bloco Diplay . . . . . . . . . . . . . 22
2.10 desenhando um crculo na tela com o bloco Diplay . . . . . . . . . . . . 22
2.11 Mostrando imagem com o bloco Diplay . . . . . . . . . . . . . . . . . . 22
2.12 Editando uma imagem Diplay . . . . . . . . . . . . . . . . . . . . . . . . 23
iii
iv Lista de Figuras
2.13 Editando imagem Diplay . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.14 Editando imagem Diplay . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.15 Direo do Movimento . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.16 Bloco Move . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.17 Bloco Move 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.18 Painel de confguraes do bloco Move . . . . . . . . . . . . . . . . . . . 25
2.19 Circunferncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.20 Exemplo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.21 Confguraes do primeiro bloco . . . . . . . . . . . . . . . . . . . . . . 27
2.22 Confguraes do segundo bloco . . . . . . . . . . . . . . . . . . . . . . 28
2.23 Confguraes do bloco Motor . . . . . . . . . . . . . . . . . . . . . . . 28
2.24 Confguraes do bloco Motor . . . . . . . . . . . . . . . . . . . . . . . 28
2.25 Confguraes do bloco Motor . . . . . . . . . . . . . . . . . . . . . . . 29
2.26 Confguraes do bloco Motor . . . . . . . . . . . . . . . . . . . . . . . 29
2.27 Confguraes do bloco Motor . . . . . . . . . . . . . . . . . . . . . . . 30
2.28 cone Random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.29 cone Random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.30 cone do bloco Number To Text . . . . . . . . . . . . . . . . . . . . . . . 31
2.31 cone do bloco Number To Text . . . . . . . . . . . . . . . . . . . . . . . 31
3.1 Bloco Touch Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Painel de confguraes do Sensor de Toque . . . . . . . . . . . . . . . . 34
3.3 Bloco Ultrasonic Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4 Painel de confraes do bloco Ultrasonic Sensor . . . . . . . . . . . . . 35
3.5 Bloco Color Sensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.6 Painel de propriedades do bloco Color Sensor . . . . . . . . . . . . . . . 36
3.7 Bloco Color Sensor Modo Luz . . . . . . . . . . . . . . . . . . . . . . . . 37
3.8 Painel de confguraes do bloco Color Sensor Modo Luz . . . . . . . . . 37
4.1 cone do bloco Wait . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2 Esperando por tempo com o bloco Wait . . . . . . . . . . . . . . . . . . 40
4.3 Exemplo esperando por tempo . . . . . . . . . . . . . . . . . . . . . . . 40
4.4 Esperando por sensor de toque com o bloco Wait . . . . . . . . . . . . . 41
4.5 Exemplo esperando pelo sensor de toque . . . . . . . . . . . . . . . . . . 41
4.6 Esperando por sensor ultrassnico com o bloco Wait . . . . . . . . . . . 42
4.7 Exemplo por sensor de distncia . . . . . . . . . . . . . . . . . . . . . . 42
4.8 Esperando por sensor de cor com o bloco Wait . . . . . . . . . . . . . . 43
4.9 Exemplo sensor de cor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.10 Esperando por sensor de luz com o bloco Wait . . . . . . . . . . . . . . . 44
4.11 Exemplo sensor de luz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.12 Esperando por eventos de botes Wait . . . . . . . . . . . . . . . . . . . 45
4.13 Exemplo por evento de boto . . . . . . . . . . . . . . . . . . . . . . . . 45
4.14 Esperando rotaes com Wait . . . . . . . . . . . . . . . . . . . . . . . . 45
4.15 Exemplo esperando por sensor de rotaes 1 . . . . . . . . . . . . . . . . 46
Lista de Figuras v
4.16 Exemplo esperando por sensor de rotaes 2 . . . . . . . . . . . . . . . . 46
4.17 Esperando por sensor de tempo com bloco Wait . . . . . . . . . . . . . . 47
4.18 Exemplo esperando por sensor de tempo . . . . . . . . . . . . . . . . . . 47
4.19 Esperando por sensor de Bluetooth com Wait - Receive Message . . . . . 48
4.20 Esperando por sensor de Bluetooth com Wait - !Receive Message . . . . 48
4.21 Exemplo esperando por mensagem de bluetooth . . . . . . . . . . . . . . 48
4.22 Esperando por sensor de som com bloco Wait . . . . . . . . . . . . . . . 48
4.23 Exemplo esperando por sensor de som . . . . . . . . . . . . . . . . . . . 49
4.24 Esperando por sensor de temperatura com bloco Wait . . . . . . . . . . 49
4.25 Bloco Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.26 Bloco Switch com fos de dados . . . . . . . . . . . . . . . . . . . . . . . 51
4.27 Bloco Switch com fos de dados . . . . . . . . . . . . . . . . . . . . . . . 51
4.28 Bloco Switch mtiplas opes 1 . . . . . . . . . . . . . . . . . . . . . . . 52
4.29 Bloco Switch com opo Values 1 . . . . . . . . . . . . . . . . . . . . . . 52
4.30 Bloco Switch com opo Values 2 . . . . . . . . . . . . . . . . . . . . . . 52
4.31 Bloco Switch mtiplas opes 1 . . . . . . . . . . . . . . . . . . . . . . . 53
4.32 Bloco Switch mtiplas opes 2 . . . . . . . . . . . . . . . . . . . . . . . 53
4.33 Bloco Switch mtiplas opes 3 . . . . . . . . . . . . . . . . . . . . . . . 53
4.34 Bloco Switch 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.35 Bloco Switch 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
4.36 Bloco Switch com sensor de toque . . . . . . . . . . . . . . . . . . . . . . 54
4.37 Bloco Switch com sensor utrassnico . . . . . . . . . . . . . . . . . . . . 55
4.38 Bloco Switch com sensor de luz . . . . . . . . . . . . . . . . . . . . . . . 55
4.39 Bloco Switch com sensor de cor . . . . . . . . . . . . . . . . . . . . . . . 56
4.40 Bloco Switch com sensor de rotaes . . . . . . . . . . . . . . . . . . . . 56
4.41 Bloco Switch com botes . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.42 Bloco Switch com sensor bluetooth . . . . . . . . . . . . . . . . . . . . . 57
4.43 Bloco Switch com sensor de tempo . . . . . . . . . . . . . . . . . . . . . 57
4.44 Bloco Compare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
4.45 Painel de confguraes do bloco Compare . . . . . . . . . . . . . . . . . 58
4.46 Exemplo de uso do bloco Compare . . . . . . . . . . . . . . . . . . . . . 58
5.1 cone do bloco Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2 Exemplo com bloco Loop . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3 Exemplo parando o lao com sensor de toque . . . . . . . . . . . . . . . 60
5.4 Exemplo parando o lao com o sensor ultrassnico . . . . . . . . . . . . 60
5.5 Exemplo parando o lao com sensor de cor . . . . . . . . . . . . . . . . . 61
5.6 Exemplo parando o lao contador . . . . . . . . . . . . . . . . . . . . . . 61
5.7 Problema 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.8 Painel de confguraes do bloco Loop . . . . . . . . . . . . . . . . . . . 62
5.9 Painel de confguraes do bloco Switch . . . . . . . . . . . . . . . . . . 63
5.10 Painel de confguraes do bloco Random . . . . . . . . . . . . . . . . . 63
5.11 Painel de confguraes do bloco Switch interno . . . . . . . . . . . . . . 63
5.12 Bloco Switch interno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
vi Lista de Figuras
5.13 Painel de confguraes do bloco Move - curva direita . . . . . . . . . . 64
5.14 Painel de confguraes do bloco Move - curva esquerda . . . . . . . . 64
5.15 Painel de confguraes do bloco Move que segue reto . . . . . . . . . . . 64
5.16 Soluo viso 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
5.17 Soluo viso 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Lista de Tabelas
vii
Prefcio
Bem vindo primeira edio do NXT-G Passo a Passo. Esse Material didtico que
voc est tendo acesso faz parte das aes Ncleo Educacional de Robtica e Desen-
volvimento de Sofware (NERDS) da Fronteira. O Projeto est vinculado ao grupo
PET Fronteira da Fundao Universidade Federal de Mato Grosso do Sul, campus de
Ponta Por (UFMS/CPPP). O Programa de Educao Tutorial (PET) um programa
governamental nacional, subsidiado pelo Ministrio da Educao e Cultura (MEC) e
pela Secretaria de Ensino Superior (SESu), que busca a formao acadmica e profs-
sional de excelncia, atravs de atividades de Ensino, Pesquisa e Extenso. Uma das
principais linhas de pesquisas no grupo PET Fronteira a Robtica. Robtica um
ramo da cincia da computao que trata do desenvolvimento de agentes inteligentes.
Tais agentes possuem algumas caractersticas prprias do ser humano: so autnomos,
so capazes de tomar de deciso (mais simples), so aprender e raciocinar logicamente
(mais complexas). Os principais projetos de pesquisas do campus so: Desenvolvi-
mentos de Robs de Papel, Robtica Educacional, Futebol de Rob e Automao e
Construo de Robs com Arduino. Em ensino, o grupo j ofereceu vrias ofcinas
dentro e fora do estado com foco na programao do Kit LEGO Mindstorms NXT 2.0
utilizando a linguagem de programao NXC. Atualmente, o NERDS tambm vm
oferecendo ofcinas de Arduino. Em aes de extenso, o NERDS conta com uma
participao na competio Latina Americana de Robtica (Latin American Robotics
Competition - LARC) em 2012 e, em 2013, na Competio Brasileira de Robtica
(CBR). Outra ao NERDS a organizao das Olimpadas Cientfcas de Informtica
(OBI) e de Robtica (OBR) em nvel municipal em Ponta Por. A Revista Ofcial da
OBR listou o ranking dos estados com os maiores nmeros de participantes em 2013
e Mato Grosso do Sul estampa a 5 posio. Resultado da soma de esforos em nvel
estadual, sobretudo, pelo NERDS em Ponta Por. Ponta Por principal cidade do
Mato Grosso do Sul compotencial para ultrapassar a capital do estado, Campo Grande,
em desenvolvimento tecngico. A cidade est prestes a receber o Parque Tecnolgico
Internacional (PTIn) de Ponta Por. A implantao do PTIn ajudar a fortalecer ainda
1
2 Lista de Tabelas
mais as aes do NERDS e voc pode fazer parte dessa histria. Convido-te a conhecer
o deslumbrante mundo da Robtica. Bem vindo ao NXT-G Passo a Passo, boa leitura.
Introduo
O que LEGO? O nome LEGO surgiu da combinao da expresso leg godt que
signifca brincar bem. Criado pelo dinamarqus Ole Kirk Christiansen, tornou-se o
nome de uma das maiores empresas fabricantes de brinquedos do mundo. Estima-se
que, atualmente, o grupo LEGO emprega mais de 10.000 pessoas. Est presente em
cerca de 140 pases e ocupa a posio de lder mundial no segmento de brinquedos
para crianas nas faixas dos trs meses aos dezesseis anos de idade. Alm de nome de
uma famosa empresa, LEGO tambm se tornou um conceito, signifcando um brin-
quedo popular formado por partes que se encaixam formando diversas combinaes,
valendo-se da imaginao da criana. Atualmente muitas escolas j adotaramos kits de
brinquedos da LEGO para auxiliar crianas a desenvolver a inteligncia e criatividade.
Essa apostila ser desenvolvida baseada no kit Lego chamado Mindstorms NXT 2.0.
Para simplifcar, daqui para frente vamos cham-lo apenas de NXT. O NXT mais que
um brinquedo baseado em partes montveis. um brinquedo eletrnico. Possui um
pequeno computador que pode executar programas. Os programas podem ser desen-
volvidos emumcomputador maior, salvo e executados no NXT, transformando-o num
rob. Um rob qualquer ser no vivo capaz de tomar deciso como um ser vivo. Um
programa um conjunto no vazio de instrues que pode ser entendido e executado
por um computador. Tambm costumamos chamar de algortmo. O conceito de
algortmo vai alm do conceito programa. Um algortmo tambm defnido como
um conjunto no vazio de instrues. Mas algortmos no so necessariamente com-
preensveis por um computador. O algortmo da fgura abaixo pode ser comprensvel
para ns humanos, mas para que um computador o entenda precisamos traduzi-lo em
uma linguagem de programao.
O NXT pode ser programado em diferentes linguagens de programao, mas a sua
linguagem nativa o NXT-G representada por blocos de instrues. Assim podemos
contruir um programa para NXT com um conjunto de blocos. Esse material est
organizado em cinco captulos. Sendo o captulo um dedicado ao conhecimento do
Kit LEGO Mindstorms NXT 2.0. O captulo de dois contns os blocos bsicos sua
descrio formas de confgurao e exemplos. O captulo trs dedicado aos blocos
controladores de sensores. Ocaptulo quatro contmos blocos controladores de fuxos.
E o captulo cinco dedicado laos, suas condices de parada e exemplos.
3
4 Lista de Tabelas
Figura 0.1: Algortmo
CAPTULO 1
Conhecendo o Kit LEGO
Mindstorms NXT 2.0
O NXT formado por vrias peas, engrenagens, motores, sensores e um pequeno
computador. importante conhecer algumas de suas peas e suas funes para conse-
guir montar um rob simples e, posteriormente, quando estiver familiarizado com o
NXT, montar robs roubustos.
1.1 Bloco
Vamos comear conhecendo o pequeno computador onde os programas so executados.
Tambm podemos cham-los de bloco. Veja a fgura 1.1 prestando ateno nas suas
partes e funcionalidades.
5
6 Captulo 1. Conhecendo o Kit LEGO Mindstorms NXT 2.0
Figura 1.1: Bloco
1.2 Motores
O NXT vem com trs motores e trs portas para serem ligados no bloco: as portas
A, B e C. possvel criar um rob que usa mais de trs motores? A resposta sim,
mas precisamos de mais um bloco, ou seja, possvel unir dois ou mais Kits NXT para
formar um rob maior.
Figura 1.2: Motor
1.3. Sensor de Toque 7
1.3 Sensor de Toque
No kit NXT est includo quatro sensores, sendo dois sensores de toque, um sensor de
distncia e um sensor de cor. Semelhante aos motores o bloco possui quatro portas
para sensores, sendo necessrio unir mais de um kit para construir um rob que usa
mais de quatro sensores.
O Sensor de toque sinaliza os eventos de toque quando colidido com objetos
postos em sua frente. Veja a fgura 1.3 abaixo. O bico cor de laranja semelhante
um boto que, ao tocar um objeto, pressionado e informa ao rob que existe um
obstculo em sua frente.
Figura 1.3: Sensor de Toque
1.4 Sensor de Cor
O sensor de cor um sensor digital capaz de identifcar cores bsicas: preto, vermelho,
amarelo, azul, verde e branco. O sensor muito utilizado quando se quer realizar
tarefas que exigem seleo de objetos por cores. Como por exemplo, organizar uma
quantidade de bolinhas de ping-pong separando-as por cores. Outro exemplo fazer
o rob seguir um caminho desenhado no piso. Esse sensor pode funcionar no modo
simples, reconhecendo seis cores bsicas e facilmente diferenciveis: preto, vermelho,
azul, amarelo, verde e branco. Ou pode funcionar emitindo luz sobre a superfcie e
medindo a intensidade em que refetida. As intensidades podem variar de acordo
com a lmpada que usada: azul, vermelha ou verde conforme mostra a fgura 1.4.
Figura 1.4: Sensor de Cor
8 Captulo 1. Conhecendo o Kit LEGO Mindstorms NXT 2.0
1.5 Sensor de Distncia
O Sensor de distncia ou Sensor Ultrassnico calcula a distncia aproximada que o
rob est de um determinado objeto. A distncia retornada para o programa pode ser
emcentmetros ou polegadas. Apreciso varia de acordo coma distncia e a superfcie
do objeto.
Figura 1.5: Sensor de distncia
1.6 Curiosidade: Como o Sensor Ultrassnico Determina a
Distncia de um Objeto?
A matemtica na prtica
Figura 1.6: Medindo Distncias
Os mtodos de medida de distncia baseiam-se na determinao do tempo de
trnsito que uma onda ultra-snica leva para percorrer o trajeto de ida e volta. A
tcnica conhecida como pulso-eco. Conforme ilustra a fgura 1.6, a onda pro-
jetada pelo sensor em direo ao objeto. Ao encontra-se com o objeto, a onda
projetada de volta em direo ao sensor, causando o efeito eco. O sensor trata-se ento
de medir, com a maior preciso possvel, o intervalo de tempo transcorrido entre o
momento da emisso da onda ultra-snica e o instante de deteco do eco refetido.
Conhecendo-se o tempo e a velocidade da onda ultra-snica Obtmas informaes suf-
cientes para o clculo da distncia. Tratando esse problema matematicamente teramos:
1.7. Montando uma Estrutura Bsica 9
v =

x

t
onde:
v a velocidade da onda,

x
distncia entre o sensor e o objeto,

t
a variaao de tempo, a soma dos tempos t
ida
+ t
volta
logo t
volta
=
t
t
ida
.
Para facilitar, supomos que o tempo de ida seja igual ao tempo de volta t
ida
= t
volta
ento calcular a incgnita
x
de v =

x
volta
=
x
= vt
volta
.
Supomos que temos os seguintes valores:
t
= 4.10
4
e v = 150000cm/s como
t
ida
= t
volta
logo t
volta
=
4.10
4
2
= 2.10
4
. Colocando esses valores na equao
temos:

x
= vt
volta
= 2.10
4
.1, 5.10
5
= 3.10 = 30cm.
1.7 Montando uma Estrutura Bsica
A estrutura bsica consiste em um pequeno veculo conforme mostra a imagem abaixo.
Para montar essa estrutura voc precisar do programa do LEGO instalando em um
computador. Siga os passos para montar esse pequeno veculo.
1. Abra o programa do LEGO Mindstorms NXT 2.0 no computar e siga os passos.
2. Siga a imagem 1.8.
3. Siga a Imagem 1.9.
4. Siga a Imagem 1.10.
5. Siga a Imagem 1.11.
6. Siga a Imagem 1.12.
7. Siga os passos do tutorial para montar seu primeiro rob.
1.8 Conhecendo o Ambiente de Programao NXT-G
Agora que voc j tem um rob montado, vamos dar os nossos primeiros passos
conhecendo o ambiente de programao NXT-G. Em Create New Program, coloque
o nome exemplo e clique em Go para entrar no maravilhoso mundo da programao.
Embora programar um computador parece uma tarefa super complicada, programar
um rob LEGO com NXT-G muito simples, basta ter algumas ideias e um pouco de
criatividade para fazer funcionar.
Mas para que serve um rob? Um rob pode ser utilizado em diversas situaes
para realizao de tarefa ou trabalho. Algumas tarefas gostamos de fazer, outras no.
Gostamos de nos divertir, mas no gostamos de organizar a baguna que fazemos.
No gostamos de limpar uma praia depois de um divertido dia de sol. No gostamos
10 Captulo 1. Conhecendo o Kit LEGO Mindstorms NXT 2.0
Figura 1.7: Estrutura Bsica
de lavar a loua depois de um saboroso jantar. Como no gostamos de realizar certas
atividades ento criamos rob para faz-las. Eles trabalham sem parar e no se cansam.
Algumas tarefas robs realizam com mais rapidez e preciso do que ns. Mas robs
precisam ser imaginados, criados e programados. Ento comece a se preparar para ser
um grande criador e programador de robs.
Segue abaixo a apresentao do ambiente de programao do NXT-G. com-
posto basicamente por cinco regies. Na imagem 1.13 aparece numeradas de 1 a 5.
Acompanhe a legenda conforme a numerao na imagem.
1. a regio onde contm os blocos de controle ou aes. Toda a programao
orientada por esses blocos que so arrastados para a rea dois onde est o
programa que estamos criando.
2. Essa regio usada para colocar o nosso programa em desenvolvimento.
3. Regio onde fcam os programas que esto em edio simultaneamente. Pode
conter um ou vrios arquivos.
1.8. Conhecendo o Ambiente de Programao NXT-G 11
Figura 1.8: Montando uma Estrutura Bsica - Passo 2
Figura 1.9: Montando uma Estrutura Bsica - Passo 3
4. A regio 4 contm os controles do programa, ao todo so 5 botes.Na regio 4
marcada:
No canto superior esquerdo est o boto onde possui a janela do NXT, mostra
informaes dos recursos do rob que est sendo utilizado, como a quantidade
de memria, o nvel da bateria, as conexes com outros dispositivos, etc;
No canto superior direito fca o boto com duas aes simultneas, salvar no
NXT e executar o programa.
No canto inferior direito, est o boto cuja funcionalidade salvar o programa
no NXT.
12 Captulo 1. Conhecendo o Kit LEGO Mindstorms NXT 2.0
Figura 1.10: Montando uma Estrutura Bsica - Passo 4
Oboto no canto inferior direito tema funo de parar a execuo do programa.
E por fm, ao centro, est o boto de salvar executar o programa.
5. Marca o ponto de incio do programa. Um programa em NXT-G pode ser com-
preendido tambm como um conjunto de estados, do estado inicial ao estado
fnal. Nessa regio fca o estado inicial, lembrando que umprograma geralmente
possui ciclos e esse estado inicial pode tambm ser um estado intermedirio.
Em outras palavras, qualquer outro estado, inclusive o estado fnal pode est reli-
gando ao estado inicial formando um ciclo. O que, em programao, chamamos
de estrutura de repetio ou laos de repetio.
1.9 Conhecendo os cones
A regio 1 da fgura 1.13 subdivide-se em trs paletas. Conforme mostra a imagem
1.14, na primeira aparecem os blocos comuns Common, na segunda, todos os blocos
complete - e na terceira, mostra os blocos personalizados - Custom como mostram as
imagens da fgura 1.14 respectivamente. Para alternar as paletas use os cones no seu
rodap. As fguras 1.15, 1.15 e 1.15 mostram os cones presentes em cada paleta.
1.10 Fios de Dados
Fios de dados transportam informaes de um bloco para outro. Voc pode optar por
exibir ou ocultar a aba que abrem a rea para conexes entre os blocos como na fgura
1.10. Fios de Dados 13
Figura 1.11: Montando uma Estrutura Bsica - Passo 5
1.18. Algumas restries existem para a correta utilizao dessa funcionalidade, por
exemplo, no se pode conectar um fo de dado que transporta texto em uma entrada
numrica. Quando h violao das restries impostas o fo aparece colorido com a
cor cinza. Outras cores indicam que a conexo pode ser estabelecida normalmente. A
fgura 1.19 mostra a legenda da aba de conexes. O layout e os parmetros disponveis
variam conforme o bloco.
14 Captulo 1. Conhecendo o Kit LEGO Mindstorms NXT 2.0
Figura 1.12: Montando uma Estrutura Bsica - Passo 6
Figura 1.13: rea de Trabalho NXT-G
1.10. Fios de Dados 15
Figura 1.14: Paletas
Figura 1.15: Blocos Comuns
16 Captulo 1. Conhecendo o Kit LEGO Mindstorms NXT 2.0
Figura 1.16: Todos os Blocos
Figura 1.17: Personalizados
Figura 1.18: Mostrando e ocultando abas
1.10. Fios de Dados 17
Figura 1.19: Personalizados
CAPTULO 2
Iniciando a Programao com
NXT-G: Blocos Bsicos
2.1 Bloco Display
Esse bloco usado para escrever mensagem na tela (display), mostrar uma imagem ou
desenhar uma forma no display. O bloco Display representado pelo cone mostrado
na imagem 2.1. Acompanhe a legenda.
Figura 2.1: cone Bloco Display
Na imagem 2.1 temos:
1. Esse cone mostra o que se est exibindo na tela. Se uma imagem, um texto ou
um desenho.
2. Essa rea permite voc confgurar abrir a aba de conexes com outros blocos.
As Figuras 2.2, 2.3 e 2.4 mostram o painel de propriedades do bloco Display. As
confguraes para mostrar uma imagem, uma mensagem de texto e um desenho
respectivamente.
1. Esse campo permite selecionar o que voc deseja exibir na tela, uma imagem,
um texto, um desenho ou um reset para apagar e reiniciar as confguraes.
2. Para limpar a tela do NXT aps a exibio dever marcar essa opo clear.
19
20 Captulo 2. Iniciando a Programao com NXT-G: Blocos Bsicos
Figura 2.2: Painel de confguraes - Mostrando uma Imagem
Figura 2.3: Painel de confguraes - Mostrando uma Mensagem de Texto
Figura 2.4: Painel de confguraes - Mostrando um Desenho
3. Voc poder selecionar uma imagem que est salva na pasta de imagens do
LEGO NXT.
4. Nesse campo permite voc selecionar a posio que seu objeto ser exibido na
tela simplesmente arrastando com o mouse para a posio desejada. O ponto
(x,y) est sendo exibido ao lado. Lembrando que a origem do plano cartesiano
da tela est no canto inferior esquerdo.
5. Se voc selecionou um texto, esse campo permite que voc informe o texto que
ser exibido na tela.
6. Defne a posio do texto na tela. Voc poder posicionar o texto na tela apenas
informando a linha. A tela do NXT possui 8 linhas sendo a linha 1 na parte mais
superior e a linha 8 na parte mais inferior.
7. Se voc selecionou o desenho, esse campo oferece trs formas bsicas (linha,
ponto e crculo) para voc criar seu desenho.
8. Se voc selecionou um crculo voc precisar informar o tamanho do raio ou, se
voc selecionou uma linha poder desenh-la apenas arrastando o mouse, ou
determinando o ponto inicial e o ponto fnal.
2.1. Bloco Display 21
Primeiro Programa
Tradicionalmente, em programo, iniciamos escrevendo uma mensagem na tela.
A mensagem mais usada Hello World!. Nesse primeiro exemplo ser mostrado a
Mensagem Ola Mundo LEGO. Siga os passos:
1. Arraste o bloco Display para rea de trabalho do NXT-G.
2. No Painel de confgurao, em Action, selecione Text.
3. Em Simple Text, Escreva a mensagem Ola Mundo LEGO.
4. Use os campos X, Y, e Line no canto inferior direito para posicionar a mensagem
na tela conforme desejar. A fgura 2.7 mostra o resultado das confguraes at
aqui.
5. Adicione o bloco Wait e confgure para esperar dois segundos conforme a fgura
2.5 e 2.6.
Figura 2.5: a)Primeiro programa- bloco Wait
Figura 2.6: b)Primeiro programa- bloco Wait
Figura 2.7: Primeiro programa
A fgura 2.7 mostra o resultado fnal do primeiro programa.
22 Captulo 2. Iniciando a Programao com NXT-G: Blocos Bsicos
Figura 2.8: Primeiro programa
Mostrando desenhos na tela
Alm de texto o NXT tem recursos para mostrar desenhos e imagens na tela. Os
exemplos seguem com o bloco Display mostrar apenas a imagem das confguraes
usadas. Para mostrar desenhos na tela vejas as fguras 2.7 e 2.8 que mostra um linha e
um crculo na tela respectivamente.
Figura 2.9: desenhando uma linha na tela com o bloco Diplay
Figura 2.10: desenhando um crculo na tela com o bloco Diplay
Mostrando imagens na tela
possvel tambm mostrar imagens na tela escolhendo entre uma coleo de imagens
disponveis para serem usadas. Para mostrar uma imagem personalizada na tela
preciso antes pass-las pelo editor de imagens do NXT-G. As imagem 2.11 mostra um
exemplo de confgurao para mostrar a imagem Boom na tela.
Figura 2.11: Mostrando imagem com o bloco Diplay
2.1. Bloco Display 23
Figura 2.12: Editando uma imagem Diplay
Para mostrar uma foto pessoal, primeiro preciso preparar a imagem com o editor
de imagens do NXT-G. Abaixo segue os passos numerados para editar sua imagem.
1. No canto superior esquerdo do programa do NXT, clique em Tools, em seguida
em Image Editor.
2. Na nova janela que aparecer conforme na fgura 2.13. Selecione Open para abrir
uma imagem para edio.
3. Aposio da imagemda imagempode ser alterada apenas clicando e arrastando-
a conforme desejar.
4. Clique em Edit Selected Image e ajuste a perfeio conforme desejar usando a
barra de controle deslizante conforme a fgura 2.12.
5. Outras Ferramentas de edio que podem ser utilizadas so mostradas lado
esquerdo.
6. E para fnalizar, clique em Save no canto inferior direito para savar sua nova
imagem conforme na fgura 2.13. Agora sua imagem poder ser encontrada na
lista de imagens do NXT-G. A fgura 2.14 mostra a incluso da imagem recm
editada no seu programa.
Figura 2.13: Editando imagem Diplay
24 Captulo 2. Iniciando a Programao com NXT-G: Blocos Bsicos
Figura 2.14: Editando imagem Diplay
2.2 Bloco Move
O bloco Move utilizado para fazer o rob se movimentar para frente, para trs, fazer
uma curva, etc. Embora, esse bloco, est relacionada a ao andar do rob, o
bloco responsvel por ligar o(s) motor(es), bem como confgurar outras propriedades
relacionadas a ao de movimento como a velocidade, o tempo e a direo. A direo
real em que o rob ir se movimentar, nem sempre ser a mesma do motor depende de
como seu rob foi montado mas, no caso da estrutura bsica que est sendo utilizada
nesse curso o rob vai deslocar para frente quando a seta do item indicar para cima.
Figura 2.15: Direo do Movimento
O cone do bloco de movimento representado pela fgura 2.16. Observe na
imagem os seguintes itens.
Figura 2.16: Bloco Move
1. As letras no canto superior direito indica as portas que esto conectados os
motores que esto sendo ligados.
2.2. Bloco Move 25
2. Esse cone mostra direo do movimento do motor. Os smbolos que repre-
sentam os movimentos esto relacionados com a direo que o rob est indo:
frente, trs, direita, esquerda. No entanto, representa literalmente o sentido
do movimento do motor, sentido horrio ou anti-horrio, velocidade maior
esquerda, velocidade maior direita.
3. Esse cone representa a potncia ou a velocidade que o motor est girando.
Figura 2.17: Bloco Move 2
Na fgura 2.17, observe:
1. Esse cone o estado em que os motores sero desligados.
A fgura 2.18 mostra o painel de confguraes das propriedades do bloco.
Figura 2.18: Painel de confguraes do bloco Move
As reas de confguraes esto numeradas no na imagem 2.18:
1. Port: essa a rea de portas. Como foi dito, anteriormente o kit Lego NXT 2.0
possui 3 servos-motores, bem como 3 portas para serem ligados ao bloco. (se
voc no se lembra volte na seo Conhecendo o Kit LEGOMindstorms NXT e
confra na fgura bloco). Basicamente nessa rea voc pode escolher qual motor
ou quais motores deseja ligar. Nesse exemplo os Motores que esto nas portas B
e C esto sendo ligados.
2. Direction: Contm as propriedades da direo do movimento do motor. Se
para frente (sentido horrio), ou para trs (sentido anti-horrio) ou pare, se for
selecionada a opo pare os motores sero desligados.
3. Stering: Se voc estiver usando dois motores para controlar um veculo poder
confgurar essas propriedades para fazer uma curva por exemplo. Para fazer o
efeito de uma curva preciso que os dois motores girememvelocidades, sentidos
ou direes diferentes. Numa curva no acentuada uma menor velocidade
26 Captulo 2. Iniciando a Programao com NXT-G: Blocos Bsicos
no lado para onde voc deseja que o rob vire pode ser sufciente. Porm,
numa situao extrema, como uma rotao no prprio eixo preciso manter a
mesma velocidade, porm em sentidos inversos. A barrinha de controle pode
ser deslocada para a direita ou para a esquerda de acordo com as necessidades.
4. Power: potncia ou a velocidade do movimento. Pode ser a velocidade varia de
0-100 onde o 0 a ausncia total de movimento e 100 representa a potncia ou a
velocidade mxima do movimento.
5. Duration: Nessa rea voc pode confgurar a durao do movimento. Durao
est diretamente relacionada com o tempo. Mas existem quatro tipos durao
que nem sempre est relacionada diretamente unidades de tempo mas indi-
retamente est. O primeiro tipo a durao infnita (Unlimited). O segundo
tipo dado em graus (Degrees). Para entender o conceito de graus preciso
observar a fgura 2.19. A fgura mostra uma circunferncia. Uma volta completa
na circunferncia soma-se 360, duas voltas completas so 2.360, trs voltas so
3.360 e assim sucessivamente. Embora essa medida foi associada apenas com
voltas completas na circunferncia, em alguns problemas exigem que ligamos
o motor para girar menos que uma volta completa comum utilizarmos 90,
180, etc. O terceiro tipo de medida de durao consiste em contar o nmero de
rotaes (Rotations ) um crculo completo do motor. Em alguns problemas
mais fexvel utilizar o nmero rotaes do motor para determinar a durao do
movimento trata-se de uma alternativa para evitar o uso do tempo porque, se
voc tiver trabalhando com um veculo, voc percebe que a distncia percorrida
pelo o seu veculo no ser a mesma para a mesma quantidade de tempo. Isso
ocorre porque a distncia percorrida est em funo do tempo e da velocidade.
E por ltimo a durao pode ser dada por tempo propriamente dito. Voc
poder escolher segundos (Seconds) para delimitar a quantidade de tempo do
movimento.
6. Next Action: Defne a prxima ao que dever tomar, como parar o rob
suavemente.
7. O bloquinho verde tem as trs portas com valor inicial zero. Serve basicamente
para mostrar o nmero de rotaes que o motor j realizou. Sendo importante
para mostrar a voc a hora de dar umreset nos valores para reiniciar a contagem.
Movimentando o rob
Segue alguns exemplo simples de tarefas que podem ser solucionadas com o esse bloco:
Exemplo
Faa seu Rob andar para frente durante 5 segundos com os motores B e C, depois
faa o rob andar 5 segundos para trs parando no ponto inicial. Para solucionar esse
2.3. Bloco Motor 27
Figura 2.19: Circunferncia
problema, vamos quebr-lo em duas tarefas menores. A primeira ser fazer o rob
andar para frente durante 5 segundos e a segunda ser fazer o rob andar para trs por
igual perodo como mostra a fgura 2.20. A confgurao do primeiro bloco ser de
acordo com a fgura 2.21 e a do segundo de acordo com a fgura 2.22.
Figura 2.20: Exemplo 1
Figura 2.21: Confguraes do primeiro bloco
2.3 Bloco Motor
O bloco Motor muito semelhante ao bloco Move, ambos tm a mesma fnalidade -
controlar os motores, diferindo apenas pelo fato de permite um controle mais preciso
sobre sobre a velocidade do motor. mais indicado para tarefas que exigemtal preciso,
28 Captulo 2. Iniciando a Programao com NXT-G: Blocos Bsicos
Figura 2.22: Confguraes do segundo bloco
por exemplo, pode utilizar para confgurar a velocidade para subir uma rampa outra
para descer. A fgura 2.23 mostra o painel de confguraes. Observe a numerao de
cada funcionalidade na imagem.
Figura 2.23: Confguraes do bloco Motor
3. Essa a principal caracterstica que difere o bloco Motor do Move. A possibili-
dade de confgurar uma velocidade constante, uma velocidade para subida outra
para descida de rampas.
2.4 Bloco Stop
O bloco Stop utilizado para parar quaisquer tarefas que esto sendo realizadas pelo
o NXT como motor, lmpadas, sensores, etc. A fgura 2.24 mostra o cone do bloco.
A fgura 2.25 mostra o painel de confguraes do bloco. O bloco Stop no possui
parmetros em seu painel de confguraes.
Figura 2.24: Confguraes do bloco Motor
2.5 Bloco Variable
Varivel uma posio reservada na memria do computador para armazenar um
valor que pode variar em tempo de execuo do programa. por exemplo, pode-se
2.5. Bloco Variable 29
Figura 2.25: Confguraes do bloco Motor
declarar uma varivel para armazenar umvalor que est sendo lido do sensor. Antes da
execuo no sabemos que valor esse e, na hora da execuo, pode variar de acordo
com o ambiente. No NXT, o bloco Variable utilizado para declarar variveis. A
fgura 2.26 mostra o cone desse bloco. Observe a numerao e acompanhe a legenda.
Figura 2.26: Confguraes do bloco Motor
1. A aba para conexes por fos de dados abre automaticamente. Atribuir uma
varivel a outro bloco signifca ligar um fo nessa sada e na entrada do outro
bloco.
Criando uma varivel
1. Para criar uma varivel o primeiro passo ir no Menu prinpcipal do sofware
NXT clicar em Edit Defne Variable. D um nome fcil e simples de lembrar
para sua varivel e, em seguida, escolha o tipo de dado entre Logic, Text ou
Number.
2. Arraste o bloco Variable para seu programa e selecione o nome dado a sua
varivel no passo anterior.
3. Escola uma das opes: ler (Read) ou escrever (Write. Escolha ler se deseja que
o valor da varivel seja lido de outro bloco. Nesse caso um fo de dado deve ser
plugado para fornecer a entrada. Escolha escreve caso deseje dar seu prprio
valor a varivel.
Confgurando o bloco Variable
Para confgurar o bloco Variable observe a fgura 2.27, a numerao e a legenda.
30 Captulo 2. Iniciando a Programao com NXT-G: Blocos Bsicos
Figura 2.27: Confguraes do bloco Motor
1. Na lista escolha o nome da varivel que voc criou no menu Edit Defne
Variable.
2. Escolha se a varivel ser utilizada para ler ou escrever dados.
3. Para confgurar a sua varivel com um valor constante, use esse campo para
determinar esse valor. No entanto conectando se um fo de dados no seu bloco
este ter precedncia.
2.6 Bloco Random
O bloco Random um utilizado para gerar um nmero aleatrio dentro de um deter-
minado intervalo. Por exemplo, no intervalo de 0 a 100, durante uma execuo pode
ser sorteados 25, na prxima 78, na seguinte 10 e assim sucessivamente. Obeserve a
fgura 2.28.
Figura 2.28: cone Random
1. A aba de conexes do bloco possui duas portas de entrada A, B e um porta
de sada representada pelo cone comum cerquilha. O bloco possui um valor
mnimo que marca o incio do intervalo e um valor mximo que marca o fm do
intervalo. As portas A e B sero utilizadas apenas se os valores que iro marcar
o incio e fm do intervalo vier de outros blocos. A porta de sada sempre ser
utilizada.
2.7. Bloco Number To Text 31
Confgurando o bloco Random
O painel de confguraes do bloco composta basicamente por dois parmetros
que delimitam o incio e o fm do intervalo. Esses valores podem ser informados
manualmente ou utilizanda a barra de controle deslizante posicionada abaixo dos
campos mnimo e mximo conforme inlustra a fgura 2.29.
Figura 2.29: cone Random
2.7 Bloco Number To Text
O bloco Number To Text utilizado para converter um valor numrico em um texto.
Muito utilizado quando se deseja ler dinmicamente o valor de um sensor e imprimir
na tela do NXT. O bloco pode ser conectado com o bloco Display usando um fo de
dados para mostrar o valor na tela. O cone do bloco mostrado na fgura 2.30. A
entrada um nmero a sada um texto.
Figura 2.30: cone do bloco Number To Text
Figura 2.31: cone do bloco Number To Text
CAPTULO 3
Sensores
Um sensor um dispositivo que responde a um estmulo fsico/qumico de maneira
especfca e mensurvel. O mundo est repleto de sensores, so comumente utilizados
na engenharia, e nos objetos que utilizamos. Exemplos simples e mais banais de
sensores: balana, termmetro, multmetro, RADAR, Leitor de cdigo de barras, etc.
Seres vivos tambm possuem sensores. Percebemos: luz, movimento, temperatura,
campos magnticos, gravidade, umidade, vibrao, presso, campos eltricos, som,
cheiro, gosto, toque, etc. O Kit LEGO NXT 2.0 possui 3 tipos de sensores externos:
Sensor de toque, sensor de distncia e sensor de luz/cor. No entanto existem ainda
os sensores internos como sensor de rotaes (conta-giros) e sensor de mensagens
Bluetooth.
3.1 Sensor Toque
Touch Sensor o bloco utilizado para controlar os eventos gerados pelo sensor de
toque. Como vimos anteriormente o sensor de toque possui dois estados. O sensor
de toque retorna para o programa valores lgicos, verdadeiro ou falso. Verdadeiro no
momento em que pressionado ou falso quando no est pressionado.
Figura 3.1: Bloco Touch Sensor
1. Mostra a porta em que o sensor est ligado
33
34 Captulo 3. Sensores
2. Mostrar os estados os eventos que se deseja monitorar. H trs tipos de eventos,
pressionado, colidido e liberado.
3. Nessa rea voc pode conectar o bloco para funcionar em conjunto com outro
bloco repassando informaes de status do sensor.
Confgurando o bloco Sensor de Toque
Figura 3.2: Painel de confguraes do Sensor de Toque
1. Escolha a porta emque o sensor de toque est ligado. Obloco vempr-confgurado
com o sensor de toque ligado a porta 1, mas voc poder alterar de acordo com
sua necessidade.
2. Escolha o tipo de evento entre os trs possveis. Pressionado (Pressed) libe-
rado (Released) ou colidido (Bumped). H uma diferena entre o colidido e o
pressionado. Ocolidido umtoque rpido e o pressionado umtoque contnuo.
3. Mostra o feedback dos valores que esto sendo lidos pelo sensor.
3.2 Sensor de Ultrassnico
Obloco Ultrassonic Sensor utilizado para monitorar o sensor ultrassnico. Osensor
ultrassnico utilizado para calcular a distncia entre o sensor e objetos posicionados
em sua frente. O cone do bloco o da fgura 3.3.
Figura 3.3: Bloco Ultrasonic Sensor
Observe na fgura 3.3:
3.3. Sensor de Cor 35
1. Mostra a porta onde o sensor est conectado.
2. Mostra uma escala da distncia em que o sensor est confgurado para disparar
eventos.
3. Essa rea, utilizada para fazer conexes com outros blocos. Por exemplo, se o
usurio deseja mostrar os dados que esto lidos do sensor na tela LCD do bloco,
dever fazer uma conexo aqui.
Confgurando o Sensor Ultrassnico
A fgura 3.4 mostra o painel de confguraes do Sensor Ultrassnico. Observe nessa
fgura os seguintes itens:
Figura 3.4: Painel de confraes do bloco Ultrasonic Sensor
1. Confgura a porta do onde o sensor est ligado ao bloco, por default a porta 4
vem pr-selecionada.
2. Use a barra de controle deslizante para confgurar o intervalo da distncia em
que deseja disparar eventos, e o use o Radio Box para selecionar para alternar o
operador lgico < ou >. Essas confguraes podem ser feitas manualmente os
campos abaixo.
3. Permite alternar o sistema de medida. Podendo optar por centmetros ou pole-
gadas.
4. Mostra o feedback dos valores que o sensor est lendo no momento.
3.3 Sensor de Cor
Modo Color Sensor
O sensor de cor utilizado para identifcar cores. A preciso no to boa e pode
ser ligeiramente infuenciada pela a iluminao do ambiente. Para garantir melhor
preciso, procure trabalhar com cores extremamente opostas ou diferentes, como por
exemplo, separar o preto do branco. O preto e o branco so as cores mais extremas
do sistema RGB. Trabalhar com cores muito prximas no sistema RGB exigem muita
36 Captulo 3. Sensores
Figura 3.5: Bloco Color Sensor
pacincia para recalibrar constantemente seu sensor. A fgura 3.5 mostra o cone do
Color Sensor que utilizado para monitorar o sensor de cor.
Na fgura 3.5 observe os seguintes tens:
1. Mostra a porta que o sensor est conectado. Por default a porta 3, mas voc
pode alterar de acordo com a sua necessidade.
2. cone indica que o sensor est confgurado para trabalha com modo cor.
3. Mostra uma aba que pode ser mostrada e ocultada. Serve para conectar com
outros blocos.
Confgurando o bloco Color Sensor no modo cor
O Sensor de Cor pode funcionar com o modo cor ou com o modo luz. Para o modo
cor a fgura 3.6 mostra as seguintes propriedades:
Figura 3.6: Painel de propriedades do bloco Color Sensor
1. Porta emque o sensor est conectado. por default a porta 3 vempr-confgurada
mas voc poder selecionar outra conforme desejar.
2. Permite selecionar o modo do sensor cor ou luz.
3. Selecione
4. Controle deslizante para a seleo da cor desejada
3.3. Sensor de Cor 37
Modo Light Sensor
Uma alternativa para para utilizar o sensor de cor escolher o modo Luz. O cone
mostrado na fgura 3.7 aparecer automaticamente assim que voc opta pelo o modo
Luz. Observe na fgura os seguintes itens:
Figura 3.7: Bloco Color Sensor Modo Luz
1. O nmero 3 no canto superior direito mostra a porta em que o sensor est
conectado ao bloco NXT.
2. Esse cone mostra a cor que foi selecionada no painel de confguraes para ser
projetas. As trs opces de cores so vermleho, verde e azul (RGB - Red, Green,
Blue).
3. Esse cone mostra o nvel para qual o ponto de disparo de evento est defnido.
O nvel n ser 0 < n > 100. E 0 e 100 so os extremos.
4. Essa aba ir abrir automaticamente quando o bloco colocado na rea de traba-
lho no modo sensor de luz.
Confgurando o bloco Color Sensor no modo luz
Observe no painel de confguraes, fgura 3.8, do Sensor para o modo Luz os seguintes
itens:
Figura 3.8: Painel de confguraes do bloco Color Sensor Modo Luz
1. Use a barra de controle deslizante para defnir, ou informe manuamente na caixa
de entrada ao lado, o valor para qual deseja disparar evento. Marque o radio box
da esquerda ou da direita para alternar entre os operadores relacionais < ou
>.
38 Captulo 3. Sensores
2. Escolha a cor da luz a ser projetada entre as trs opes do RGB. Deixe o campo
Light desmarcado se deseja medir a intensidade da luz do ambiente.
3. Nessa rea o bloco Color Sensor mostra o feedback dos valores que esto sendo
lidos no sensor. Esse valor varia de 0 a 100.
CAPTULO 4
Blocos Controladores de Fluxos
4.1 Bloco Wait
O bloco Wait utilizado para esperar por determinada condio acontea. A condio
pode ser esperar um perodo de tempo ou esperar por um evento de sensor. No
caso de evento de sensor existem diferentes tipos de sensores que que mostram uma
quantidade de graus ou rotaes do motor que est sendo monitorado. A fgura 4.1
mostra o cone que representa o bloco Wait. Observe nessa fgura os seguintes itens:
Figura 4.1: cone do bloco Wait
1. O nmero ou a letra que aparece esse local indica a porta que est sendo moni-
torada.
2. Caso voc tenha escolhido sensor de luz, sensor de som, sensor de cor, ou sensor
ultrassnico esse cone representa o nvel limite para que o evento seja disparado.
Se voc optou esperar por um sensor de toque o cone mostrar os smbolos
representante de estados pressionados colididos ou liberado. Por exemplo, s
vezes, de acordo com a necessidade, voc poder esperar o sensor de toque seja
liberado, quando se inicia pressionado.
Nesse exemplo (fgura 4.1), o bloco Wait est confgurado para esperar por evento de
sensor do tipo sensor de toque que est ligado na porta 1.
39
40 Captulo 4. Blocos Controladores de Fluxos
Confgurando o bloco Wait para esperar por tempo
Selecione, no painel de confguraes, a opo Time. Essa opo esperar por um
tempo dado em segundo para avanar para execuo do prximo bloco. Observe na
fgura 4.2 os itens:
Figura 4.2: Esperando por tempo com o bloco Wait
1. Nesse campo voc vai colocar a quantidade segundos que deseja que seu bloco
espere para passar para prximo bloco.
No exemplo da fgura 4.3, o programa vai sequir em frente at completar 20 segundos.
Figura 4.3: Exemplo esperando por tempo
Confgurado o Bloco Wait para Esperar por Sensor de Toque
J falamos sobre os principais sensores nos captulos anteriores, portanto, se voc
no assimilou bem a parte de sensores, recomendado que voc volte aos captulos
anteriores para ver mais a fundo essas funcionalidades aps aprender sobre sensores.
Para confgurar seu bloco Wait para monitorar um sensor de toque, voc precisa
selecionar em Control, a opo Sensor e em Sensor, a opo Touch Sensor conforme
mostra a imagem 4.4.
1. Nesse espao voc ir selecionar a porta em que o sensor est conectado.
2. Selecione o tipo de evento esperado. Existem trs tipos de eventos que pode
acontecer com o sensor de toque que so:
4.1. Bloco Wait 41
Figura 4.4: Esperando por sensor de toque com o bloco Wait
a) Pressed quando o sensor permanecer pressionado.
b) Released quando o sensor for liberado.
c) Bumped quando o sensor colidir.
Os evento pressionados e colididos parecem ser os mesmos, no entanto, h
uma diferena. Colidir um pressionado rapidamente, pressionado quando
permanece pressionado por um perodo de tempo maior. E a pergunta que fca
quando utilizo o pressionado e quando utilizo o colidido, o pressionado ou
liberado. A resposta depende do problema. Um exemplo de uso do evento de
coliso quando voc possui umveculo e deseja que ele desvie de obstculos no
ambiente. Umexemplo que usa o eventos pressionados e liberados, suponha que
voc possui rob qualquer e deseja utilizar o sensor como boto de liga/desliga.
Enquanto pressionado os motores iro girar, por exemplo, quando o boto for
liberado o motor desligado.
3. Mostrar o feedback (resultado) do estado do sensor quando o sensor est conec-
tado e ativado o nmero 1 ir aparecer aqui.
No exemplo da fgura 4.5, o programa vai sequir em frente at o sensor de toque
ser pressionado.
Figura 4.5: Exemplo esperando pelo sensor de toque
42 Captulo 4. Blocos Controladores de Fluxos
Confgurado o bloco Wait para esperar por ultrassnico
Para que o bloco wait Espere por um sensor de luz selecione, em Control, Sensor e no
campo Sensor escolha Ultrasonic Sensor conforme mostra a imagem 4.6.
Figura 4.6: Esperando por sensor ultrassnico com o bloco Wait
1. Porta em que o sensor Ultrassnico est conectado.
2. No barra de controle deslizante escolha as os intervalos para disparar eventos.
As opes de distncia como os operadores delimitadores podem ser alterados
manualmente. A distncia retornada um valor inteiro positivo de 0 a 100
centmetros ou 0 a 54 polegadas.
3. Essa opo permite voc selecionar se a distncia retornada ser em centmetros
(Centimeters) ou polegadas (Inches).
4. Esse campo de feedback mostra os valores que esto sendo lidos pelo sensor.
No exemplo da fgura 4.7, o programa vai sequir em frente at que a distncia de
objetos posicionado em sua frente seja menor que 20 centmetros.
Figura 4.7: Exemplo por sensor de distncia
Confgurando o bloco Wait para esperar por sensor de cor
Para confgurar o bloco Wait para esperar por um sensor de cor selecione, emControl,
Sensor e no campo Sensor escolha Color Sensor conforme mostra a imagem 4.8.
4.1. Bloco Wait 43
Figura 4.8: Esperando por sensor de cor com o bloco Wait
1. Selecione a porta que o sensor est ligado.
2. As opes sensor de cor ou luz.
3. Barra de controle deslizante permite selecionar a cor que deseja monitorar.
4. Mostrar o feedback com o valor retornado pela a leitura do sensor.
No exemplo da fgura 4.9, o programa vai sequir emfrente at o sensor cor encontre
a cor preta.
Figura 4.9: Exemplo sensor de cor
Confgurado o bloco Wait para esperar por sensor luz
O kit LEGO Mindstorms NXT 2.0 no inclui sensor de luminosidade, no entanto,
possvel adquirir o sensor separadamente e usar normalmente. ou ainda, possvel
utilizar o sensor de cor para funcionar no modo sensor de Luz. Para que o bloco wait
Espere por umsensor de luz selecione, emControl, Sensor e no campo Sensor escolha
Light Sensor conforme mostra a imagem 4.10.
1. Selecione a porta do onde o sensor est conectado. Por default a porta 3 inicia
selecionada. Mas voc pode escolher livremente a porta que desejar.
2. Na barra de controle deslizante, escolha a intensidade da luminosidade que
pode ser de 0 a 100, onde 0 corresponde a ausncia total de luminosidade e
100 muito iluminado. Voc tambm pode escolher a faixa de valores maior
44 Captulo 4. Blocos Controladores de Fluxos
Figura 4.10: Esperando por sensor de luz com o bloco Wait
ou menor que uma certa intensidade. Ou, se preferir poder realizar todas as
confgurao manualmente selecionando o operador de comparao maior ou
menor e informar a intensidade desejada no campo ao lado onde est o valor 50.
3. Se voc marcar a opo generate light o sensor vai projetar uma pequena fonte
de sobre uma superfcie e medir a intensidade da luz refetida a ele.
4. Esse campo retorna a intensidade da luz, em porcentagem de 0 a 100%, que est
sendo lida pelo o sensor.
No exemplo da fgura 4.11, o programa vai sequir em frente at que a intesidade
da luz ambiente seja menor que 28.
Figura 4.11: Exemplo sensor de luz
Confgurado o bloco Wait para esperar por evento de boto
Parece no existir muita utilidade em usar esse bloco para esperar por eventos de
botes. No entanto, existem situaes em que essa funcionalidade til. Por exemplo,
suponha que voc precise juntar mais de umkit LEGOe montar umveculo controlado
por controle remote. Um dos blocos voc pode usar para movimentar o veculo o
outro para control-lo. Para confgurar o bloco Wait para esperar por eventos de boto
selecione, em Control, Sensor e no campo Sensor escolha NXT Buttons conforme
mostra a imagem 4.12.
1. Selecione o boto desejado entre as opes Enter Button (boto do meio) Lef
Button (boto esquerdo) ou Right Button (boto direito).
4.1. Bloco Wait 45
Figura 4.12: Esperando por eventos de botes Wait
2. Selecione o tipo de evento. Pressed, Released ou Bumped para pressionado,
liberado clicado respectivamente.
No exemplo da fgura 4.13, o programa vai sequir em frente at o boto Enter
pressionado.
Figura 4.13: Exemplo por evento de boto
Confgurado o bloco Wait para esperar por quantidade de rotaes ou
graus
Para confgurar o bloco Wait para esperar por uma quantidade de rotaes ou graus
selecione, em control, Sensor e no campo Sensor escolha Rotation Sensor conforme
mostra a imagem 4.14.
Figura 4.14: Esperando rotaes com Wait
1. Selecione a porta do motor que deseja monitorar.
46 Captulo 4. Blocos Controladores de Fluxos
2. Selecione a direo que o motor girando para frente ou para trs a condio
de parada.
3. Selecione Degrees para graus e Rotation para rotao.
4. Informe a quantidade rotaes ou graus que deseja atingir.
5. Mostra o retorno dos valores que esto sendo lidos. Para reiniciar a contagem
selecione em Action a opo Reset.
No exemplos das fguras 4.15 e 4.16 os programas vo sequir em frente at que seja
completadas 10 voltas completas no motor, medidas em graus e rotaes respectiva-
mente.
Figura 4.15: Exemplo esperando por sensor de rotaes 1
Figura 4.16: Exemplo esperando por sensor de rotaes 2
Confgurando o bloco Wait para esperar por sensor de tempo
A espera por tempo parece est repetida, mas h duas formas de esperar por tempo. A
primeira delas j foi vista no inicio da do captulo na seo 4.1. Acontece que aquela
forma de esperar por um tempo feita de forma exclusiva, ou seja, voc no consegue
fazer outra coisa enquanto espera por um determinado perodo de tempo. Essa tcnica
4.1. Bloco Wait 47
quantitativa e concorrente, ou seja, voc estar contando o tempo, durante esse
intervalo voc pode fazer muitas tarefas como dar sequncia as iteraes de lao. Para
confgurar o bloco Wait para esperar por um tempo selecione, em Control, a opo
Sensor e no campo Sensor escolha Timer conforme mostra a imagem 4.17.
Figura 4.17: Esperando por sensor de tempo com bloco Wait
No exemplo da fgura 4.18, o programa vai sequir em frente at que complete 5
segundos.
Figura 4.18: Exemplo esperando por sensor de tempo
Confgurado o bloco Wait para esperar por sensor Bluetooth
Receive Message e !Receive Messages
Esse bloco utilizado para comunicao Bluetooth entre dois ou mais kits NXT.
Essas duas opes tm funes inversas. Use Receive Message quanto deseja que a
mensagem informada no campo 2 seja igual a mensagem recebida. Enquanto o uso de
!Receive Message, para quando se deseja que a mensagem informada no campo 2
seja diferente da mensagem recebida As fguras 4.19 e 4.24 mostram essas duas opes
respectivamente.
No exemplo da fgura 4.21, o programa vai seguir em frente at que que o sensor
de mensagens bluetooth receba a palavra pare.
Confgurando o bloco Wait para esperar por demais tipos de sensores
Ao todo so 11 opes de sensores que bloco Wait pode ser confgurado para esperar,
nem todos eles foram detalhados aqui, no entanto, as imagens com todas as opes
48 Captulo 4. Blocos Controladores de Fluxos
Figura 4.19: Esperando por sensor de Bluetooth com Wait - Receive Message
Figura 4.20: Esperando por sensor de Bluetooth com Wait - !Receive Message
Figura 4.21: Exemplo esperando por mensagem de bluetooth
que faltam sero colocadas aqui. Para utiliz-los muito intuitivo.
Esperar por sensor de som
O kit LEGO Mindstorms NXT 2.0 no inclui um sensor de som, mas interessante
falar sobre ele aqui, ao longo desse trabalho no ser utilizado em nenhum exerccio.
Para colocar o bloco Wait para esperar por um evento de som, em Control, selecione a
opo Sensor e em Sensor, a opo Sound Sensor conforme mostra a imagem 4.22.
Figura 4.22: Esperando por sensor de som com bloco Wait
4.1. Bloco Wait 49
1. Selecione a porta que o sensor est conectado.
2. Use o controle deslizante para selecionar a intensidade do sompara o qual deseja
disparar o evento.
3. Mostra se o sensor est conectado e funcionando normalmente. Se estiver tudo
certo quando NTX estiver conectar o 1 aparecer para representar o estado
ligado.
No exemplo da fgura 4.21, o programa vai seguir em frente at que a intensidade
sonora do ambiente medida no sensor seja maior que 30.
Figura 4.23: Exemplo esperando por sensor de som
Esperar por sensor de temperatura
O NXT no inclui um sensor de temperatura, no entanto voc pode adquiri-lo sepa-
radamente. Essa opo coloca o bloco Wait para esperar por sensor de temperatura.
Figura 4.24: Esperando por sensor de temperatura com bloco Wait
1. Escolha a porta em que o sensor de temperatura est plugado no bloco NXT,
por default a porta 4.
2. Use o controle deslizante para ajustar o valor de disparo de eventos ou informe
manualmente na caixa de texto abaixo. O radio box nos lados direito e esquerdo
permite alternar a entre os operadores relacionais < e >.
50 Captulo 4. Blocos Controladores de Fluxos
3. Selecione o sistema de medida Celsius ou Fahrenheit.
4. Mostra o feedback dos valores que esto sendo lidos pelo sensor.
4.2 Bloco Switch
Use esse bloco utilizado para fazer uma escolha entre uma sequncia de cdigos. Uma
escolha pode ser gerada a partir de um determinado valor de entrada. por exemplo
quando o bloco confgurado com o sensor de toque. H dois estados ou duas opes
possveis. Quando o Sensor est pressionado e quando o sensor no est pressionado.
Nesse caso, a escolha feita entre uma sequncia de duas opies. No entanto, o bloco
pode funcionar com n opes. A imagem 4.25 mostra os principais elementos do
bloco. Observe a numerao e siga a descrio de cada propriedade na lista enumerada
a sequir.
Figura 4.25: Bloco Switch
1. Esse cone indica a fonte que gera a sequncia de valores entre os quais ser
escolhido um por vez. Nesse caso, mostra o sensor de toque. Como Esse sensor
possui apenas dois estados (pressionado e no pressionado), s existem duas
alternativas de desvios de fuxos.
2. Essa sequncia de cdigo ser executada caso o sensor de toque seja precionado.
Os blocos dessa sequncia liga o motor que est na porta A e em seguida executa
um som.
3. Essa sequncia de cdigo ser executada se caso o sensor no seja precionado.
1. Na fgura 4.26, caso voc confgurou o seu bloco para um valor vindo de uma
varivel ou de outro bloco voc dever plugar o fo vindo do outro bloco nessa
porta.
4.2. Bloco Switch 51
Figura 4.26: Bloco Switch com fos de dados
Confgurando o bloco Switch com valores de variveis
Em Control voc encontra duas opes, Value ou Sensor, caso voc opte por Value,
esse valor pode ser lgico, numrico ou de texto que deve vim de outro bloco a ser
conectada na porta de entrada do bloco switch. Importante se voc escolheu valor
lgico o seu bloco que ir enviar a sequncia de valores (verdadeiro/falso) deve ser do
tipo lgico. Se numrico ou de texto segue a mesma lgica. Observe as imagens 4.27 e
4.28 para melhor compreenso de suas propriedades.
Figura 4.27: Bloco Switch com fos de dados
Nas Figuras 4.29 e 4.30 observe a numerao:
1. Esse campo mostra o tipo de entrada detectada pelo bloco.
2. Desmarcando esse CheckBox possvel aumentar o nmero de alternativas.
Veja na sequncia de imagens 4.31, 4.32, 4.33, 4.35, onde gerado um nmero
aleatrio salvo em uma varivel numrica que colocada como entrada para o
bloco Switch.
52 Captulo 4. Blocos Controladores de Fluxos
Figura 4.28: Bloco Switch mtiplas opes 1
Figura 4.29: Bloco Switch com opo Values 1
Figura 4.30: Bloco Switch com opo Values 2
Na fgura 4.31, caso o valor de entrada do bloco Switch seja 0, ento liga os
motores B e C.
Na fgura 4.32, caso o valor de entrada do bloco Switch seja 1, execute um som.
Na fgura 4.33, caso o valor de entrada do bloco Switch seja 2, ento mostra uma
imagem na tela.
Na fgura 4.35, caso o valor de entrada do bloco Switch seja 3, ento mostra uma
mensagem de texto na tela.
Na fgura 4.35, caso o valor de entrada do bloco Switch seja 3, ento Pare.
3. Cada linha na tabela representa um opo para o Bloco Switch, a marcada
sinaliza a opo default.
4.2. Bloco Switch 53
Figura 4.31: Bloco Switch mtiplas opes 1
Figura 4.32: Bloco Switch mtiplas opes 2
Figura 4.33: Bloco Switch mtiplas opes 3
4. Essa caixa de texto possui duas funcionalidades. Se voc estiver utilizando valores
lgicos esse campo servir para alternar entre uma das opes True/False. Caso
seja uma varivel numrica servir para incluir valores na tabela de opes.
5. Esses botes + e - permitem adicionar e remover opes respectivamente.
6. O boto com o * serve para marcar a opo default.
Confgurando o bloco Switch com sensor de toque
O sensor de toque a opo default para o bloco Switch. Observe a fgura 4.36.
1. Desmarcando esse checkbox o layout do bloco alterado para o modo tabulado.
54 Captulo 4. Blocos Controladores de Fluxos
Figura 4.34: Bloco Switch 4
Figura 4.35: Bloco Switch 5
Figura 4.36: Bloco Switch com sensor de toque
2. escolha a porta em que o sensor de toque est plugado. Por default a porta
pr-confgurada a porta 1, mas voc poder alterar conforme necessitar.
3. Nesse campo, permite selecionar o tipo de ao (pressionado/liberado/colidido)
para a qual deseja disparar eventos.
Confgurando o bloco Switch com o sensor ultrassnico
Na fgura, observe a numerao para se orientar em cada propriedade.
1. Desmarcando esse checkbox o layout do bloco alterado para o modo tabulado.
2. escolha a porta em que o sensor ultrassnico est plugado. Por default a porta
pr-confgurada a porta 4, mas voc poder alterar conforme necessitar.
4.2. Bloco Switch 55
Figura 4.37: Bloco Switch com sensor utrassnico
3. A barra de controle deslizante serve para defnir a faixa de valores de cada opo
e controlar os sinais > e <. Essa tarefa tambmpode ser realizada informando
os valores manualmente nos respectivos campos abaixo.
4. mostra o feedback dos valores que esto sendo lidos pelo sensor.
Confgurando o bloco Switch com sensor de luz
Observe na fgura 4.38 a seguinte enumerao de parmetros.
Figura 4.38: Bloco Switch com sensor de luz
1. Semelhantemente como mostrado nos para os sensores acima, desmarcando
esse checkbox o layout do bloco alterado para o modo tabulado.
2. escolha a porta emque o sensor est plugado. Por default a porta pr-confgurada
a porta 3, mas voc poder alterar conforme necessitar.
3. Use a barra de controle deslizante serve para defnir a faixa de valores de cada
opo e controlar os sinais > e <. Essa tarefa tambm pode ser realizada
informando os valores manualmente nos respectivos campos abaixo.
4. Se voc marcar a checkbox Generate Light o sensor ir projetar um pequeno
feixe de luz em direo ao objeto e medir a luminosidade utilizando a taxa de
refexo.
5. Mostra o feedback dos valores que esto sendo lidos pelo o sensor.
56 Captulo 4. Blocos Controladores de Fluxos
Confgurando o bloco Switch sensor de cor
A confgurao do Bloco Switch com o sensor de cor semelhante ao sensor de
luz.
Figura 4.39: Bloco Switch com sensor de cor
Confgurando o bloco Switch demais sensores
Confgurar o bloco Switch os demais sensores uma tarefa bastante intuitiva e
semelhante aos sensores j demostrados acima.
Sensor de Rotaes
conforme mostra a fgura 4.40.
Figura 4.40: Bloco Switch com sensor de rotaes
Botes do NXT
conforme mostra a fgura 4.41.
Figura 4.41: Bloco Switch com botes
4.3. Bloco Compare 57
Mensagens de bluetooth
conforme mostra a fgura 4.42.
Figura 4.42: Bloco Switch com sensor bluetooth
Sensor de Tempo
conforme mostra a fgura 4.43.
Figura 4.43: Bloco Switch com sensor de tempo
4.3 Bloco Compare
Obloco Compare utilizado para compara dois valores numrios, a fgura 4.44 mostra
o cone desse bloco.
Figura 4.44: Bloco Compare
1. O bloco possui duas portas de entrada por onde deve entrados os valore A e
B que sero comparados. O bloco tambm possui uma porta de sada para o
resultado da operao.
58 Captulo 4. Blocos Controladores de Fluxos
Figura 4.45: Painel de confguraes do bloco Compare
Na imagem 4.45, observe:
1. Pode informar os valores a ser comparados caso esses valores no estejamvindos
de outros blocos. Caso tenha um fo plugado esse tem a precedncia.
2. Permite selecionar o operador relacional a ser utilizado podendo ser <, > ou
=. O resultado dessa operao um valor lgico verdadeiro ou falso que ser
repassado a outro bloco para processamento
O exemplo na fgura 4.46 mostra a comparao entre o valor lido de um sensor
ultrassnico que est espetado na porta 4 do bloco NXT e outro sensor ultrassnico
ligado na porta 3, resultado da operao passado ao bloco Switch. No bloco Switch,
caso o resultado seja verdadeiro, os motores B e C sero ligados para girar na direo
frente. Caso seja falso, os motores B e C sero ligados para girar na direo trs.
Figura 4.46: Exemplo de uso do bloco Compare
CAPTULO 5
Laos
O bloco Loop utilizado para repetir uma sequncia de cdigo. H situaes em
que um mesmo cdigo precisa ser repetido diversas vezes. Seria intil e impossvel
solucionar certos problemas sem os laos de repeties na programao. Voc poder
defnir uma condio de parada. A condio de parada pode ser um nmero de
repeties, um sinal lgico ou eventos de sensores. A fgura 5.1 mostra o cone que
representa o bloco Loop. Um programa sem lao de repetio muito limitado, sem
utilizar esse recurso, a maioria dos problemas no teria soluo. laos existem em
todos os programas atuais que voc conhece e utiliza. Nesse captulo voc usuar todos
os conhecimentos adquiridos at aqui. Conhecendo se os laos de repetio voc ter
conhecimento sufciente para criar cdigos mais roubustos.
Figura 5.1: cone do bloco Loop
1. Esse cone mostra a condio de parada. Existem quatro opes de condies
de parada. Forever, Sensor, Time, Count e Logic em portugus Sempre, Sensor
Tempo, Contador, Lgica respectivamente. De acordo com a opo escolhido o
cone ir mudar. Por default o bloco Loop vemconfgurado para repetir infnitas
vezes. O smbolo de infnito est sendo mostrado conforme a imagem acima.
Voc poder inserir quantos blocos quiser dentro do lao, tudo o que estiver
dentro do lao ser repetido at que a determinada condi co de parada acontea.
O exemplo de cdigo da fgura 5.2, mostra um lao com a condio de parada um
sensor de luz.
59
60 Captulo 5. Laos
Figura 5.2: Exemplo com bloco Loop
5.1 Parando o lao com o sensor de toque
No exemplo da fgura 5.3, o programa mostra uma sequncia de imagens com um
intervalo de um segundo entre elas at que o sensor de toque seja pressionado.
Figura 5.3: Exemplo parando o lao com sensor de toque
5.2 Parando o lao com o sensor de ultrassnico
No exemplo da fgura 5.4, o programa vai executar uma sequncia de sons esperando
um tempo de um segundo para executar o prximo som parando quando sensor
utrassnico leia uma distncia menor que 20 centmetros.
Figura 5.4: Exemplo parando o lao com o sensor ultrassnico
5.3. Parando o lao com o sensor de cor 61
5.3 Parando o lao com o sensor de cor
No exemplo da fgura 5.5, o programa vai ligar os motores B e C fazendo o seu rob
deslocar para frente at o sensor de color encontrar a cor preta.
Figura 5.5: Exemplo parando o lao com sensor de cor
5.4 Parando o lao usando contador
No exemplo da fgura 5.5, o programa vai mostrar uma sequncia de imagens at
repetir dez vezes. Ateno para realizar esse exemplo precisa defnir a durao de um
segundo ou mais no bloco que liga os motores. Se for prefervel defna sua prpria
varivel contadora ao fnal de cada iterao soma o valor dessa varivel com mais 1.
Para usar sua prpria varivel marque a opo Counter no painel de confguraes do
programa, um conctor para um fo de entrada aparecer automaticamente no incio do
seu lao. Conecte um fo vindo vindo da sua varivel contadora nessa entrada.
Figura 5.6: Exemplo parando o lao contador
62 Captulo 5. Laos
Figura 5.7: Problema 1
5.5 Solucionando o problema incial usando lao infnito
Agora voc j possui o conhecimento necessrio para encontrar soluo a problema.
Para resolver esse problema precisamos considerar suas partes. O ojetivo construir
um rob que segue em frente mudando de direo sempre que encontrar um objeto
em sua frente.
1. O Rob vai seguir em frente sempre que no estiver objetos em sua frente.
Precisa-se de um lao ento arraste o bloco Loop para seu programa e confgura
para executar sempre conforme a fgura 5.8.
Figura 5.8: Painel de confguraes do bloco Loop
A soluo completa est na fgura ??
2. Se encontrar objeto na frente o programa deve ser capaz de perceber objetos
que esteja em sua frente. A prxima ao depende da dessa. Nessa precisamos
de um Sensor de distncia, mas no inseria ainda um sensor de distncia em
seu programa. Pule para o prximo passo.
3. Se tiver o objeto ento Pare os motores. Precisa-se tomar deciso beseada
no sensor de distncia. Ento arraste o bloco Switch para o seu programa.
posicione-o dentro do lao. confgure conforme a imagem a 5.9.
5.5. Solucionando o problema incial usando lao infnito 63
Figura 5.9: Painel de confguraes do bloco Switch
4. Mude a direo para a esquerda ou para a direita decidir para que lado virar.
Temos uma nova deciso para que lado virar. Foi utilizado o bloco Random
para sortear o lado para o qual virar. O bloco est confgurado conforme a fgura
5.10 no intervalo de 0 a 2. O resultado do bloco fornecido o bloco Switch
que decide o lado para qual virar. A confgurao do bloco Switch interno
mostrado na fgura 5.11. Se for sorteado 0 o rob mover a direo esquerda,
caso seja sorteado 1 o rob mover a direo direita conforme as fguras 5.15 e
5.15.
Figura 5.10: Painel de confguraes do bloco Random
Figura 5.11: Painel de confguraes do bloco Switch interno
Figura 5.12: Bloco Switch interno
64 Captulo 5. Laos
Figura 5.13: Painel de confguraes do bloco Move - curva direita
Figura 5.14: Painel de confguraes do bloco Move - curva esquerda
5. siga em frente se no encontrar objetos. A fgura5.13 mostra a confgurao do
Move para seguir em frente.
Figura 5.15: Painel de confguraes do bloco Move que segue reto
5.5. Solucionando o problema incial usando lao infnito 65
Figura 5.16: Soluo viso 1
66 Captulo 5. Laos
Figura 5.17: Soluo viso 2
Referncias
COSSOLINO, L. C., PEREIRA, A. H. Mdulos elsticos: viso geral e mtodos de
caracterizao. ATCP Engenharia Fsica. Disponvel em<http://www.atcp.com.br/ima-
gens/produtos/sonelastic/artigos/RT03-ATCP.pdf >. Acesso em 20 de Junho de 2014.
FORDJR, J. L. Lego Mindstorms NXT 2.0 for teens. Editora Cengage Learning. Boston.
2011.
NETO, A. Z. Robtica - Estudo de Peas e Componentes. Araatuba, Maro de 2008.
NUNES JNIOR, E. A., SILVA JNIOR, H. J. , BOUAS, M. V., SIQUEIRA, R. O.
Apostila de Robtica Educacional. Universidade Federal Fluminense. PET-Eltrica.
Niteri-RJ. 2013. Disponvel em: < http://www.peteletrica.u.br/wp-content/uplo-
ads/2013/08/Apostila-Rob%C3%B3tica-Educacional.pdf >. Acesso em 25 de Maio de
2014.
KELLY, J. F. LEGOMINDSTORMS NXT-GProgramming Guide. 2 Ed. Editora Apress.
2010.
STEMCENTRIC. NXT Tutorial. Disponvel em: <http://www.stemcentric.com/nxt-
tutorial/> . Acesso em 22 de abril de 2014
TERRY, G. Te Art of lego mindstorms NXT-G Programming. 2010.
WIKIPEDIA. Lego. Disponvel em: < http://pt.wikipedia.org/wiki/Lego> . Acesso em
15 de Maio de 2014.
67

Vous aimerez peut-être aussi