SlideShare uma empresa Scribd logo
1 de 83
Baixar para ler offline
Introdução à Programação
com Robôs Lego
Projeto Levando a Informática do
Campus ao Campo – Módulo III
Julho de 2010
Apoio:
Realização:
Departamento de
Ciência da Computação
Autores:
• Ana Paula Suzuki paullasuzuki@gmail.com
• André Reis de Geus geus.andre@gmail.com
• Gabriela Quirino Pereira gabiquirino@gmail.com
• Rayner de Melo Pires raynermp@gmail.com
• Salviano Ludgério Felipe Gomes salviano.lfg@gmail.com
Introdução à Programação com Robôs Lego está sob a
Licença Creative Commons Atribuição-Não a obras Derivadas.
SSUMÁRIOUMÁRIO
1 O que é o NXT?...............................................................................................................................4
2 Explicando o NXT...........................................................................................................................4
As portas de entrada e saída.......................................................................................................5
O visor.........................................................................................................................................6
O alto falante...............................................................................................................................6
Os botões de navegação .............................................................................................................6
3 Explicando os sensores....................................................................................................................7
Sensor de luz................................................................................................................................7
Sensor de toque...........................................................................................................................7
Sensor de Ultrassom ...................................................................................................................8
Sensor de Som.............................................................................................................................8
4 Explicando os Servomotores ..........................................................................................................9
Sensor de rotação embutido .......................................................................................................9
5 A montagem do nosso modelo......................................................................................................10
6 O que é programação?...................................................................................................................43
7 O que é lógica de programação?....................................................................................................44
8 O que é um algoritmo?..................................................................................................................44
9 Comandos de Controle..................................................................................................................44
Operadores Lógicos..................................................................................................................47
Operadores Relacionais............................................................................................................48
10 O que é entrada e saída de dados?...............................................................................................49
11 O software....................................................................................................................................51
Transferindo um programa para o NXT ...................................................................................53
Paleta Padrão (Common Pallete).............................................................................................55
Paleta Completa (Complete Pallete).........................................................................................69
Paleta Personalizada (Custom Pallete) ...................................................................................79
12 Referências..................................................................................................................................82
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
O que é o NXT?O que é o NXT?
O Lego Mindstorms NXT mais se parece com um brinquedo, e é utilizado amplamente em
todo o mundo por escolas, universidades, e mesmo por crianças.
Na verdade ele é um kit de robô programável, voltado para a educação tecnológica1
, lançado
pela Lego em Julho de 2006, substituindo a primeira geração do kit Lego Mindstorms. O nosso kit é
o Kit Base 9797 e é composto por 431 peças: 3 servomotores2
, 4 sensores (toque, som, luz e
ultrassom), 7 cabos para conexões com motores e sensores, um cabo para interface USB, o Brick
Inteligente NXT, que é o corpo central do robô, bateria recarregável, base giratória, rodinhas com
pneus e várias peças conhecidas como Lego Technic, como blocos, vigas, eixos, rodas, engrenagens
e polias.
O Brick NXT (em português, tijolo) é o cérebro dessas pequenas máquinas. Ele viabiliza
autonomia na execução de diferentes tarefas tais como a criação, programação e montagem de
robôs com noções de distância, capazes de reagir a movimentos, ruídos e cores3
, e de executar
movimentos com razoável grau de precisão. O kit também inclui o NXT-G, um ambiente de
programação gráfico que possibilita a criação e o download de programas para o NXT.
Os novos modelos permitem que se criem não apenas estruturas, mas também
comportamentos, permitindo a construção de modelos interativos, com os quais se pode aprender
conceitos básicos de ciência e de engenharia. Os empregos didáticos abrangem as áreas de robótica,
controle, automação, física, matemática, programação e projetos.
ExplicandoExplicando o NXTo NXT
1 O lema da Educação Tecnológica é preparar os estudantes para não serem apenas usuários de ferramentas
tecnológicas, mas capazes de criar, solucionar problemas e usar os tipos de tecnologia de forma racional, efetiva e
significativa.
2 Servomotor é uma máquina, mecânica ou eletromecânica, que apresenta movimento proporcional a um comando,
em vez de girar ou se mover livremente sem um controle mais efetivo de posição como a maioria dos motores.
3 Neste caso, para a percepção de cores é necessário a utilização do sensor de cores, que não acompanha o kit 9797.
44
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Como já foi dito, o Brick NXT é o corpo central do robô. Nele conectaremos cabos que vão
até os motores e cabos que vêm dos sensores. Ele será como o cérebro (e como o coração). Nele
está contido o processador, que receberá os programas que criaremos e então os interpretará
(executará) fazendo o robô montado ganhar movimentos.
Para facilitar a comunicação e melhorar a compreensão dessa apostila pelos leitores, aqui
vamos nos referenciar ao Brick NXT somente como NXT.
As portas de entrada e saídaAs portas de entrada e saída
Como mostrado na figura acima, o NXT possui três portas de saída (output), onde se
conectam os motores. Essas portas estão acima do visor (portas A, B e C). Abaixo dos botões estão
mais quatro portas, agora as de entrada (input), onde se conectam os sensores (portas 1, 2, 3 e 4). É
importante checar com atenção se os motores e sensores estão conectados corretamente pois eles
não são permutáveis.
A porta USB para comunicação com o software está próxima às portas de comunicação com
os motores. Através dela podemos instalar os programas do computador para o robô, e também
coletar dados do robô para o computador. Caso não queiramos fazer essa comunicação através de
fios, podemos utilizar o bluetooth, também disponível no NXT. Desse modo precisaremos do nome
do NXT, que é mostrado no visor.
55
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
O visorO visor
Na parte superior do visor, no canto esquerdo, vemos ícones que informam sobre o status e da
conexão bluetooth ou USB do robô. No canto direito vemos o ícone da bateria informando a carga
disponível.
Na parte de baixo do visor é mostrado os menus disponíveis no NXT.
O alto falanteO alto falante
O alto falante encontra-se na lateral direita do NXT.
Crie programas com sons reais e os ouça quando executar o programa.
Os botões de navegaçãoOs botões de navegação
O botão central - laranja - é a tecla Enter do robô. Ele também é usado para ligar o robô.
As setas direcionais - em cinza claro - são utilizadas para a navegação nos menus disponíveis
no visor.
O botão inferior - em cinza escuro - é utilizado para a navegação nos diferentes níveis dos
menus. Geralmente é utilizado como o botão Voltar. Também é usado para desligar o robô.
Faça você mesmo!
Com o NXT na mão veja como ele é ligado e desligado.
66
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
ExplicandoExplicando os sensoresos sensores
Os sensores biológicos do nosso corpo são células especializadas que são sensíveis a
temperatura, luminosidade, vibração, toxinas, hormônios, proteínas, entre outros. No caso dos
nossos robôs, podemos pegar a definição do dicionário:
"Designação comum de dispositivos elétricos, eletrônicos, mecânicos ou biológicos
capazes de responder a estímulos de natureza física (temperatura, pressão, umidade,
velocidade, aceleração, luminosidade e etc.). São utilizados em sistemas de controle e
monitoramento."
No nosso kit temos quatro sensores: o de luz, o de toque, o de ultrassom e o de som.
Vamos ver para que serve cada um?
SensorSensor de luzde luz
O sensor de luz é um dos dois sensores que dá visão ao robô (o sensor de
ultrassom é o outro). É ele que permite que o robô distingua entre claro e escuro
– branco e preto. Ele pode ler a intensidade de luz numa sala e pode medir a
intensidade de luz em superfícies coloridas.
Sugestões para uso
Você pode usar o sensor de luz para criar um robô alarme de assaltante: quando um intruso
entrar numa sala e acender a lâmpada o robô pode reagir e defender sua propriedade. Você também
pode usar o sensor de luz para criar um robô que segue linhas ou um robô que classifica coisas por
cores.
Detectando a luz ambiente
Teste a habilidade do sensor de luz em detectar a luz ambiente medindo os níveis de luz em
diferentes locais da sala. Por exemplo, aponte o sensor em direção à janela. Então aponte-o para
baixo da mesa. Veja como modificam as leituras.
Faça você mesmo!
Conecte o sensor ao NXT. Selecione no visor o submenu View. Selecione o ícone do sensor de
luz e a porta onde você o conectou, e pressione o botão Run (botão laranja). Agora aponte o sensor
para as diferentes cores disponíveis na folha de teste de cores. (Caso a sua apostila esteja em preto e
branco pergunte ao monitor sobre a folha de teste colorida).
Try me
O NXT vêm com a função Try Me. Conecte o sensor de luz à porta 3 do NXT e selecione o
menu "Try Me" no NXT para testar o sensor de luz. Você terá uma reação divertida.
SensorSensor de toquede toque
O sensor de toque concede ao robô o sentido do tato. Ele detecta quando o
botão do sensor está sendo pressionado, indicando que está em contato com
alguma coisa, e também quando ele é liberado.
77
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Sugestões para uso
Você pode usar o sensor de toque para fazer seu robô pegar coisas: um braço robótico
equipado com um sensor de toque permite o robô saber se há ou não alguma coisa em seu braço
para agarrar. Ou você pode fazer seu robô agir a um comando. Por exemplo, pressionando o botão
do sensor fazer o robô realizar alguma ação: andar, falar, fechar uma porta ou ligar sua TV.
Try me
O NXT vêm com a função Try Me. Conecte o sensor de toque à porta 1 do NXT e selecione o
menu "Try Me" no NXT para testar o sensor de toque. Você terá uma reação divertida.
SensorSensor de Ultrassomde Ultrassom
Permite que o robô "veja" e passe a detectar onde os objetos estão. Você
pode usá-lo para fazer o robô evitar obstáculos, detectar e medir a distância, e
detectar movimentos.
O sensor de ultrassom mede distâncias em centímetros e em polegadas. Ele é capaz de medir
distâncias de 0 a 255 centímetros com uma precisão de +/- 3 cm.
O sensor usa a mesma técnica que os morcegos usam: ele consegue medir a distância
calculando o tempo que leva para uma onda sonora bater em um objeto e retornar – como se fosse
um eco.
Objetos maiores com superfícies duras retornam melhores leituras. Enquanto que objetos
feitos de tecido macio ou que possuem curvas (como uma bola) ou que são muito finos e pequenos
podem ser difíceis para o sensor detectar.
* Dois ou mais sensores ultrassônicos atuando no mesmo espaço podem interromper uns aos
outros sua leitura.
Faça você mesmo!
Conecte o sensor de ultrassom ao NXT. Selecione no visor o submenu View. Selecione o ícone
do sensor de ultrassom e a porta onde você o conectou, e pressione o botão Run (botão laranja).
Para medir a distância de um objeto mova sua mão para perto do sensor e observe a mudança de
leitura no visor.
Try me
O NXT vêm com a função Try Me. Conecte o sensor de ultrassom à porta 4 do NXT e
selecione o menu "Try Me" no NXT para testar o sensor de ultrassom Você terá uma reação
divertida.
SensorSensor de Somde Som
O sensor de som faz com que seu robô ouça! O sensor de som pode detectar
tanto decibéis (dB) quanto decibel ajustado (dBA). Um decibel é uma medida da
pressão do som.
dBA: no modo dBA a sensibilidade do sensor de som é ajustada para a
88
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
sensibilidade dos ouvidos humanos. Em outras palavras, são os sons que os seus ouvidos são
capazes de ouvir.
dB: na medição de decibéis padrão (sem ajuste) todos os sons são medidos com a mesma
sensibilidade. Deste modo, estes sons podem ser muito altos ou muito baixos para serem ouvidos
por nossos ouvidos.
O sensor de som pode medir níveis de pressão de som de até 90 dB – o mesmo produzido por
uma roçadeira de gramas. Níveis de pressão sonora são muito complexos, então as leituras do
sensor de som são mostradas no visor em percentagens (%). Quanto menor for o valor, mais calmo
é o ambiente. Por exemplo:
4 - 5% - é como uma sala de estar silenciosa;
5 - 10% - seria como uma pessoa conversando um pouco distante;
10 - 30% - é como uma conversação normal próxima ao sensor, ou uma música tocando em
um volume normal;
30 - 100% - é como pessoas gritando ou uma música sendo tocada em volume alto.
Faça você mesmo!
Teste a habilidade do sensor de som:
Conecte o sensor de som no NXT; Selecione o submenu View no visor do NXT. Selecione o
ícone do sensor de som e a porta onde você o conectou. Faça alguns barulhos e veja as leituras no
visor. Use o sensor para medir sons próximos a você.
Que altura seus amigos falam? Quanto barulho faz o ar condicionado?
Try Me
O NXT vêm com a função Try Me. Conecte o sensor de som à porta 2 do NXT e selecione o
menu "Try Me" no NXT para testá-lo.
ExplicandoExplicando os Servomotoresos Servomotores
SensorSensor de rotação embutidode rotação embutido
Cada um dos três servomotores inclusos no kit possui um
sensor de rotação embutido em si. Isso permite que se possa
controlar os movimentos do robô com mais precisão. O sensor
de rotação mede as rotações do motor em graus, ou em voltas
completas (com a exatidão de +/- 1 grau). Uma volta equivale a
360º, então se você define um motor para rodar 180º seu eixo de
saída rodará meia volta.
O sensor de rotação embutido em cada motor também lhe permite definir velocidades
diferentes para seus motores (definindo parâmetros de força diferentes no software).
* Tente rodar os motores em velocidades diferentes.
99
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Faça você mesmo!
Teste a capacidade do sensor de rotação embutido em medir distância:
Conecte um motor ao NXT;
Selecione o submenu View no visor do NXT;
Selecione o ícone de rotações dos motores;
Selecione a porta onde você conectou o motor;
Conecte uma roda ao motor e meça as rotações enquanto rola a rodinha ao longo do chão.
Try Me
O NXT vêm com a função Try Me. Selecione o menu "Try Me" no NXT para testar os
motores. Você verá.
AA montagem do nosso modelomontagem do nosso modelo
Nessa parte começaremos a montagem do nosso modelo de robô.
O modelo pronto deverá ficar parecido com a imagem abaixo. A diferença é que o nosso
modelo ficará todo conectado.
1010
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Usamos esse modelo pois é relativamente fácil, rápido e utiliza todos os sensores que
acompanham o kit, servindo muito bem ao propósito de apresentação que temos. As ilustrações e o
passo-a-passo que seguiremos foi copiado do guia ilustrado que acompanha o kit Lego Educacional
9797.
Vamos agora montar nosso robô. Iremos construí-lo passo-a-passo, testando todos os
sensores, um de cada vez.
Primeiramente, o robô montado ficará como na imagem abaixo, sem os sensores:
As imagens seguintes mostram a montagem passo-a-passo. As peças utilizadas e as suas
quantidades aparecerão dentro do retângulo de fundo preenchido em azul. Próximo a esses
retângulos vêm as ilustrações de encaixe das peças.
Os números grandes em negrito enumeram cada passo. Basta seguir as ilustrações e montar o
robô.
1111
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1212
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1313
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1414
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1515
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1616
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1717
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1818
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Agora vamos testar os motores
1919
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
2020
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Vamos testar o som.
2121
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
2222
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Testando se seu robô "enxerga":
2323
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
2424
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
2525
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
2626
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
2727
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
2828
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
2929
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
3030
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
3131
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
3232
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
3333
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
3434
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
3535
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
3636
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
3737
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
3838
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
3939
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
4040
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
4141
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
4242
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Antes de começarmos a trabalhar com o software que utilizaremos para criar os programas
para os robôs LEGO temos que falar sobre programação e sobre a lógica de programação.
O que é programação?O que é programação?
Programação, segundo o dicionário, é o ato ou efeito de programar ou planejar um evento.
Também consta que programa é um plano contendo as ações a serem tomadas em um evento. Mais
especificamente, na área da informática, a programação é o ato de programar uma máquina para que
uma tarefa (programa) seja executada por ela. O programa é uma sequência de códigos onde
especificamos o quê fazer e como fazer.
Com as definições anteriores, podemos inferir uma definição mais elaborada, com termos
mais adequados. Programação é o processo de escrita, teste e manutenção de um programa de
computador. O programa é escrito em uma linguagem de programação - embora seja possível, com
alguma dificuldade, escrevê-lo diretamente em linguagem de máquina - seguindo uma lógica de
programação. Diferentes partes de um programa podem ser escritas em diferentes linguagens.
“Software” é um termo inglês generalizado que designa o conjunto de programas/aplicações
armazenados em computador que são executados a fim de resolver alguma tarefa ou solucionar
4343
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
algum problema. No Brasil também utilizamos o termo programa quando queremos substituir o
termo em inglês. Note que o prefixo SOFT (de software) é usado em contraposição ao prefixo
HARD (de hardware). Ambos os termos já foram discutidos anteriormente no primeiro módulo
desse projeto.
O que é lógica de programação?O que é lógica de programação?
Lógica de Programação é a técnica de desenvolver uma sequência lógica de passos para
atingir determinados objetivos dentro de certas regras baseadas na Lógica Matemática e que depois
são adaptados para a Linguagem de Programação utilizada pelo programador para implementar
(construir) seu software. É a técnica de encadear pensamentos para atingir determinado objetivo. A
lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de
sistemas e programas, ela permite definir a sequência lógica para o desenvolvimento. Essa
sequência lógica de passos é conhecida como algoritmo. Vejamos mais abaixo.
O que é um algoritmo?O que é um algoritmo?
Definição: uma sequência de passos (ações) que devem ser executados para se alcançar um
determinado objetivo.
Nota: Não confunda “algoritmo” com “algarismo”. São duas palavras com significados
completamente diferentes.
Embora a palavra pareça um pouco estranha, executamos algoritmos cotidianamente. Por
exemplo: a rotina diária de um aluno, que se levanta de manhã, se prepara, pega um ônibus (ou
carro) para vir até a UFG, assiste as aulas, volta para a casa (de ônibus ou carro), estuda durante a
tarde, toma banho, janta, estuda depois do jantar, e em seguida vai dormir, é um algoritmo que a
maioria dos alunos executa diariamente (ou pelo menos deveria executar). Um algoritmo também
pode ser comparado como uma receita culinária. Se obedecermos passo a passo as instruções de
uma receita, chegamos sempre ao mesmo resultado.
Mais abaixo teremos vários exemplos de algoritmos.
Comandos de ControleComandos de Controle
Os comandos de controle permitem alterar a direção tomada por um programa (desvio), ou
fazer com que partes específicas de um algoritmo seja executada mais uma vez (loop).
Existem três estruturas básicas para a construção de algoritmos: sequenciação, seleção e
repetição. A combinação destas três estruturas permite-nos a construção de algoritmos para a
resolução de problemas.
Imagine a seguinte situação: precisamos elaborar um algoritmo para trocar uma lâmpada. O
algoritmo abaixo é um exemplo para a resolução.
4444
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Algoritmo 1
Início
- pegue uma escada;
- coloque-a embaixo da lâmpada;
- busque uma lâmpada nova;
- suba na escada com a lâmpada nova;
- retire a lâmpada velha;
- coloque a lâmpada nova;
- desça da escada.
Fim
Observe que este algoritmo resolve o nosso problema da troca de lâmpada. Trata-se de um
algoritmo bastante simples, que utiliza-se apenas da estrutura de sequenciação, ou seja, nenhuma
seleção ou repetição de procedimentos aparece no algoritmo. Uma estrutura de sequência,
caracteriza-se por possuir uma única sequência de ações, que é executada apenas uma vez.
No entanto, antes de trocarmos a lâmpada devemos nos certificar de que ela realmente esteja
queimada, para então trocá-la. Assim, podemos melhorar o nosso algoritmo.
Algoritmo 2
Início
- ligue o interruptor
- se a lâmpada não acender, então:
- pegue uma escada
- coloque-a embaixo da lâmpada
- busque uma lâmpada nova
- suba na escada com a lâmpada nova
- retire a lâmpada velha
- coloque a lâmpada nova
- desça da escada
- fim-se
Fim
Observe que agora o nosso algoritmo, além da estrutura de sequência, passa a utilizar uma
estrutura de seleção. Na estrutura de seleção, uma condição deve ser analisada. A partir do
resultado da análise, um “caminho” do algoritmo será executado. Em outras palavras, uma estrutura
de seleção seleciona (escolhe) ações a serem executadas a partir de uma condição (que pode ser
simples ou composta).
Embora nosso algoritmo tenha melhorado, ainda podemos deixá-lo mais completo. Quando
verificamos que a lâmpada está queimada, subimos para trocá-la, mas não consideramos a hipótese
da lâmpada nova também estar queimada, e se isso ocorrer, precisaremos executar algumas ações
novamente, até que possamos efetivamente resolver nosso problema.
4545
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Algoritmo 3
Início
- ligue o interruptor
- se a lâmpada não acender, então:
- pegue uma escada
- coloque-a embaixo da lâmpada
- enquanto a lâmpada não acender, faça:
- busque uma lâmpada nova
- suba na escada com a lâmpada nova
- retire a lâmpada velha
- coloque a lâmpada nova
- desça da escada
- fim-enquanto
- fim-se
Fim
Neste algoritmo somente pararemos de trocar a lâmpada quando colocarmos uma lâmpada
que acenda. Portanto, um conjunto de ações será executado repetidamente enquanto a condição de
repetição for verdadeira. Assim, inserimos uma estrutura de repetição no nosso algoritmo, que
passa a trabalhar com as três estruturas básicas de construção de algoritmos.
Vamos supor agora que tenhamos 3 lâmpadas na sala de estar de uma casa, e queremos trocar
as que não estiverem funcionando. Para isso inserimos outro estilo de estrutura de repetição.
Algoritmo 4
Início
- para (as lâmpadas da sala) de 1 até 3 faça:
- ligue o interruptor
- se a lâmpada não acender, então:
- pegue uma escada
- coloque-a embaixo da lâmpada
- enquanto a lâmpada não acender, faça:
- busque uma lâmpada nova
- suba na escada com a lâmpada nova
- retire a lâmpada velha
- coloque a lâmpada nova
- desça da escada
- fim-enquanto
- fim-se
- fim-para
Fim
É importante salientar que existem várias formas de se construir um algoritmo, pois as
pessoas pensam de formas diferentes. No entanto, devemos sempre buscar a melhor forma possível
de se resolver um problema.
4646
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Faça você mesmo!
1) Um homem precisa atravessar um rio com um barco que possui capacidade de
transportar apenas ele e mais uma de suas três cargas, que são: um cachorro, uma galinha e um saco
de milho. O que o homem deve fazer para conseguir atravessar o rio sem perder as suas cargas?
Lembrando que o homem não pode deixar a galinha com o milho (pois a galinha comeria o milho) e
nem o cachorro com a galinha (o cachorro comeria a galinha).
2) Três jesuítas e três canibais precisam atravessar um rio. No entanto dispõem apenas de
um barco com capacidade para duas pessoas. Por medida de segurança não se permite que em
alguma das margens do rio a quantidade de jesuítas seja inferior à quantidade de canibais. Qual a
sequência de viagens necessárias para a travessia do rio com segurança para os jesuítas?
Muitas vezes será necessário desviar a execução do programa segundo uma condição.
Exemplo: ir à universidade de carro ou de ônibus? Para se testar condições é necessário utilizar
operadores lógicos e operadores relacionais.
Operadores LógicosOperadores Lógicos
Os operadores "e", "ou" e "não" permitem realizar a combinação lógica de variáveis4
do tipo
booleano (lógico).
Para isto utilizam-se as tabelas verdade:
Variável1Variável1 Variável2Variável2 EE OUOU
V V V V
V F F V
F V F V
F F F F
VariávelVariável NÃONÃO
V F
F V
4 Na programação, uma variável é um elemento capaz de reter e representar um valor ou expressão. As variáveis são
associadas a "nomes", chamados identificadores.
4747
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Podemos modificar os algoritmos anteriores para ilustrar o uso de operadores lógicos.
Algoritmo 5
Início
- para (as lâmpadas da sala) de 1 até 3 faça:
- ligue o interruptor
- se a lâmpada não acender, então:
- pegue uma escada
- coloque-a embaixo da lâmpada
- busque uma lâmpada nova
- suba na escada com a lâmpada nova
- retire a lâmpada velha
- coloque a lâmpada nova
- desça da escada
- se (a lâmpada continua apagada) e (lâmpadas novas acabaram),
então:
- Pare!
- fim-se
- fim-se
- fim-para
Fim
Operadores RelacionaisOperadores Relacionais
Permitem medir a relação - ou realizar a comparação - entre dois valores.
A igualdade é dada por ( = ). Ex: 5 = 5
A desigualdade é dada por ( <> ). Ex: 4 <> 5
Maior que, pelo símbolo ( > ). Ex: 5 > 4
Menor que, pelo símbolo ( < ). Ex: 4 < 5
Maior ou igual, pelo símbolo ( >= ). Ex: 5 >= 5, 5 >= 3
Menor ou igual, pelo símbolo ( <= ). Ex: 4 <= 4, 2 <= 4
Negação ( ! ). Ex: !3
Continuando o exemplo com lâmpadas, podemos exemplificar o uso de um operador
relacional da seguinte forma:
Algoritmo 6
Início
- enquanto (houver lâmpadas queimadas) e (tiver lâmpada em estoque)
faça:
- troque lâmpada queimada por uma que funcione
- fim-enquanto
- se (nº de lâmpadas trocadas = nº de lâmpadas queimadas), então:
4848
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
- Imprimir (“Terminou com sucesso!”)
- senão:
- Imprimir (“Terminou com falha!”)
- fim-senão
- fim-se
Fim
O que é entrada e saída de dados?O que é entrada e saída de dados?
Todo sistema, por definição, tem uma entrada (ou um conjunto de entradas), um
processamento (ou conjunto de processamentos), e uma saída. É assim com o nosso sistema
respiratório, sistema nervoso, sistema digestivo, e também com o sistema computacional.
Vimos no primeiro módulo do projeto que no hardware temos entrada e saída de dados. O
mesmo acontece no software. O software recebe uma entrada, processa os dados conforme manda
seu algoritmo e depois gera uma saída. Assim também funcionam os robôs LEGO.
A entrada de dados pode ser dada pela inserção de dados através de teclado, de uma placa de
rede, modem, placa de som ou de outro dispositivo, ou pela atribuição de um valor à uma variável.
Nos robôs LEGO a entrada é fornecida pelos quatro sensores, conectados às portas 1, 2, 3 e 4.
O algoritmo abaixo exemplifica o processo de atribuição de valores à variáveis, e também
como usar outro algoritmo pronto para realizar uma tarefa específica.
Algoritmo 7
Início
- enquanto (houver lâmpadas queimadas) e (tiver lâmpada em estoque)
faça:
- lampada1 ← lampada_queimada
- lampada2 ← lampada_nova
- troqueLampadas (lampada1, lampada2)
- fim-enquanto
- se (nº de lâmpadas trocadas = nº de lâmpadas queimadas), então:
- Imprimir (“Terminou com sucesso!”)
- senão:
- Imprimir (“Terminou com falha!”)
- fim-senão
- fim-se
Fim
No algoritmo 7, o procedimento “troqueLampadas” é um outro algoritmo separado, o
algoritmo 1. É ele que faz todo o trabalho de pegar a escada, subir nela, retirar a lâmpada queimada
- representada pela entrada “lampada1” -, pegar a lâmpada nova - representada pela entrada
“lampada2” - e colocar no lugar da lâmpada velha. Isso é uma representação de entrada (inserção)
de dados. No exemplo acima não inserimos dados via teclado, mas um algoritmo forneceu dados
para outro algoritmo através das variáveis “lampada1” e “lampada2”.
4949
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
A saída ou retorno de dados deve ser o resultado de alguma operação realizada por um
programa, proveniente de uma entrada dada anteriormente. Os valores podem ser armazenados em
variáveis, podem servir como entrada para outras funções ou também podem ser utilizados pelo
dispositivo de hardware de saída padrão, que no caso dos robôs LEGO são os três motores
conectados às portas A, B e C.
Algoritmo 8
Início
- nrLampadasQueimadas ← receber_nº_de_lâmpadas_queimadas()
- nrLampadasTrocadas ← receber_nº_de_lâmpadas_trocadas()
- se (nrLampadasTrocadas = nrLampadasQueimadas), então:
- Imprimir (“Terminou com sucesso!”)
- senão:
- Imprimir (“Terminou com falha!”)
- fim-senão
- fim-se
Fim
No algoritmo 8 podemos ver que as variáveis “nrLampadasQueimadas” e
“nrLampadasTrocadas” receberam, respectivamente, a saída - ou o retorno, ou ainda o resultado -
dos algoritmos “receber_nº_de_lâmpadas_queimadas” e “receber_nº_de_lâmpadas_trocadas”.
Para reforçar os termos entrada e saída mostramos um último algoritmo, que utiliza a função
matemática de soma. A função “SOMAR” recebe dois argumentos - ou duas entradas - do tipo
número. O trabalho dessa função é somar os dois números recebidos e retornar o resultado. Este
resultado é armazenado na variável “resultado”. Depois o conteúdo dessa variável é impresso no
monitor. No caso do exemplo abaixo, utilizamos os números inteiros “2” e “3” como argumentos da
função “SOMAR”.
Algoritmo 9
Início
- resultado = SOMAR(2, 3)
- Imprimir (resultado)
Fim
5050
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
OO softwaresoftware
Dê um duplo clique no ícone criado na sua área de trabalho.
Após carregar o programa (barra verde totalmente carregada), a primeira janela do programa
será inicializada:
5151
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1
Robot Educator: contém instruções de programação e construção usando o modelo do
DRIVING BASE que acompanha o kit
2
My Portal: acesso direto à novas ferramentas, downloads e informações atualizadas
disponíveis na internet
3
Barra de Ferramentas: ferramentas mais usadas, dispostas de maneira fácil e
acessível
4
Getting Started: demonstração dos comandos básicos para operar o software pela
primeira vez, além de uma rápida visão dos recursos oferecidos
5
Help Window (Ajuda Rápida): mostra dicas e funções básicas dos ícones e
ferramentas
6
Paletas de programação: paletas que dispõem de todas as funções de programação do
NXT
7
Painel de Inicialização rápida: permite abrir um novo programa ou um que foi salvo
anteriormente.
No painel de inicialização rápida, clique em Start New Program, digite o nome do seu
programa e clique em "GO". A tela habilitará à paleta de ferramentas e outras funções:
Área de trabalho onde será colocado os ícones para montar a programação
NXT Window
fornece informações sobre o NXT conectado, como memória, comunicação e
download
5252
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
TransferindoTransferindo um programa para o NXTum programa para o NXT
Conecte o NXT ao computador através do cabo USB. Caso seja a primeira vez a ser
conectado aparecerá, no canto inferior direito da tela, a seguinte mensagem em um balão: "Novo
Hardware Dectado". Aguarde até que outra mensagem seja exibida: "Novo Hardware encontrado e
pronto para ser usado".
Controlador (NXT Window)
Os cinco botões abaixo estabelecem a comunicação entre o computador e o NXT:
5353
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Paletas de Programação
A paleta de programação está dividida em 3 partes:
5454
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
PaletaPaleta Padrão (Common Pallete)Padrão (Common Pallete)
Move: controla os movimentos dos motores, individuais ou em conjunto.
Record / Play: "ensina" os movimentos ao seu robô, permitindo-lhe executar
exatamente os movimentos anteriores dos motores.
Sound: emite sons diversos, pré-gravados, e reproduz tons musicais definidos.
Display: exibe informações na tela do NXT, desde ícones até dados obtidos pelos
sensores.
Wait: determina uma espera, que pode ser em função do tempo do evento de um dos
sensores.
Loop: função usada para determinar a repetição de uma sequência de programação,
indefinidamente ou não.
Switch: permite ao programa avaliar uma condição e, em seguida, um valor lógico
(True/False), conforme opções configuradas.
Comando MOVE
Ao arrastar esse ícone para a área de trabalho, aparecerá uma caixa de
configuração na parte inferior da tela:
5555
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Ela indica a quantidade de rotações que cada um dos motores realizou, ou poderá 'resetar' os
valores.
1. Port: configura qual porta será controlada, podendo ser uma, duas ou as três
simultaneamente.
2. Direction: controla o sentido da rotação do motor (para frente, para trás ou parado).
Controla a direção do robô, quando a locomoção depende de 2 motores, cada um
controlando um lado da locomoção.
3. Steering: habilitado somente quando 2 motores estão selecionados, o que permite ao
robô fazer curvas e indica qual a direção que ele deverá virar, ou se a curva será mais
“aberta” ou mais “fechada”. Se somente um motor ou os três motores estiverem
selecionados, essa opção ficará desabilitada.
4. Power: nível de potência dos motores (que vai de 0% a 100%). Este valor pode ser
ajustado digitando o número na caixa à direita, ou deslizando o ponteiro sobre a barra
para a direita ou para a esquerda.
5. Duration: a duração do movimento do motor pode ser fornecida em:
• Rotações: equivale a uma volta completa do eixo;
• Graus: uma volta equivale a 360º, meia volta a 180º e assim sucessivamente;
• Segundos: independente do número de voltas do motor, a porta é ativada pelo
tempo determinado;
• Ilimitado: irá se mover indefinidamente ou até que a programação execute o
próximo ícone da sequência. Quando se habilita essa função, a Steering é
desabilitada automaticamente;
6. Next Action: define a próxima ação dos motores. Pode ser:
• Brake: fará com que o robô pare ao realizar a quantidade de movimento
determinado, o que pode fazê-lo parar bruscamente, além de "travar" o motor na
posição exata.
• Coast: somente desligará o motor, permitindo que este continue o movimento por
inércia, permitindo uma parada mais suave.
Faça você mesmo!
Programe o robô para que ele ande para frente, segundo as configurações abaixo, e meça a
distância percorrida:
5656
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
• Por 5 segundos: ________________
• Por 5 rotações: ________________
• Por 180º: ________________
Comando RECORD/PLAY
Esses comandos são usados para gravar as ações que os motores realizam, desde
ensinar a posição de algum objeto para o braço mecânico até a sequência de movimentos
que pode ser realizada por todos os motores ordenadamente.
Quando for escolhida a função Record, aparecerá a seguinte tela de configuração:
1. Name: dê um nome para a sequência a ser gravada.
2. Recording: escolha quais motores terão seus movimentos registrados.
3. Time: quanto tempo irá durar a gravação da sequência de movimentos.
Quando for escolhida a função Play, pode-se escolher na lista que aparece qual das ações
gravadas será executada.
Comando SOUND
Utilizamos essa função para executar uma sequência de sons, ou para reproduzir
notas musicais durante a execução do programa.
O painel de configuração da opção SoundFile é apresentado abaixo:
1. Action: selecionar SoundFile significa utilizar arquivos de som pré-gravados;
2. Control: inicia a execução do som (Play) ou a interrompe (Stop).
Quando selecionamos Stop, as outras funções ficam desabilitadas;
3. Volume: define a intensidade em que o som será executado;
4. Function: faz o som se repetir indefinidamente, ao selecionar Repeat;
5757
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
5. File: seleciona qual arquivo de som será reproduzido. Ao clicar em um arquivo, o
software irá reproduzí-lo, desde que a placa de som esteja habilitada.
Ao fazer o download do programa para o NXT, o arquivo de som utilizado também
será enviado.
6. Wait: A opção "Wait for Completion" define quando a próxima ação será executada.
Quando a opção está marcada a ação só será executada quando o som ou tom for
emitido por completo; caso contrário, a ação ocorrerá assim que o som iniciar.
O painel de configuração da opção Tone é apresentado abaixo:
5. Note: podemos escolher uma nova nota para ser executada e sua duração em segundos.
Ainda é possível selecionar a nota musical através do teclado.
Comando DISPLAY
Podemos selecionar várias maneiras – Action – de exibir as informações no
display do NXT. Observe as figuras abaixo:
5858
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1. Action: tipo de conteúdo a ser exibido (Imagem, Texto, Desenho, Reset);
2. Display: sobrescrever o anterior ou apagá-lo (Clear);
3. Files: imagens disponíveis para exibição;
4. Position: exibe a imagem selecionada, correspondente ao arquivo escolhido, e a sua
posição no visor - X(horizontal) e Y(vertical);
5. Text: quando esta função for selecionado em Action, uma janela para digitação do
texto deverá aparecer;
6. Position: posição do texto na tela; é possível escolher em que linha irá aparecer. A tela
é composta por 8 linhas;
7. Type: é possível escolher o tipo de desenho - Point, Circle, Line - para desenhar e criar
desenhos; no caso da linha, define-se o seu início e seu fim; no caso do círculo, define-se o
raio;
8. Position: mostra a posição do objeto no display.
Ao selecionar 'Reset' em Action, o display será limpado.
Comando WAIT
O comando Wait insere uma espera no programa, condicionando a continuidade da
programação a um tempo ou a um evento de sensor.
Quando Time é selecionado no campo Control, a janela abaixo aparece:
1. Until: Determina a quantidade a ser esperada. O tempo é dado em segundos e décimos
de segundos. Como sinal de separação de casas decimais, são aceitos tanto ponto quanto
vírgula.
Quando selecionamos Touch Sensor no campo Control, a janela abaixo aparece:
1. Port: selecione a porta em que o sensor está conectado;
5959
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
2. Action: selecione a ação no sensor de toque - Pressed (Pressionado), Released
(Liberado) e Bumped (Pressionado e, em seguida, Liberado).
Quando selecionamos Sound Sensor:
1. Port: selecione a porta em que o sensor está conectado;
2. Until: configura a espera do sensor por um som maior ou menor que a intensidade
definida pelas barras ou pelo valor inserido.
3. Determina a quantidade a ser esperada.
Quando é selecionado Light Sensor:
1. Port: selecione a porta em que o sensor está conectado;
2. Until: determina se o valor que o programa irá esperar é "mais claro" (direita) ou mais
escuro (esquerda), ou ainda fazendo uso dos símbolos de < ou >. A variação deve estar
entre 0 e 100.
3. Determina a quantidade a ser esperada.
4. Function: ao selecionar a caixa Generate Light, o sensor irá acender seu led
localizado na parte inferior para produzir luz para leitura, caso contrário, fará a leitura
baseado na luz ambiente.
Quando é selecionado Ultrasonic Sensor:
6060
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1. Port: selecione a porta em que o sensor está conectado;
2. Until: determina se o valor lido pelo sensor será maior (mais longe, à direita) ou
menor (mais perto, à esquerda), podendo usar os sinais de < ou > para determinar a
distância.
3. Determina a quantidade a ser esperada.
4. Show: a medida usada pode ser em polegadas (inches) ou
centímetros (centimeters). A conversão é feita automaticamente. O valor deverá ser
entre 0 e 250 polegadas ou de 0 a 635 centímetros.
Quando é selecionado NXT Buttons:
1. Button: seleciona qual dos botões aguarda para ser pressionado, podendo ser ou
. O botão não pode ser utilizado devido a sua função "Voltar".
2. Action: define a ação que deverá ocorrer com o botão escolhido, da mesma forma que
o sensor de toque.
3. Determina a quantidade a ser esperada.
Quando selecionamos Rotation Sensor:
Como já explicamos antes, os servomotores possuem sensores de rotação embutidos.
1. Port: seleciona a porta em que o motor estará conectado;
6161
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
2. Action: seleciona se deverá ler (Read) a rotação ou zerar (Reset) a leitura.
Se Reset for selecionado, a opção Until é desabilitada;
3. Until: determina até quando a leitura deverá ser feita. Aqui considera-se o lado da
rotação;
4. Aqui inserimos o valor, a ser usado pelo Until, em graus (degrees) ou rotações
(rotations);
5. Determina a quantidade a ser esperada.
Quando selecionado Timer:
Aqui, o NXT irá ler o tempo de seus cronômetros internos (3 cronômetros), que podem ser
usados para determinar o tempo de resposta ou não do robô.
1. Timer: seleciona um dos três cronômetros disponíveis;
2. Action: caso esteja selecionada a caixa Read ele lê o valor obtido no timer, ou zera o
cronômetro selecionado se a caixa Reset estiver marcada;
3. Until: determina se deve esperar um valor maior ou menor que o indicado a frente (em
segundos).
Quando selecionado Receive Message:
1. Message: determina que tipo de mensagem deve receber, se texto (text), número
(number) ou lógico (logic);
2. Compare to: permite comparar as mensagens, com limites pré-definidos.
3. MailBox: determina em qual caixa de correio deve receber a mensagem. Existem 10
diferentes caixas para serem usadas.
6262
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Comando LOOP
Com o Loop, podemos condicionar a repetição de uma sequência de código de
programação de diversas maneiras.
Quando for selecionado Forever:
1. Control: determina o modo de repetição; Selecionando Forever (em português, para
sempre), o trecho da programação contido no loop será repetido infinitas vezes;
2. Show: quando selecionada a caixa Counter, o programa registra quantas vezes o loop
foi realizado. Caso contrário, somente repete sem registrar.
Quando for selecionado Time:
Quando for selecionado Time, o loop se repetirá durante um determinado tempo, ou seja, ele
aciona um timer que irá determinar quando a sequência dentro do loop é iniciada e verifica se esse
tempo é mais do que o configurado (em segundos). Se for maior, o loop termina e passa para a
sequência de comando seguinte.
Quando for selecionado Logic:
Nesse caso o campo Until determina o valor da condição - true ou false - para que o fim do
loop aconteça.
6363
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Comando SWITCH
Permite que o programa tome uma "decisão" conforme o que foi pré-determinado.
Basicamente, possibilita duas opções: Value ou Sensor.
Quandor for escolhido Value:
1. Type: define o tipo de valor, no caso de Value, que pode ser Logic, Number ou Text;
2. Display: como será exibido o ícone. Em Flat View, teremos linhas separadas,
permitindo visualizar a programação de cada condição. Caso contrário, somente será
visto uma linha de cada vez e é necessário clicar na aba para ver cada uma das linhas;
3. Conditions: permite estabelecer as condições. Assim, quando selecionado Logic no
campo Type, teremos apenas duas condições (True ou False). Caso seja selecionado
Text ou Number, pode-se adicionar mais condições, desde que Flat View não seja
habilitado. Só é possível ver as opções uma a uma, pelo clique nas abas, que aparecem
conforme mais condições são adicionadas.
4. O botão * permite definir qual a condição padrão a ser tomada, caso nenhuma das
outras seja possível.
Quando for selecionado Touch Sensor:
2. Port: escolha da porta onde o sensor está conectado;
3. Action: seleciona qual padrão deve ser esperado do sensor. Exemplo: se selecionado
Pressed, deve-se "seguir" a linha de programação que fica acima da bifurcação; caso
contrário, segue-se a linha abaixo. No caso de escolher Bumped, deve-se escolher padrões
somente entre verdadeiro ou falso.
Quando for selecionado Sound Sensor:
6464
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
3. Compare: configura o parâmetro de comparação de volume de som.
Quando for selecionado Light Sensor:
3. Compare: configura o parâmetro de comparação do nível de luminosidade;
4. Function: configura se a leitura será somente da luz ambiente, ou, ao selecionar-se o
Generate light, acender o led no sensor.
Quando for selecionado Ultrasonic Sensor:
3. Compare: configura o parâmetro de comparação de distância do objeto detectado;
4. Show: determina a unidade de medida - polegadas (inches) ou centímetros
(centimeters).
Quando for selecionado NXT Buttons:
6565
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1. Button: seleciona o botão do NXT;
2. Action: tem a mesma função Touch Sensor.
Quando for selecionado Rotation Sensor:
2. Action: configura ler o valor do sensor ou zerá-lo;
4. Compare: configura o sentido da rotação, e se será maior ou menor que o valor
determinado, em graus ou rotações.
Quando for selecionado Timer:
3. Timer: seleciona um dos 03 timers disponíveis no software;
4. Compare: determina o valor de comparação do timer, em segundos;
Quando for selecionado Receive Message:
1. Message: tipo de mensagem a ser recebida: Text, number, logic;
2. Compare to: parâmetro para comparação conforme tipo selecionado acima: número
para number, texto para text, true ou false para logic;
3. Mailbox: escolher qual das 10 caixas de correio disponíveis no software deve ser
consultada para a comparação.
6666
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
6767
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Data Hub
Existe uma maneira de relacionar e utilizar os valores dos ícones de
maneira a transformá-los em gráficos no display, ou mesmo utilizar esses
valores como potência de motores, parâmetros de sensores, etc. Para isso,
clicamos na parte inferior do ícone.
Quando houver plugues a direita, eles são saídas de dados, e a esquerda,
eles se tornam entrada de dados. Isso significa que um mesmo dado não pode
ser utilizado de diversas formas. Uma maneira mais simples de visualizar, seria
colocando o valor de um sensor no Display do NXT. Para isso, conecte o seu
sensor de ultrassom na porta 01 do seu NXT, e construa o seguinte programa na
sua tela:
Nesse exemplo, temos o sensor de ultrassom, a função "Number to Text", para possibilitar a
compatibilidade do formato do dado de saída com o dado de entrada.
Com esse programa acima, toda vez que alterar a distância do objeto com o sensor, no display
irá aparecer a distância medida pelo sensor. Note que as linhas são de cores diferentes,
representando formatos diferentes de dados. Caso a linha se torne cinza, significa que não existe
compatibilidade entre o dado de saída e o formato de entrada do mesmo.
6868
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Formato do Dado Cor da linha de conexão
Numérico Amarelo
Texto Laranja
Incompatível Cinza
Lógico Verde
PaletaPaleta Completa (Complete Pallete)Completa (Complete Pallete)
Como o nome já diz, contém todas as funções de programação disponíveis no software.
Engloba todos os ícones da Paleta Comum e mais alguns, permitindo um nível de programação
mais complexo. Divide-se em:
Common: Reúne as funções básicas do software, já vistas
anteriormente;
Action: Ações a serem realizadas pelo programa, como ativar
motores,
emitir sons, exibir informações no display. Refere-se a saída de
dados/ações;
Sensor: Funções e leitura dos sensores, tratamento da entrada de
dados;
Flow: Funções de fluxo do programa, como aguardar, repetir,
esperar;
Data: Funções relativas ao tipo e tratamento de dados obtidos;
Advanced: Funções avançadas de tratamento de variáveis.
6969
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Essas funções também podem ser acessadas pela Paleta Padrão (já vista anteriormente).
7070
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
ACTION
Refere-se a ícones de execução de tarefas, como inicializar um motor, exibir uma
mensagem na tela, aguardar um evento, tempo ou sensor, etc. Conta ainda com os
comandos:
COMANDO SEND MESSAGE
Configura o envio de mensagens via Bluetooth, para diferentes NXTs.
Para que o comando funcione, lembre-se de ativar no Bluetooth no seu NXT.
1. Connection: indica para qual conexão a mensagem será enviada;
2. Message: indica se a mensagem enviada será de texto (text), número (number), ou
lógica (logic);
3. Espaço para inserção da mensagem;
4. Mailbox: indica a qual caixa de correio está endereçada a mensagem no outro NXT.
COMANDO LAMP
Configura o funcionamento de lâmpadas com o NXT.
1. Port: indica a qual porta a lâmpada está conectada;
2. Action: indica se acende ou apaga a lâmpada;
3. Intensity: configura a intensidade da lâmpada. O valor vai de 0% a 100%.
SENSOR
Seus comandos permitem ler os valores/respostas dos sensores, calibrar seus valores,
e permite que usemos estes dados dentro do programa.
7171
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Touch Sensor: Permite testar o funcionamento do seu sensor, quando conectado no
NXT. Ao pressioná-lo, irá aparecer o número 1; ao colocar Reset, o sensor voltará a
0.
Sound Sensor: Permite saber instantaneamente o valor que o sensor está obtendo,
quando conectado ao NXT.
Ultra-sonic Sensor: Permite a visualização instantânea do valor que o sensor está
lendo.
Rotation Sensor: Permite testar o funcionamento do seu sensor, quando conectado
ao NXT. Ao pressioná-lo irá aparecer o número 1; ao clicar Reset, o sensor voltará a
0.
NXT Buttons: Permite testar o funcionamento do seu sensor, quando conectado ao
NXT. Ao pressioná-lo, irá aparecer o número 1; ao clicar reset, o sensor voltará a 0.
Timer: Permite alterar os valores dos três timers (cronômetros) do NXT, podendo
optar por ler o valor atual ou ainda fazer a contagem iniciar do zero novamente
(reset).
Receive Message: Permite receber mensagens de outro NXT, respeitando as
configurações feitas nos dois NXTs.
COMANDO RECEIVE MESSAGE
Permite receber mensagens de outro NXT, sem utilizar fios, desde que o tipo de
mensagem e o número da caixa de correio (mailbox) sejam os mesmos em ambos NXT.
7272
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1. Message: define o tipo de mensagem que deve ser recebida;
2. Compare to: parâmetro para comparação;
3. Mailbox: define qual a Mailbox deve ser usada para comparar/receber a mensagem.
FLOW
Tem comandos referentes ao fluxo do programa, como esperas, repetições, tomadas
de decisões e parada.
COMANDO STOP
Não possui painel de configuração e sua função é finalizar todo o programa. No
caso de ser usado junto a motores, desliga os motores após uma rotação, interrompendo
a leitura dos sensores e das demais funções.
Outros comandos do menu FLOW são Wait, Loop e Switch, e já foram vistos anteriormente.
DATA
Comandos referentes ao tratamento dos dados obtidos pelos sensores ou motores,
sendo possível transformá-los em gráficos ou mesmo aprimorar os dados para tornar o
desempenho mais eficiente.
Logic: realiza operações lógicas a partir dos seguintes operadores lógicos - "And",
"Or", "Not" e "Xor".
Math: realiza as quatro operações com os valores obtidos pelos sensores, podendo
utilizá-los como parâmetros.
Compare: compara dois valores entre si.
7373
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Range: define o intervalo que pode ser usado, ou que deve ser analisado.
Random: determina um valor aleatório, dentro do intervalo determinado.
Variable: define o valor de uma variável, a ser usado em comparação, operação ou
qualquer outra função.
COMANDO LOGIC
1. Define o valor das entradas como verdadeiros ou falsos, e mostra graficamente o
resultado;
2. Operation: configura o tipo de operação entre And, Or, Xor e Not.
É possível realizar operações com operadores lógicos. Para facilitar a compreensão, siga as
tabelas verdade das páginas 46 e 47.
COMANDO MATH
Permite realizar operações matemáticas (adição, subtração, divisão e
multiplicação) com os valores obtidos pelos sensores, utilizando tais resultados em
gráficos ou como parâmetros de configuração.
7474
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1. Valores da operação;
2. Operation: tipos de operação: Addition (Adição), Subtraction (Subtração),
Multiplication (Multiplicação), Division (Divisão).
COMANDO COMPARE
Compara valores e define a condição como igualdade, maior que ou menor que.
1. Entrada de valores a serem comparados;
2. Operation: Define o Tipo de Comparação: LessThan (menor que), Greather Than
(maior que), Equals (igual).
COMANDO RANGE
Define o intervalo de valores para ser usado como na configuração.
1. Test: número para testar a condição, se esta não tiver sido definida por outro ícone;
2. Define o início e o fim do intervalo a ser usado;
3. Operation: define se os números estarão dentro (inside) ou fora (outside) do intervalo.
COMANDO RANDOM
Gera um valor aleatório, dentro de um intervalo determinado, que pode ser usado
na configuração.
7575
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1. Range: define o intervalo de valores de onde será escolhido o número aleatório,
definido entre o mínimo e o máximo. Quando o valor digitado ultrapassar os valores, tanto
acima quanto abaixo, a range permanece no valor mínimo (0), ou no máximo (100).
COMANDO VARIABLE
Define variáveis para serem usadas durante a programação, sendo que o software
possui três pré-definidas.
Para criar novas variáveis, vá ao menu Edit > Define Variables e, na caixa que se abre clique
em Create para criar uma nova variável e definir o tipo. Ao colocar o ícone na tela, este irá aparecer
na relação de variáveis do programa.
1. List: define o nome e o tipo da variável - lógica (logic), numérica (number) ou texto
(text);
2. Action: define a ação em relação ao valor da variável; através dele é possível utilizar
um valor já definido, ou atribuir um novo para uso posterior;
3. Value: quando habilitado Write em Action, pode-se atribuir um valor, texto ou
condição de verdadeiro ou falso, dependendo do tipo da variável.
ADVANCED
As funções avançadas de tratamentos de variáveis permitem aumentar o uso do
software a fim de transformar, armazenar valores e até calibrar os sensores, tornando os
robôs o mais independente possíveis.
7676
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Text: Combina várias sequências de texto em uma só.
Number to Text: Transforma uma sequência de números em texto, para
que possa ser usado com ícones que não possuam ligações para números.
Keep Alive: Coloca o NXT em estado de espera, seja para efetuar uma ação ou,
simplesmente, detectar dados sem consumir excessivamente a bateria.
File Access: Permite armazenar números e textos do programa em arquivos
na memória do NXT, permitindo o posterior acesso.
Calibrate: Permite calibrar os sensores de luz e som em situações específicas.
Reset: Permite resetar a posição dos motores, reajustando-os quanto ao movimento
conjunto de um par de motores.
COMANDO TEXT
Combina várias sequências de texto, concatenando até três delas;
1. Text: sequências de texto ou sentenças a serem concatenadas.
7777
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
COMANDO NUMBER TO TEXT
Converte números para textos, para poder utilizá-los com caixas de texto que não
aceitam números.
Number: número a ser convertido em texto.
COMANDO KEEP ALIVE
Faz com que o NXT entre em modo de espera por um tempo determinado, medido
em milésimos de segundos, ou "sleep mode". Ao esgotar-se o tempo, o NXT retorna à
programação (o que o difere do comando "Wait", que não o coloca em modo de espera). Não
apresenta painel de configuração.
COMANDO FILE ACCESS
Permite registrar dados em arquivos no NXT, para leitura posterior. Podem ser
digitados em forma de texto ou números, e são usados para registrar diversos dados
obtidos pelo robô.
1. Action: Determina se é para ler (read), escrever (write), fechar (close) ou deletar
(delete) o arquivo;
2. Name: Determina o nome do arquivo a ser criado;
3. Type: Tipo do arquivo;
4. Text/Number: Número ou texto a ser escrito no arquivo;
COMANDO CALIBRATE
Permite calibrar os sensores de luz e de som com os valores do ambiente,
permitindo uma interação e precisão maior do robô com o ambiente.
7878
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
1. Port: Porta em que o sensor está conectado;
2. Sensor: Tipo de sensor que está conectado, se é de Luz ou de Som;
3. Action: Determina se é para calibrar o sensor ou resetar os valores, voltando a
configuração padrão;
4. Value: Determina o valor a ser calibrado, se é o máximo ou mínimo.
COMANDO RESET
Quando utilizado o comando MOVE, automaticamente o NXT faz um ajuste entre
a rotação dos motores configurados, aumentando a precisão dos movimentos. Porém, ao
utilizar o parâmetro de configuração COAST, o mesmo pode perder a precisão na quantidade de
movimento (Degrees ou Rotations). Para ajustar a duração do movimento nessa situação, usamos o
comando RESET MOTOR.
1. Port: Portas que devem ter seus valores resetados.
PaletaPaleta Personalizada (Custom Pallete)Personalizada (Custom Pallete)
A paleta personalizada irá conter dois menus: os blocos de programa que você irá criar, em
My Blocks, ou aqueles que poderão ser baixados via download na internet, em WebDownloads,
disponibilizados por usuários como você.
Esses blocos de programa são uma sequência de comandos pré-determinados que foram
salvos, para facilitar a programação dos seus robôs.
My Blocks: reúne os blocos criados pelo usuário.
7979
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Web Downloads: reúne todos os blocos que você fizer o download da web.
My Blocks - Como criar um bloco personalizado
Para ter blocos no menu My Blocks, é preciso criá-los antes. Para isso, siga os seguintes
passos:
1. Abra uma janela e crie o programa que você deseja transformar em um bloco, como
por exemplo,
2. Em seguida, selecione esse bloco e vá ao menu Edit e clique em Make a New Block. O
assistente My Builder será aberto;
3. Em Block Name, nomeie o seu bloco, e em Block Description, escreva uma breve
descrição do que ele faz.
Logo abaixo aparecem os comandos que você selecionou anteriormente.
8080
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
4. Clique em Next para continuar.
5. Escolha um ícone para representar o bloco e clique em Finish.
Quando colocar o ponteiro do mouse sobre My Blocks novamente, irá aparecer o seu ícone
do bloco que você criou. Para utilizá-lo, basta arrastá-lo para a área de trabalho do software.
8181
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
ReferênciasReferências
• MORAES, Paulo Sérgio de. Curso Básico de Lógica de Programação, Unicamp -
Centro de Computação, 2000.
• [Online] What is NXT? - http://mindstorms.lego.com/en-us/whatisnxt/default.aspx
• [Online] NXT Tutorial - http://www.ortop.org/NXT_Tutorial/index.html
• Manual de Programação para o NXT software - Educação Tecnológica. ZOOM Ed.
Educacional Ltda, 2003. 2003.
Introdução à Programação com Robôs Lego está sob a
Licença Creative Commons Atribuição-Não a obras Derivadas.
8282
Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo
Sobre o projeto
Este projeto propõe a difusão de conhecimentos da área de computação para jovens alunos da
zona rural. Em específico, o conhecimento em informática existente no campus de Catalão da
Universidade Federal de Goiás e os jovens pertencentes à zona rural de Catalão, no estado de Goiás.
Além disso é vislumbrado a aquisição de conhecimentos por parte dos envolvidos, a possibilidade
de incluir o jovem do campo social e digitalmente.
É financiado com recursos do CNPQ e apoiado pela Prefeitura Municipal de Catalão.
O projeto é coordenado pela Profª Dr. Selma Terezinha Milagre e tem a colaboração dos
professores Dr. Alexsandro Santos Soares, Dr. Marcelo Henrique Stoppa, Ms. Márcio Antônio
Duarte, Dr. Roberto Mendes Finzi Neto e Dr. Vaston Gonçalves da Costa.
Os bolsistas deste projeto são os autores deste material.
8383

Mais conteúdo relacionado

Mais procurados

Rolamentos SKF.ppt
Rolamentos SKF.pptRolamentos SKF.ppt
Rolamentos SKF.pptJanMartins1
 
オープンソースのドローン用フライトコントローラ「Dronecode」の概要( #OSC15tk)
オープンソースのドローン用フライトコントローラ「Dronecode」の概要( #OSC15tk)オープンソースのドローン用フライトコントローラ「Dronecode」の概要( #OSC15tk)
オープンソースのドローン用フライトコントローラ「Dronecode」の概要( #OSC15tk)博宣 今村
 
ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2増田 亨
 
Linguagens de programação para controladores lógicos programáveis copia - c...
Linguagens de programação para controladores lógicos programáveis   copia - c...Linguagens de programação para controladores lógicos programáveis   copia - c...
Linguagens de programação para controladores lógicos programáveis copia - c...Juremir Almeida
 
Unityでロボットの教師データは作れる!
Unityでロボットの教師データは作れる!Unityでロボットの教師データは作れる!
Unityでロボットの教師データは作れる!UnityTechnologiesJapan002
 
CEDEC2021 プランナーもハックしよう 業務効率化、ローコード開発とテクニカルプランナー
CEDEC2021 プランナーもハックしよう 業務効率化、ローコード開発とテクニカルプランナーCEDEC2021 プランナーもハックしよう 業務効率化、ローコード開発とテクニカルプランナー
CEDEC2021 プランナーもハックしよう 業務効率化、ローコード開発とテクニカルプランナーSEGADevTech
 
クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説MinoDriven
 
101545233 exercicios-resolvidos-de-sinais-e-sistemas
101545233 exercicios-resolvidos-de-sinais-e-sistemas101545233 exercicios-resolvidos-de-sinais-e-sistemas
101545233 exercicios-resolvidos-de-sinais-e-sistemasHenrique Farias
 
ドメインモデルの育て方
ドメインモデルの育て方ドメインモデルの育て方
ドメインモデルの育て方増田 亨
 
「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainerYuta Matsumura
 
IoT診断入門
IoT診断入門IoT診断入門
IoT診断入門黒 林檎
 
Aula4 programacao parte1
Aula4 programacao parte1Aula4 programacao parte1
Aula4 programacao parte1Adriano Gomes
 
PHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったことPHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったことKentaro Matsui
 
Tabela diametro-furo-para-fazer-rosca
Tabela diametro-furo-para-fazer-roscaTabela diametro-furo-para-fazer-rosca
Tabela diametro-furo-para-fazer-roscaBraga2013
 
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用Life Robotics
 
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについてSEGADevTech
 

Mais procurados (20)

Rolamentos SKF.ppt
Rolamentos SKF.pptRolamentos SKF.ppt
Rolamentos SKF.ppt
 
オープンソースのドローン用フライトコントローラ「Dronecode」の概要( #OSC15tk)
オープンソースのドローン用フライトコントローラ「Dronecode」の概要( #OSC15tk)オープンソースのドローン用フライトコントローラ「Dronecode」の概要( #OSC15tk)
オープンソースのドローン用フライトコントローラ「Dronecode」の概要( #OSC15tk)
 
ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2ドメイン駆動設計(DDD)の実践Part2
ドメイン駆動設計(DDD)の実践Part2
 
Linguagens de programação para controladores lógicos programáveis copia - c...
Linguagens de programação para controladores lógicos programáveis   copia - c...Linguagens de programação para controladores lógicos programáveis   copia - c...
Linguagens de programação para controladores lógicos programáveis copia - c...
 
Tabela de roscas x furos
Tabela de roscas x furosTabela de roscas x furos
Tabela de roscas x furos
 
Unityでロボットの教師データは作れる!
Unityでロボットの教師データは作れる!Unityでロボットの教師データは作れる!
Unityでロボットの教師データは作れる!
 
CEDEC2021 プランナーもハックしよう 業務効率化、ローコード開発とテクニカルプランナー
CEDEC2021 プランナーもハックしよう 業務効率化、ローコード開発とテクニカルプランナーCEDEC2021 プランナーもハックしよう 業務効率化、ローコード開発とテクニカルプランナー
CEDEC2021 プランナーもハックしよう 業務効率化、ローコード開発とテクニカルプランナー
 
クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説
 
101545233 exercicios-resolvidos-de-sinais-e-sistemas
101545233 exercicios-resolvidos-de-sinais-e-sistemas101545233 exercicios-resolvidos-de-sinais-e-sistemas
101545233 exercicios-resolvidos-de-sinais-e-sistemas
 
ドメインモデルの育て方
ドメインモデルの育て方ドメインモデルの育て方
ドメインモデルの育て方
 
「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer「自分のとこでは動くけど…」を無くす devcontainer
「自分のとこでは動くけど…」を無くす devcontainer
 
CNC
CNCCNC
CNC
 
IoT診断入門
IoT診断入門IoT診断入門
IoT診断入門
 
Aula4 programacao parte1
Aula4 programacao parte1Aula4 programacao parte1
Aula4 programacao parte1
 
João miramar
João miramarJoão miramar
João miramar
 
PHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったことPHPで大規模ブラウザゲームを開発してわかったこと
PHPで大規模ブラウザゲームを開発してわかったこと
 
Tabela diametro-furo-para-fazer-rosca
Tabela diametro-furo-para-fazer-roscaTabela diametro-furo-para-fazer-rosca
Tabela diametro-furo-para-fazer-rosca
 
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
 
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
「龍が如く7 光と闇の行方」の自動テスト活用事例とテスト自動化チーム(仮)による若手育成の取り組みについて
 
A3921を使用した100A級MDの製作
A3921を使用した100A級MDの製作A3921を使用した100A級MDの製作
A3921を使用した100A級MDの製作
 

Destaque

Introdução aos Kits Lego NXT
Introdução aos Kits Lego NXTIntrodução aos Kits Lego NXT
Introdução aos Kits Lego NXTFernando Passold
 
Introdução à Programação com Robôs Lego
Introdução à Programação com Robôs LegoIntrodução à Programação com Robôs Lego
Introdução à Programação com Robôs LegoRayner Pires
 
Apresentação lego mindstorms
Apresentação lego mindstormsApresentação lego mindstorms
Apresentação lego mindstormsCristina Conchinha
 
Capacitação nxt
Capacitação nxtCapacitação nxt
Capacitação nxtsanduel
 
Introdução aos kits Lego RCX
Introdução aos kits Lego RCXIntrodução aos kits Lego RCX
Introdução aos kits Lego RCXFernando Passold
 
Taller NXT(2) Sesión 001
Taller NXT(2) Sesión 001Taller NXT(2) Sesión 001
Taller NXT(2) Sesión 001Roman Martin
 
Projeto de pesquisa: Jogando dominó de matrizes e determinantes
Projeto de pesquisa: Jogando dominó de matrizes e determinantesProjeto de pesquisa: Jogando dominó de matrizes e determinantes
Projeto de pesquisa: Jogando dominó de matrizes e determinantesWesley Freitas
 
EV3#1: Blocos fundamentais
EV3#1: Blocos fundamentaisEV3#1: Blocos fundamentais
EV3#1: Blocos fundamentaisAna Carneirinho
 
Lego mindstorms manual de usuario nxt 2.0
Lego mindstorms manual de usuario nxt 2.0Lego mindstorms manual de usuario nxt 2.0
Lego mindstorms manual de usuario nxt 2.0Nico Fonseca
 
Psicologia criminal
Psicologia criminalPsicologia criminal
Psicologia criminalingahh
 
jogos matemáticos
jogos matemáticosjogos matemáticos
jogos matemáticoshome
 
User guide lego mindstorms ev3 10 all pt
User guide lego mindstorms ev3 10 all ptUser guide lego mindstorms ev3 10 all pt
User guide lego mindstorms ev3 10 all ptAdriano Cardoso
 
Apostila matematica com jogos e atividades
Apostila matematica com jogos e atividadesApostila matematica com jogos e atividades
Apostila matematica com jogos e atividadesMarcelo Santos
 
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Fernando Passold
 

Destaque (20)

Introdução aos Kits Lego NXT
Introdução aos Kits Lego NXTIntrodução aos Kits Lego NXT
Introdução aos Kits Lego NXT
 
Introdução à Programação com Robôs Lego
Introdução à Programação com Robôs LegoIntrodução à Programação com Robôs Lego
Introdução à Programação com Robôs Lego
 
Apresentação lego mindstorms
Apresentação lego mindstormsApresentação lego mindstorms
Apresentação lego mindstorms
 
Capacitação nxt
Capacitação nxtCapacitação nxt
Capacitação nxt
 
Guia de robotica
Guia de roboticaGuia de robotica
Guia de robotica
 
Introdução aos kits Lego RCX
Introdução aos kits Lego RCXIntrodução aos kits Lego RCX
Introdução aos kits Lego RCX
 
Tutorial de robotica
Tutorial de robotica Tutorial de robotica
Tutorial de robotica
 
Taller NXT(2) Sesión 001
Taller NXT(2) Sesión 001Taller NXT(2) Sesión 001
Taller NXT(2) Sesión 001
 
Projeto de pesquisa: Jogando dominó de matrizes e determinantes
Projeto de pesquisa: Jogando dominó de matrizes e determinantesProjeto de pesquisa: Jogando dominó de matrizes e determinantes
Projeto de pesquisa: Jogando dominó de matrizes e determinantes
 
Jogo de Domino em grupo
Jogo de Domino em grupoJogo de Domino em grupo
Jogo de Domino em grupo
 
Robotc guia
Robotc guiaRobotc guia
Robotc guia
 
Guia de Usuario Lego NXT
Guia de Usuario Lego NXTGuia de Usuario Lego NXT
Guia de Usuario Lego NXT
 
Lego mindstorms
Lego mindstormsLego mindstorms
Lego mindstorms
 
EV3#1: Blocos fundamentais
EV3#1: Blocos fundamentaisEV3#1: Blocos fundamentais
EV3#1: Blocos fundamentais
 
Lego mindstorms manual de usuario nxt 2.0
Lego mindstorms manual de usuario nxt 2.0Lego mindstorms manual de usuario nxt 2.0
Lego mindstorms manual de usuario nxt 2.0
 
Psicologia criminal
Psicologia criminalPsicologia criminal
Psicologia criminal
 
jogos matemáticos
jogos matemáticosjogos matemáticos
jogos matemáticos
 
User guide lego mindstorms ev3 10 all pt
User guide lego mindstorms ev3 10 all ptUser guide lego mindstorms ev3 10 all pt
User guide lego mindstorms ev3 10 all pt
 
Apostila matematica com jogos e atividades
Apostila matematica com jogos e atividadesApostila matematica com jogos e atividades
Apostila matematica com jogos e atividades
 
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
Programação de Kits Lego NXT usando Linguagem Gráfica Nativa (ou NXT-G)
 

Semelhante a Introdução à Programação com Robôs Lego

Amostra robos lego
Amostra robos legoAmostra robos lego
Amostra robos legoArtur (Ft)
 
Robô seguidor de linha
Robô seguidor de linhaRobô seguidor de linha
Robô seguidor de linhaIsvaldo Souza
 
Apresentacao tcc_kinect hack na domotica
Apresentacao tcc_kinect hack na domoticaApresentacao tcc_kinect hack na domotica
Apresentacao tcc_kinect hack na domoticaLuiz Gustavo
 
Artigo tecpar ráfagan - Pesquisando a viabilidade de utilização de engin...
Artigo tecpar   ráfagan - Pesquisando a viabilidade de utilização de engin...Artigo tecpar   ráfagan - Pesquisando a viabilidade de utilização de engin...
Artigo tecpar ráfagan - Pesquisando a viabilidade de utilização de engin...Ráfagan Abreu
 
Software Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaSoftware Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaLinux User Goup Alagoas
 
Implementação de um robot móvel
Implementação de um robot móvelImplementação de um robot móvel
Implementação de um robot móvelpjclima
 
Kinect e Natural Users Interfaces
Kinect e Natural Users InterfacesKinect e Natural Users Interfaces
Kinect e Natural Users InterfacesMauricio Alegretti
 
Introdução a Informática Básica
Introdução a Informática BásicaIntrodução a Informática Básica
Introdução a Informática BásicaFernando Palma
 
Python Training #1 - ed5
Python Training #1 - ed5Python Training #1 - ed5
Python Training #1 - ed5Fabio Spanhol
 
Manual do usuário do sistema de lousa a
Manual do usuário do sistema de lousa  aManual do usuário do sistema de lousa  a
Manual do usuário do sistema de lousa aFernanda Oliveira
 
Manual do usuário do sistema de Lousa Interativa Portátil uBoard
Manual do usuário do sistema de Lousa Interativa Portátil uBoardManual do usuário do sistema de Lousa Interativa Portátil uBoard
Manual do usuário do sistema de Lousa Interativa Portátil uBoardGeorge Gomes
 

Semelhante a Introdução à Programação com Robôs Lego (20)

Amostra robos lego
Amostra robos legoAmostra robos lego
Amostra robos lego
 
Programação ev3
Programação ev3Programação ev3
Programação ev3
 
Lego Mindstorms.
Lego Mindstorms. Lego Mindstorms.
Lego Mindstorms.
 
Robotica1 ok
Robotica1 okRobotica1 ok
Robotica1 ok
 
Robotica1
Robotica1Robotica1
Robotica1
 
Robotica 2016 2
Robotica 2016 2Robotica 2016 2
Robotica 2016 2
 
Lego mindstorms ev3
Lego mindstorms ev3Lego mindstorms ev3
Lego mindstorms ev3
 
Robô seguidor de linha
Robô seguidor de linhaRobô seguidor de linha
Robô seguidor de linha
 
Apresentacao tcc_kinect hack na domotica
Apresentacao tcc_kinect hack na domoticaApresentacao tcc_kinect hack na domotica
Apresentacao tcc_kinect hack na domotica
 
OpenKinect, o Kinect para todos
OpenKinect, o Kinect para todosOpenKinect, o Kinect para todos
OpenKinect, o Kinect para todos
 
Artigo tecpar ráfagan - Pesquisando a viabilidade de utilização de engin...
Artigo tecpar   ráfagan - Pesquisando a viabilidade de utilização de engin...Artigo tecpar   ráfagan - Pesquisando a viabilidade de utilização de engin...
Artigo tecpar ráfagan - Pesquisando a viabilidade de utilização de engin...
 
Software Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaSoftware Livre para Aplicações em Robótica
Software Livre para Aplicações em Robótica
 
Fórum respostas
Fórum  respostasFórum  respostas
Fórum respostas
 
Implementação de um robot móvel
Implementação de um robot móvelImplementação de um robot móvel
Implementação de um robot móvel
 
Kinect e Natural Users Interfaces
Kinect e Natural Users InterfacesKinect e Natural Users Interfaces
Kinect e Natural Users Interfaces
 
Introdução a Informática Básica
Introdução a Informática BásicaIntrodução a Informática Básica
Introdução a Informática Básica
 
Manual lab ino
Manual lab inoManual lab ino
Manual lab ino
 
Python Training #1 - ed5
Python Training #1 - ed5Python Training #1 - ed5
Python Training #1 - ed5
 
Manual do usuário do sistema de lousa a
Manual do usuário do sistema de lousa  aManual do usuário do sistema de lousa  a
Manual do usuário do sistema de lousa a
 
Manual do usuário do sistema de Lousa Interativa Portátil uBoard
Manual do usuário do sistema de Lousa Interativa Portátil uBoardManual do usuário do sistema de Lousa Interativa Portátil uBoard
Manual do usuário do sistema de Lousa Interativa Portátil uBoard
 

Mais de Colégio Cerp

Albertina Mitjáns Martinez - No site do Colégio http://zip.net/bdq1Dz
Albertina Mitjáns Martinez    -   No site do Colégio   http://zip.net/bdq1DzAlbertina Mitjáns Martinez    -   No site do Colégio   http://zip.net/bdq1Dz
Albertina Mitjáns Martinez - No site do Colégio http://zip.net/bdq1DzColégio Cerp
 
Em 2014 parceria com LEGO education
Em 2014 parceria com LEGO educationEm 2014 parceria com LEGO education
Em 2014 parceria com LEGO educationColégio Cerp
 
00 livro contadoresdehistorias
00 livro contadoresdehistorias00 livro contadoresdehistorias
00 livro contadoresdehistoriasColégio Cerp
 
13 frases de winston churchill
13 frases de winston churchill13 frases de winston churchill
13 frases de winston churchillColégio Cerp
 
Infantilruthrocha marcelo-
Infantilruthrocha marcelo-Infantilruthrocha marcelo-
Infantilruthrocha marcelo-Colégio Cerp
 
China 130414195118-phpapp01
China 130414195118-phpapp01China 130414195118-phpapp01
China 130414195118-phpapp01Colégio Cerp
 
Palestra ed. financeira
Palestra   ed. financeiraPalestra   ed. financeira
Palestra ed. financeiraColégio Cerp
 

Mais de Colégio Cerp (16)

Albertina Mitjáns Martinez - No site do Colégio http://zip.net/bdq1Dz
Albertina Mitjáns Martinez    -   No site do Colégio   http://zip.net/bdq1DzAlbertina Mitjáns Martinez    -   No site do Colégio   http://zip.net/bdq1Dz
Albertina Mitjáns Martinez - No site do Colégio http://zip.net/bdq1Dz
 
Tempo de Pensar
Tempo de PensarTempo de Pensar
Tempo de Pensar
 
Diarioweb
DiariowebDiarioweb
Diarioweb
 
Diarioweb2
Diarioweb2Diarioweb2
Diarioweb2
 
Em 2014 parceria com LEGO education
Em 2014 parceria com LEGO educationEm 2014 parceria com LEGO education
Em 2014 parceria com LEGO education
 
Guia ortografico
Guia ortograficoGuia ortografico
Guia ortografico
 
Muito legal
Muito legalMuito legal
Muito legal
 
A leitura
A leituraA leitura
A leitura
 
Colégio Cerp
Colégio CerpColégio Cerp
Colégio Cerp
 
00 livro contadoresdehistorias
00 livro contadoresdehistorias00 livro contadoresdehistorias
00 livro contadoresdehistorias
 
Red bull
Red bullRed bull
Red bull
 
13 frases de winston churchill
13 frases de winston churchill13 frases de winston churchill
13 frases de winston churchill
 
Infantilruthrocha marcelo-
Infantilruthrocha marcelo-Infantilruthrocha marcelo-
Infantilruthrocha marcelo-
 
China 130414195118-phpapp01
China 130414195118-phpapp01China 130414195118-phpapp01
China 130414195118-phpapp01
 
Metálica
MetálicaMetálica
Metálica
 
Palestra ed. financeira
Palestra   ed. financeiraPalestra   ed. financeira
Palestra ed. financeira
 

Último

Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveaulasgege
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdfJorge Andrade
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfaulasgege
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresaulasgege
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresLilianPiola
 
Regência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfRegência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfmirandadudu08
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfEditoraEnovus
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxfabiolalopesmartins1
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Susana Stoffel
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMVanessaCavalcante37
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Mary Alvarenga
 
Guia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfGuia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfEyshilaKelly1
 
Lírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptxLírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptxfabiolalopesmartins1
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesMary Alvarenga
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBAline Santana
 

Último (20)

Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chaveAula - 2º Ano - Cultura e Sociedade - Conceitos-chave
Aula - 2º Ano - Cultura e Sociedade - Conceitos-chave
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf02. Informática - Windows 10 apostila completa.pdf
02. Informática - Windows 10 apostila completa.pdf
 
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -XI OLIMPÍADAS DA LÍNGUA PORTUGUESA      -
XI OLIMPÍADAS DA LÍNGUA PORTUGUESA -
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdf
 
Sociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autoresSociologia Contemporânea - Uma Abordagem dos principais autores
Sociologia Contemporânea - Uma Abordagem dos principais autores
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
 
Regência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdfRegência Nominal e Verbal português .pdf
Regência Nominal e Verbal português .pdf
 
Simulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdfSimulado 1 Etapa - 2024 Proximo Passo.pdf
Simulado 1 Etapa - 2024 Proximo Passo.pdf
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
A experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptxA experiência amorosa e a reflexão sobre o Amor.pptx
A experiência amorosa e a reflexão sobre o Amor.pptx
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.Família de palavras.ppt com exemplos e exercícios interativos.
Família de palavras.ppt com exemplos e exercícios interativos.
 
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEMCOMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
COMPETÊNCIA 1 DA REDAÇÃO DO ENEM - REDAÇÃO ENEM
 
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
Grupo Tribalhista - Música Velha Infância (cruzadinha e caça palavras)
 
Guia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdfGuia completo da Previdênci a - Reforma .pdf
Guia completo da Previdênci a - Reforma .pdf
 
Lírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptxLírica Camoniana- A mudança na lírica de Camões.pptx
Lírica Camoniana- A mudança na lírica de Camões.pptx
 
A Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das MãesA Arte de Escrever Poemas - Dia das Mães
A Arte de Escrever Poemas - Dia das Mães
 
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASBCRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
CRÔNICAS DE UMA TURMA - TURMA DE 9ºANO - EASB
 

Introdução à Programação com Robôs Lego

  • 1. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo – Módulo III Julho de 2010
  • 2. Apoio: Realização: Departamento de Ciência da Computação Autores: • Ana Paula Suzuki paullasuzuki@gmail.com • André Reis de Geus geus.andre@gmail.com • Gabriela Quirino Pereira gabiquirino@gmail.com • Rayner de Melo Pires raynermp@gmail.com • Salviano Ludgério Felipe Gomes salviano.lfg@gmail.com Introdução à Programação com Robôs Lego está sob a Licença Creative Commons Atribuição-Não a obras Derivadas.
  • 3. SSUMÁRIOUMÁRIO 1 O que é o NXT?...............................................................................................................................4 2 Explicando o NXT...........................................................................................................................4 As portas de entrada e saída.......................................................................................................5 O visor.........................................................................................................................................6 O alto falante...............................................................................................................................6 Os botões de navegação .............................................................................................................6 3 Explicando os sensores....................................................................................................................7 Sensor de luz................................................................................................................................7 Sensor de toque...........................................................................................................................7 Sensor de Ultrassom ...................................................................................................................8 Sensor de Som.............................................................................................................................8 4 Explicando os Servomotores ..........................................................................................................9 Sensor de rotação embutido .......................................................................................................9 5 A montagem do nosso modelo......................................................................................................10 6 O que é programação?...................................................................................................................43 7 O que é lógica de programação?....................................................................................................44 8 O que é um algoritmo?..................................................................................................................44 9 Comandos de Controle..................................................................................................................44 Operadores Lógicos..................................................................................................................47 Operadores Relacionais............................................................................................................48 10 O que é entrada e saída de dados?...............................................................................................49 11 O software....................................................................................................................................51 Transferindo um programa para o NXT ...................................................................................53 Paleta Padrão (Common Pallete).............................................................................................55 Paleta Completa (Complete Pallete).........................................................................................69 Paleta Personalizada (Custom Pallete) ...................................................................................79 12 Referências..................................................................................................................................82
  • 4. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo O que é o NXT?O que é o NXT? O Lego Mindstorms NXT mais se parece com um brinquedo, e é utilizado amplamente em todo o mundo por escolas, universidades, e mesmo por crianças. Na verdade ele é um kit de robô programável, voltado para a educação tecnológica1 , lançado pela Lego em Julho de 2006, substituindo a primeira geração do kit Lego Mindstorms. O nosso kit é o Kit Base 9797 e é composto por 431 peças: 3 servomotores2 , 4 sensores (toque, som, luz e ultrassom), 7 cabos para conexões com motores e sensores, um cabo para interface USB, o Brick Inteligente NXT, que é o corpo central do robô, bateria recarregável, base giratória, rodinhas com pneus e várias peças conhecidas como Lego Technic, como blocos, vigas, eixos, rodas, engrenagens e polias. O Brick NXT (em português, tijolo) é o cérebro dessas pequenas máquinas. Ele viabiliza autonomia na execução de diferentes tarefas tais como a criação, programação e montagem de robôs com noções de distância, capazes de reagir a movimentos, ruídos e cores3 , e de executar movimentos com razoável grau de precisão. O kit também inclui o NXT-G, um ambiente de programação gráfico que possibilita a criação e o download de programas para o NXT. Os novos modelos permitem que se criem não apenas estruturas, mas também comportamentos, permitindo a construção de modelos interativos, com os quais se pode aprender conceitos básicos de ciência e de engenharia. Os empregos didáticos abrangem as áreas de robótica, controle, automação, física, matemática, programação e projetos. ExplicandoExplicando o NXTo NXT 1 O lema da Educação Tecnológica é preparar os estudantes para não serem apenas usuários de ferramentas tecnológicas, mas capazes de criar, solucionar problemas e usar os tipos de tecnologia de forma racional, efetiva e significativa. 2 Servomotor é uma máquina, mecânica ou eletromecânica, que apresenta movimento proporcional a um comando, em vez de girar ou se mover livremente sem um controle mais efetivo de posição como a maioria dos motores. 3 Neste caso, para a percepção de cores é necessário a utilização do sensor de cores, que não acompanha o kit 9797. 44
  • 5. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Como já foi dito, o Brick NXT é o corpo central do robô. Nele conectaremos cabos que vão até os motores e cabos que vêm dos sensores. Ele será como o cérebro (e como o coração). Nele está contido o processador, que receberá os programas que criaremos e então os interpretará (executará) fazendo o robô montado ganhar movimentos. Para facilitar a comunicação e melhorar a compreensão dessa apostila pelos leitores, aqui vamos nos referenciar ao Brick NXT somente como NXT. As portas de entrada e saídaAs portas de entrada e saída Como mostrado na figura acima, o NXT possui três portas de saída (output), onde se conectam os motores. Essas portas estão acima do visor (portas A, B e C). Abaixo dos botões estão mais quatro portas, agora as de entrada (input), onde se conectam os sensores (portas 1, 2, 3 e 4). É importante checar com atenção se os motores e sensores estão conectados corretamente pois eles não são permutáveis. A porta USB para comunicação com o software está próxima às portas de comunicação com os motores. Através dela podemos instalar os programas do computador para o robô, e também coletar dados do robô para o computador. Caso não queiramos fazer essa comunicação através de fios, podemos utilizar o bluetooth, também disponível no NXT. Desse modo precisaremos do nome do NXT, que é mostrado no visor. 55
  • 6. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo O visorO visor Na parte superior do visor, no canto esquerdo, vemos ícones que informam sobre o status e da conexão bluetooth ou USB do robô. No canto direito vemos o ícone da bateria informando a carga disponível. Na parte de baixo do visor é mostrado os menus disponíveis no NXT. O alto falanteO alto falante O alto falante encontra-se na lateral direita do NXT. Crie programas com sons reais e os ouça quando executar o programa. Os botões de navegaçãoOs botões de navegação O botão central - laranja - é a tecla Enter do robô. Ele também é usado para ligar o robô. As setas direcionais - em cinza claro - são utilizadas para a navegação nos menus disponíveis no visor. O botão inferior - em cinza escuro - é utilizado para a navegação nos diferentes níveis dos menus. Geralmente é utilizado como o botão Voltar. Também é usado para desligar o robô. Faça você mesmo! Com o NXT na mão veja como ele é ligado e desligado. 66
  • 7. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo ExplicandoExplicando os sensoresos sensores Os sensores biológicos do nosso corpo são células especializadas que são sensíveis a temperatura, luminosidade, vibração, toxinas, hormônios, proteínas, entre outros. No caso dos nossos robôs, podemos pegar a definição do dicionário: "Designação comum de dispositivos elétricos, eletrônicos, mecânicos ou biológicos capazes de responder a estímulos de natureza física (temperatura, pressão, umidade, velocidade, aceleração, luminosidade e etc.). São utilizados em sistemas de controle e monitoramento." No nosso kit temos quatro sensores: o de luz, o de toque, o de ultrassom e o de som. Vamos ver para que serve cada um? SensorSensor de luzde luz O sensor de luz é um dos dois sensores que dá visão ao robô (o sensor de ultrassom é o outro). É ele que permite que o robô distingua entre claro e escuro – branco e preto. Ele pode ler a intensidade de luz numa sala e pode medir a intensidade de luz em superfícies coloridas. Sugestões para uso Você pode usar o sensor de luz para criar um robô alarme de assaltante: quando um intruso entrar numa sala e acender a lâmpada o robô pode reagir e defender sua propriedade. Você também pode usar o sensor de luz para criar um robô que segue linhas ou um robô que classifica coisas por cores. Detectando a luz ambiente Teste a habilidade do sensor de luz em detectar a luz ambiente medindo os níveis de luz em diferentes locais da sala. Por exemplo, aponte o sensor em direção à janela. Então aponte-o para baixo da mesa. Veja como modificam as leituras. Faça você mesmo! Conecte o sensor ao NXT. Selecione no visor o submenu View. Selecione o ícone do sensor de luz e a porta onde você o conectou, e pressione o botão Run (botão laranja). Agora aponte o sensor para as diferentes cores disponíveis na folha de teste de cores. (Caso a sua apostila esteja em preto e branco pergunte ao monitor sobre a folha de teste colorida). Try me O NXT vêm com a função Try Me. Conecte o sensor de luz à porta 3 do NXT e selecione o menu "Try Me" no NXT para testar o sensor de luz. Você terá uma reação divertida. SensorSensor de toquede toque O sensor de toque concede ao robô o sentido do tato. Ele detecta quando o botão do sensor está sendo pressionado, indicando que está em contato com alguma coisa, e também quando ele é liberado. 77
  • 8. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Sugestões para uso Você pode usar o sensor de toque para fazer seu robô pegar coisas: um braço robótico equipado com um sensor de toque permite o robô saber se há ou não alguma coisa em seu braço para agarrar. Ou você pode fazer seu robô agir a um comando. Por exemplo, pressionando o botão do sensor fazer o robô realizar alguma ação: andar, falar, fechar uma porta ou ligar sua TV. Try me O NXT vêm com a função Try Me. Conecte o sensor de toque à porta 1 do NXT e selecione o menu "Try Me" no NXT para testar o sensor de toque. Você terá uma reação divertida. SensorSensor de Ultrassomde Ultrassom Permite que o robô "veja" e passe a detectar onde os objetos estão. Você pode usá-lo para fazer o robô evitar obstáculos, detectar e medir a distância, e detectar movimentos. O sensor de ultrassom mede distâncias em centímetros e em polegadas. Ele é capaz de medir distâncias de 0 a 255 centímetros com uma precisão de +/- 3 cm. O sensor usa a mesma técnica que os morcegos usam: ele consegue medir a distância calculando o tempo que leva para uma onda sonora bater em um objeto e retornar – como se fosse um eco. Objetos maiores com superfícies duras retornam melhores leituras. Enquanto que objetos feitos de tecido macio ou que possuem curvas (como uma bola) ou que são muito finos e pequenos podem ser difíceis para o sensor detectar. * Dois ou mais sensores ultrassônicos atuando no mesmo espaço podem interromper uns aos outros sua leitura. Faça você mesmo! Conecte o sensor de ultrassom ao NXT. Selecione no visor o submenu View. Selecione o ícone do sensor de ultrassom e a porta onde você o conectou, e pressione o botão Run (botão laranja). Para medir a distância de um objeto mova sua mão para perto do sensor e observe a mudança de leitura no visor. Try me O NXT vêm com a função Try Me. Conecte o sensor de ultrassom à porta 4 do NXT e selecione o menu "Try Me" no NXT para testar o sensor de ultrassom Você terá uma reação divertida. SensorSensor de Somde Som O sensor de som faz com que seu robô ouça! O sensor de som pode detectar tanto decibéis (dB) quanto decibel ajustado (dBA). Um decibel é uma medida da pressão do som. dBA: no modo dBA a sensibilidade do sensor de som é ajustada para a 88
  • 9. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo sensibilidade dos ouvidos humanos. Em outras palavras, são os sons que os seus ouvidos são capazes de ouvir. dB: na medição de decibéis padrão (sem ajuste) todos os sons são medidos com a mesma sensibilidade. Deste modo, estes sons podem ser muito altos ou muito baixos para serem ouvidos por nossos ouvidos. O sensor de som pode medir níveis de pressão de som de até 90 dB – o mesmo produzido por uma roçadeira de gramas. Níveis de pressão sonora são muito complexos, então as leituras do sensor de som são mostradas no visor em percentagens (%). Quanto menor for o valor, mais calmo é o ambiente. Por exemplo: 4 - 5% - é como uma sala de estar silenciosa; 5 - 10% - seria como uma pessoa conversando um pouco distante; 10 - 30% - é como uma conversação normal próxima ao sensor, ou uma música tocando em um volume normal; 30 - 100% - é como pessoas gritando ou uma música sendo tocada em volume alto. Faça você mesmo! Teste a habilidade do sensor de som: Conecte o sensor de som no NXT; Selecione o submenu View no visor do NXT. Selecione o ícone do sensor de som e a porta onde você o conectou. Faça alguns barulhos e veja as leituras no visor. Use o sensor para medir sons próximos a você. Que altura seus amigos falam? Quanto barulho faz o ar condicionado? Try Me O NXT vêm com a função Try Me. Conecte o sensor de som à porta 2 do NXT e selecione o menu "Try Me" no NXT para testá-lo. ExplicandoExplicando os Servomotoresos Servomotores SensorSensor de rotação embutidode rotação embutido Cada um dos três servomotores inclusos no kit possui um sensor de rotação embutido em si. Isso permite que se possa controlar os movimentos do robô com mais precisão. O sensor de rotação mede as rotações do motor em graus, ou em voltas completas (com a exatidão de +/- 1 grau). Uma volta equivale a 360º, então se você define um motor para rodar 180º seu eixo de saída rodará meia volta. O sensor de rotação embutido em cada motor também lhe permite definir velocidades diferentes para seus motores (definindo parâmetros de força diferentes no software). * Tente rodar os motores em velocidades diferentes. 99
  • 10. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Faça você mesmo! Teste a capacidade do sensor de rotação embutido em medir distância: Conecte um motor ao NXT; Selecione o submenu View no visor do NXT; Selecione o ícone de rotações dos motores; Selecione a porta onde você conectou o motor; Conecte uma roda ao motor e meça as rotações enquanto rola a rodinha ao longo do chão. Try Me O NXT vêm com a função Try Me. Selecione o menu "Try Me" no NXT para testar os motores. Você verá. AA montagem do nosso modelomontagem do nosso modelo Nessa parte começaremos a montagem do nosso modelo de robô. O modelo pronto deverá ficar parecido com a imagem abaixo. A diferença é que o nosso modelo ficará todo conectado. 1010
  • 11. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Usamos esse modelo pois é relativamente fácil, rápido e utiliza todos os sensores que acompanham o kit, servindo muito bem ao propósito de apresentação que temos. As ilustrações e o passo-a-passo que seguiremos foi copiado do guia ilustrado que acompanha o kit Lego Educacional 9797. Vamos agora montar nosso robô. Iremos construí-lo passo-a-passo, testando todos os sensores, um de cada vez. Primeiramente, o robô montado ficará como na imagem abaixo, sem os sensores: As imagens seguintes mostram a montagem passo-a-passo. As peças utilizadas e as suas quantidades aparecerão dentro do retângulo de fundo preenchido em azul. Próximo a esses retângulos vêm as ilustrações de encaixe das peças. Os números grandes em negrito enumeram cada passo. Basta seguir as ilustrações e montar o robô. 1111
  • 12. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 1212
  • 13. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 1313
  • 14. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 1414
  • 15. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 1515
  • 16. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 1616
  • 17. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 1717
  • 18. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 1818
  • 19. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Agora vamos testar os motores 1919
  • 20. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 2020
  • 21. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Vamos testar o som. 2121
  • 22. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 2222
  • 23. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Testando se seu robô "enxerga": 2323
  • 24. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 2424
  • 25. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 2525
  • 26. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 2626
  • 27. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 2727
  • 28. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 2828
  • 29. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 2929
  • 30. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 3030
  • 31. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 3131
  • 32. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 3232
  • 33. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 3333
  • 34. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 3434
  • 35. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 3535
  • 36. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 3636
  • 37. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 3737
  • 38. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 3838
  • 39. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 3939
  • 40. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 4040
  • 41. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 4141
  • 42. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 4242
  • 43. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Antes de começarmos a trabalhar com o software que utilizaremos para criar os programas para os robôs LEGO temos que falar sobre programação e sobre a lógica de programação. O que é programação?O que é programação? Programação, segundo o dicionário, é o ato ou efeito de programar ou planejar um evento. Também consta que programa é um plano contendo as ações a serem tomadas em um evento. Mais especificamente, na área da informática, a programação é o ato de programar uma máquina para que uma tarefa (programa) seja executada por ela. O programa é uma sequência de códigos onde especificamos o quê fazer e como fazer. Com as definições anteriores, podemos inferir uma definição mais elaborada, com termos mais adequados. Programação é o processo de escrita, teste e manutenção de um programa de computador. O programa é escrito em uma linguagem de programação - embora seja possível, com alguma dificuldade, escrevê-lo diretamente em linguagem de máquina - seguindo uma lógica de programação. Diferentes partes de um programa podem ser escritas em diferentes linguagens. “Software” é um termo inglês generalizado que designa o conjunto de programas/aplicações armazenados em computador que são executados a fim de resolver alguma tarefa ou solucionar 4343
  • 44. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo algum problema. No Brasil também utilizamos o termo programa quando queremos substituir o termo em inglês. Note que o prefixo SOFT (de software) é usado em contraposição ao prefixo HARD (de hardware). Ambos os termos já foram discutidos anteriormente no primeiro módulo desse projeto. O que é lógica de programação?O que é lógica de programação? Lógica de Programação é a técnica de desenvolver uma sequência lógica de passos para atingir determinados objetivos dentro de certas regras baseadas na Lógica Matemática e que depois são adaptados para a Linguagem de Programação utilizada pelo programador para implementar (construir) seu software. É a técnica de encadear pensamentos para atingir determinado objetivo. A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir a sequência lógica para o desenvolvimento. Essa sequência lógica de passos é conhecida como algoritmo. Vejamos mais abaixo. O que é um algoritmo?O que é um algoritmo? Definição: uma sequência de passos (ações) que devem ser executados para se alcançar um determinado objetivo. Nota: Não confunda “algoritmo” com “algarismo”. São duas palavras com significados completamente diferentes. Embora a palavra pareça um pouco estranha, executamos algoritmos cotidianamente. Por exemplo: a rotina diária de um aluno, que se levanta de manhã, se prepara, pega um ônibus (ou carro) para vir até a UFG, assiste as aulas, volta para a casa (de ônibus ou carro), estuda durante a tarde, toma banho, janta, estuda depois do jantar, e em seguida vai dormir, é um algoritmo que a maioria dos alunos executa diariamente (ou pelo menos deveria executar). Um algoritmo também pode ser comparado como uma receita culinária. Se obedecermos passo a passo as instruções de uma receita, chegamos sempre ao mesmo resultado. Mais abaixo teremos vários exemplos de algoritmos. Comandos de ControleComandos de Controle Os comandos de controle permitem alterar a direção tomada por um programa (desvio), ou fazer com que partes específicas de um algoritmo seja executada mais uma vez (loop). Existem três estruturas básicas para a construção de algoritmos: sequenciação, seleção e repetição. A combinação destas três estruturas permite-nos a construção de algoritmos para a resolução de problemas. Imagine a seguinte situação: precisamos elaborar um algoritmo para trocar uma lâmpada. O algoritmo abaixo é um exemplo para a resolução. 4444
  • 45. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Algoritmo 1 Início - pegue uma escada; - coloque-a embaixo da lâmpada; - busque uma lâmpada nova; - suba na escada com a lâmpada nova; - retire a lâmpada velha; - coloque a lâmpada nova; - desça da escada. Fim Observe que este algoritmo resolve o nosso problema da troca de lâmpada. Trata-se de um algoritmo bastante simples, que utiliza-se apenas da estrutura de sequenciação, ou seja, nenhuma seleção ou repetição de procedimentos aparece no algoritmo. Uma estrutura de sequência, caracteriza-se por possuir uma única sequência de ações, que é executada apenas uma vez. No entanto, antes de trocarmos a lâmpada devemos nos certificar de que ela realmente esteja queimada, para então trocá-la. Assim, podemos melhorar o nosso algoritmo. Algoritmo 2 Início - ligue o interruptor - se a lâmpada não acender, então: - pegue uma escada - coloque-a embaixo da lâmpada - busque uma lâmpada nova - suba na escada com a lâmpada nova - retire a lâmpada velha - coloque a lâmpada nova - desça da escada - fim-se Fim Observe que agora o nosso algoritmo, além da estrutura de sequência, passa a utilizar uma estrutura de seleção. Na estrutura de seleção, uma condição deve ser analisada. A partir do resultado da análise, um “caminho” do algoritmo será executado. Em outras palavras, uma estrutura de seleção seleciona (escolhe) ações a serem executadas a partir de uma condição (que pode ser simples ou composta). Embora nosso algoritmo tenha melhorado, ainda podemos deixá-lo mais completo. Quando verificamos que a lâmpada está queimada, subimos para trocá-la, mas não consideramos a hipótese da lâmpada nova também estar queimada, e se isso ocorrer, precisaremos executar algumas ações novamente, até que possamos efetivamente resolver nosso problema. 4545
  • 46. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Algoritmo 3 Início - ligue o interruptor - se a lâmpada não acender, então: - pegue uma escada - coloque-a embaixo da lâmpada - enquanto a lâmpada não acender, faça: - busque uma lâmpada nova - suba na escada com a lâmpada nova - retire a lâmpada velha - coloque a lâmpada nova - desça da escada - fim-enquanto - fim-se Fim Neste algoritmo somente pararemos de trocar a lâmpada quando colocarmos uma lâmpada que acenda. Portanto, um conjunto de ações será executado repetidamente enquanto a condição de repetição for verdadeira. Assim, inserimos uma estrutura de repetição no nosso algoritmo, que passa a trabalhar com as três estruturas básicas de construção de algoritmos. Vamos supor agora que tenhamos 3 lâmpadas na sala de estar de uma casa, e queremos trocar as que não estiverem funcionando. Para isso inserimos outro estilo de estrutura de repetição. Algoritmo 4 Início - para (as lâmpadas da sala) de 1 até 3 faça: - ligue o interruptor - se a lâmpada não acender, então: - pegue uma escada - coloque-a embaixo da lâmpada - enquanto a lâmpada não acender, faça: - busque uma lâmpada nova - suba na escada com a lâmpada nova - retire a lâmpada velha - coloque a lâmpada nova - desça da escada - fim-enquanto - fim-se - fim-para Fim É importante salientar que existem várias formas de se construir um algoritmo, pois as pessoas pensam de formas diferentes. No entanto, devemos sempre buscar a melhor forma possível de se resolver um problema. 4646
  • 47. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Faça você mesmo! 1) Um homem precisa atravessar um rio com um barco que possui capacidade de transportar apenas ele e mais uma de suas três cargas, que são: um cachorro, uma galinha e um saco de milho. O que o homem deve fazer para conseguir atravessar o rio sem perder as suas cargas? Lembrando que o homem não pode deixar a galinha com o milho (pois a galinha comeria o milho) e nem o cachorro com a galinha (o cachorro comeria a galinha). 2) Três jesuítas e três canibais precisam atravessar um rio. No entanto dispõem apenas de um barco com capacidade para duas pessoas. Por medida de segurança não se permite que em alguma das margens do rio a quantidade de jesuítas seja inferior à quantidade de canibais. Qual a sequência de viagens necessárias para a travessia do rio com segurança para os jesuítas? Muitas vezes será necessário desviar a execução do programa segundo uma condição. Exemplo: ir à universidade de carro ou de ônibus? Para se testar condições é necessário utilizar operadores lógicos e operadores relacionais. Operadores LógicosOperadores Lógicos Os operadores "e", "ou" e "não" permitem realizar a combinação lógica de variáveis4 do tipo booleano (lógico). Para isto utilizam-se as tabelas verdade: Variável1Variável1 Variável2Variável2 EE OUOU V V V V V F F V F V F V F F F F VariávelVariável NÃONÃO V F F V 4 Na programação, uma variável é um elemento capaz de reter e representar um valor ou expressão. As variáveis são associadas a "nomes", chamados identificadores. 4747
  • 48. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Podemos modificar os algoritmos anteriores para ilustrar o uso de operadores lógicos. Algoritmo 5 Início - para (as lâmpadas da sala) de 1 até 3 faça: - ligue o interruptor - se a lâmpada não acender, então: - pegue uma escada - coloque-a embaixo da lâmpada - busque uma lâmpada nova - suba na escada com a lâmpada nova - retire a lâmpada velha - coloque a lâmpada nova - desça da escada - se (a lâmpada continua apagada) e (lâmpadas novas acabaram), então: - Pare! - fim-se - fim-se - fim-para Fim Operadores RelacionaisOperadores Relacionais Permitem medir a relação - ou realizar a comparação - entre dois valores. A igualdade é dada por ( = ). Ex: 5 = 5 A desigualdade é dada por ( <> ). Ex: 4 <> 5 Maior que, pelo símbolo ( > ). Ex: 5 > 4 Menor que, pelo símbolo ( < ). Ex: 4 < 5 Maior ou igual, pelo símbolo ( >= ). Ex: 5 >= 5, 5 >= 3 Menor ou igual, pelo símbolo ( <= ). Ex: 4 <= 4, 2 <= 4 Negação ( ! ). Ex: !3 Continuando o exemplo com lâmpadas, podemos exemplificar o uso de um operador relacional da seguinte forma: Algoritmo 6 Início - enquanto (houver lâmpadas queimadas) e (tiver lâmpada em estoque) faça: - troque lâmpada queimada por uma que funcione - fim-enquanto - se (nº de lâmpadas trocadas = nº de lâmpadas queimadas), então: 4848
  • 49. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo - Imprimir (“Terminou com sucesso!”) - senão: - Imprimir (“Terminou com falha!”) - fim-senão - fim-se Fim O que é entrada e saída de dados?O que é entrada e saída de dados? Todo sistema, por definição, tem uma entrada (ou um conjunto de entradas), um processamento (ou conjunto de processamentos), e uma saída. É assim com o nosso sistema respiratório, sistema nervoso, sistema digestivo, e também com o sistema computacional. Vimos no primeiro módulo do projeto que no hardware temos entrada e saída de dados. O mesmo acontece no software. O software recebe uma entrada, processa os dados conforme manda seu algoritmo e depois gera uma saída. Assim também funcionam os robôs LEGO. A entrada de dados pode ser dada pela inserção de dados através de teclado, de uma placa de rede, modem, placa de som ou de outro dispositivo, ou pela atribuição de um valor à uma variável. Nos robôs LEGO a entrada é fornecida pelos quatro sensores, conectados às portas 1, 2, 3 e 4. O algoritmo abaixo exemplifica o processo de atribuição de valores à variáveis, e também como usar outro algoritmo pronto para realizar uma tarefa específica. Algoritmo 7 Início - enquanto (houver lâmpadas queimadas) e (tiver lâmpada em estoque) faça: - lampada1 ← lampada_queimada - lampada2 ← lampada_nova - troqueLampadas (lampada1, lampada2) - fim-enquanto - se (nº de lâmpadas trocadas = nº de lâmpadas queimadas), então: - Imprimir (“Terminou com sucesso!”) - senão: - Imprimir (“Terminou com falha!”) - fim-senão - fim-se Fim No algoritmo 7, o procedimento “troqueLampadas” é um outro algoritmo separado, o algoritmo 1. É ele que faz todo o trabalho de pegar a escada, subir nela, retirar a lâmpada queimada - representada pela entrada “lampada1” -, pegar a lâmpada nova - representada pela entrada “lampada2” - e colocar no lugar da lâmpada velha. Isso é uma representação de entrada (inserção) de dados. No exemplo acima não inserimos dados via teclado, mas um algoritmo forneceu dados para outro algoritmo através das variáveis “lampada1” e “lampada2”. 4949
  • 50. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo A saída ou retorno de dados deve ser o resultado de alguma operação realizada por um programa, proveniente de uma entrada dada anteriormente. Os valores podem ser armazenados em variáveis, podem servir como entrada para outras funções ou também podem ser utilizados pelo dispositivo de hardware de saída padrão, que no caso dos robôs LEGO são os três motores conectados às portas A, B e C. Algoritmo 8 Início - nrLampadasQueimadas ← receber_nº_de_lâmpadas_queimadas() - nrLampadasTrocadas ← receber_nº_de_lâmpadas_trocadas() - se (nrLampadasTrocadas = nrLampadasQueimadas), então: - Imprimir (“Terminou com sucesso!”) - senão: - Imprimir (“Terminou com falha!”) - fim-senão - fim-se Fim No algoritmo 8 podemos ver que as variáveis “nrLampadasQueimadas” e “nrLampadasTrocadas” receberam, respectivamente, a saída - ou o retorno, ou ainda o resultado - dos algoritmos “receber_nº_de_lâmpadas_queimadas” e “receber_nº_de_lâmpadas_trocadas”. Para reforçar os termos entrada e saída mostramos um último algoritmo, que utiliza a função matemática de soma. A função “SOMAR” recebe dois argumentos - ou duas entradas - do tipo número. O trabalho dessa função é somar os dois números recebidos e retornar o resultado. Este resultado é armazenado na variável “resultado”. Depois o conteúdo dessa variável é impresso no monitor. No caso do exemplo abaixo, utilizamos os números inteiros “2” e “3” como argumentos da função “SOMAR”. Algoritmo 9 Início - resultado = SOMAR(2, 3) - Imprimir (resultado) Fim 5050
  • 51. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo OO softwaresoftware Dê um duplo clique no ícone criado na sua área de trabalho. Após carregar o programa (barra verde totalmente carregada), a primeira janela do programa será inicializada: 5151
  • 52. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 1 Robot Educator: contém instruções de programação e construção usando o modelo do DRIVING BASE que acompanha o kit 2 My Portal: acesso direto à novas ferramentas, downloads e informações atualizadas disponíveis na internet 3 Barra de Ferramentas: ferramentas mais usadas, dispostas de maneira fácil e acessível 4 Getting Started: demonstração dos comandos básicos para operar o software pela primeira vez, além de uma rápida visão dos recursos oferecidos 5 Help Window (Ajuda Rápida): mostra dicas e funções básicas dos ícones e ferramentas 6 Paletas de programação: paletas que dispõem de todas as funções de programação do NXT 7 Painel de Inicialização rápida: permite abrir um novo programa ou um que foi salvo anteriormente. No painel de inicialização rápida, clique em Start New Program, digite o nome do seu programa e clique em "GO". A tela habilitará à paleta de ferramentas e outras funções: Área de trabalho onde será colocado os ícones para montar a programação NXT Window fornece informações sobre o NXT conectado, como memória, comunicação e download 5252
  • 53. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo TransferindoTransferindo um programa para o NXTum programa para o NXT Conecte o NXT ao computador através do cabo USB. Caso seja a primeira vez a ser conectado aparecerá, no canto inferior direito da tela, a seguinte mensagem em um balão: "Novo Hardware Dectado". Aguarde até que outra mensagem seja exibida: "Novo Hardware encontrado e pronto para ser usado". Controlador (NXT Window) Os cinco botões abaixo estabelecem a comunicação entre o computador e o NXT: 5353
  • 54. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Paletas de Programação A paleta de programação está dividida em 3 partes: 5454
  • 55. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo PaletaPaleta Padrão (Common Pallete)Padrão (Common Pallete) Move: controla os movimentos dos motores, individuais ou em conjunto. Record / Play: "ensina" os movimentos ao seu robô, permitindo-lhe executar exatamente os movimentos anteriores dos motores. Sound: emite sons diversos, pré-gravados, e reproduz tons musicais definidos. Display: exibe informações na tela do NXT, desde ícones até dados obtidos pelos sensores. Wait: determina uma espera, que pode ser em função do tempo do evento de um dos sensores. Loop: função usada para determinar a repetição de uma sequência de programação, indefinidamente ou não. Switch: permite ao programa avaliar uma condição e, em seguida, um valor lógico (True/False), conforme opções configuradas. Comando MOVE Ao arrastar esse ícone para a área de trabalho, aparecerá uma caixa de configuração na parte inferior da tela: 5555
  • 56. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Ela indica a quantidade de rotações que cada um dos motores realizou, ou poderá 'resetar' os valores. 1. Port: configura qual porta será controlada, podendo ser uma, duas ou as três simultaneamente. 2. Direction: controla o sentido da rotação do motor (para frente, para trás ou parado). Controla a direção do robô, quando a locomoção depende de 2 motores, cada um controlando um lado da locomoção. 3. Steering: habilitado somente quando 2 motores estão selecionados, o que permite ao robô fazer curvas e indica qual a direção que ele deverá virar, ou se a curva será mais “aberta” ou mais “fechada”. Se somente um motor ou os três motores estiverem selecionados, essa opção ficará desabilitada. 4. Power: nível de potência dos motores (que vai de 0% a 100%). Este valor pode ser ajustado digitando o número na caixa à direita, ou deslizando o ponteiro sobre a barra para a direita ou para a esquerda. 5. Duration: a duração do movimento do motor pode ser fornecida em: • Rotações: equivale a uma volta completa do eixo; • Graus: uma volta equivale a 360º, meia volta a 180º e assim sucessivamente; • Segundos: independente do número de voltas do motor, a porta é ativada pelo tempo determinado; • Ilimitado: irá se mover indefinidamente ou até que a programação execute o próximo ícone da sequência. Quando se habilita essa função, a Steering é desabilitada automaticamente; 6. Next Action: define a próxima ação dos motores. Pode ser: • Brake: fará com que o robô pare ao realizar a quantidade de movimento determinado, o que pode fazê-lo parar bruscamente, além de "travar" o motor na posição exata. • Coast: somente desligará o motor, permitindo que este continue o movimento por inércia, permitindo uma parada mais suave. Faça você mesmo! Programe o robô para que ele ande para frente, segundo as configurações abaixo, e meça a distância percorrida: 5656
  • 57. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo • Por 5 segundos: ________________ • Por 5 rotações: ________________ • Por 180º: ________________ Comando RECORD/PLAY Esses comandos são usados para gravar as ações que os motores realizam, desde ensinar a posição de algum objeto para o braço mecânico até a sequência de movimentos que pode ser realizada por todos os motores ordenadamente. Quando for escolhida a função Record, aparecerá a seguinte tela de configuração: 1. Name: dê um nome para a sequência a ser gravada. 2. Recording: escolha quais motores terão seus movimentos registrados. 3. Time: quanto tempo irá durar a gravação da sequência de movimentos. Quando for escolhida a função Play, pode-se escolher na lista que aparece qual das ações gravadas será executada. Comando SOUND Utilizamos essa função para executar uma sequência de sons, ou para reproduzir notas musicais durante a execução do programa. O painel de configuração da opção SoundFile é apresentado abaixo: 1. Action: selecionar SoundFile significa utilizar arquivos de som pré-gravados; 2. Control: inicia a execução do som (Play) ou a interrompe (Stop). Quando selecionamos Stop, as outras funções ficam desabilitadas; 3. Volume: define a intensidade em que o som será executado; 4. Function: faz o som se repetir indefinidamente, ao selecionar Repeat; 5757
  • 58. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 5. File: seleciona qual arquivo de som será reproduzido. Ao clicar em um arquivo, o software irá reproduzí-lo, desde que a placa de som esteja habilitada. Ao fazer o download do programa para o NXT, o arquivo de som utilizado também será enviado. 6. Wait: A opção "Wait for Completion" define quando a próxima ação será executada. Quando a opção está marcada a ação só será executada quando o som ou tom for emitido por completo; caso contrário, a ação ocorrerá assim que o som iniciar. O painel de configuração da opção Tone é apresentado abaixo: 5. Note: podemos escolher uma nova nota para ser executada e sua duração em segundos. Ainda é possível selecionar a nota musical através do teclado. Comando DISPLAY Podemos selecionar várias maneiras – Action – de exibir as informações no display do NXT. Observe as figuras abaixo: 5858
  • 59. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 1. Action: tipo de conteúdo a ser exibido (Imagem, Texto, Desenho, Reset); 2. Display: sobrescrever o anterior ou apagá-lo (Clear); 3. Files: imagens disponíveis para exibição; 4. Position: exibe a imagem selecionada, correspondente ao arquivo escolhido, e a sua posição no visor - X(horizontal) e Y(vertical); 5. Text: quando esta função for selecionado em Action, uma janela para digitação do texto deverá aparecer; 6. Position: posição do texto na tela; é possível escolher em que linha irá aparecer. A tela é composta por 8 linhas; 7. Type: é possível escolher o tipo de desenho - Point, Circle, Line - para desenhar e criar desenhos; no caso da linha, define-se o seu início e seu fim; no caso do círculo, define-se o raio; 8. Position: mostra a posição do objeto no display. Ao selecionar 'Reset' em Action, o display será limpado. Comando WAIT O comando Wait insere uma espera no programa, condicionando a continuidade da programação a um tempo ou a um evento de sensor. Quando Time é selecionado no campo Control, a janela abaixo aparece: 1. Until: Determina a quantidade a ser esperada. O tempo é dado em segundos e décimos de segundos. Como sinal de separação de casas decimais, são aceitos tanto ponto quanto vírgula. Quando selecionamos Touch Sensor no campo Control, a janela abaixo aparece: 1. Port: selecione a porta em que o sensor está conectado; 5959
  • 60. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 2. Action: selecione a ação no sensor de toque - Pressed (Pressionado), Released (Liberado) e Bumped (Pressionado e, em seguida, Liberado). Quando selecionamos Sound Sensor: 1. Port: selecione a porta em que o sensor está conectado; 2. Until: configura a espera do sensor por um som maior ou menor que a intensidade definida pelas barras ou pelo valor inserido. 3. Determina a quantidade a ser esperada. Quando é selecionado Light Sensor: 1. Port: selecione a porta em que o sensor está conectado; 2. Until: determina se o valor que o programa irá esperar é "mais claro" (direita) ou mais escuro (esquerda), ou ainda fazendo uso dos símbolos de < ou >. A variação deve estar entre 0 e 100. 3. Determina a quantidade a ser esperada. 4. Function: ao selecionar a caixa Generate Light, o sensor irá acender seu led localizado na parte inferior para produzir luz para leitura, caso contrário, fará a leitura baseado na luz ambiente. Quando é selecionado Ultrasonic Sensor: 6060
  • 61. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 1. Port: selecione a porta em que o sensor está conectado; 2. Until: determina se o valor lido pelo sensor será maior (mais longe, à direita) ou menor (mais perto, à esquerda), podendo usar os sinais de < ou > para determinar a distância. 3. Determina a quantidade a ser esperada. 4. Show: a medida usada pode ser em polegadas (inches) ou centímetros (centimeters). A conversão é feita automaticamente. O valor deverá ser entre 0 e 250 polegadas ou de 0 a 635 centímetros. Quando é selecionado NXT Buttons: 1. Button: seleciona qual dos botões aguarda para ser pressionado, podendo ser ou . O botão não pode ser utilizado devido a sua função "Voltar". 2. Action: define a ação que deverá ocorrer com o botão escolhido, da mesma forma que o sensor de toque. 3. Determina a quantidade a ser esperada. Quando selecionamos Rotation Sensor: Como já explicamos antes, os servomotores possuem sensores de rotação embutidos. 1. Port: seleciona a porta em que o motor estará conectado; 6161
  • 62. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 2. Action: seleciona se deverá ler (Read) a rotação ou zerar (Reset) a leitura. Se Reset for selecionado, a opção Until é desabilitada; 3. Until: determina até quando a leitura deverá ser feita. Aqui considera-se o lado da rotação; 4. Aqui inserimos o valor, a ser usado pelo Until, em graus (degrees) ou rotações (rotations); 5. Determina a quantidade a ser esperada. Quando selecionado Timer: Aqui, o NXT irá ler o tempo de seus cronômetros internos (3 cronômetros), que podem ser usados para determinar o tempo de resposta ou não do robô. 1. Timer: seleciona um dos três cronômetros disponíveis; 2. Action: caso esteja selecionada a caixa Read ele lê o valor obtido no timer, ou zera o cronômetro selecionado se a caixa Reset estiver marcada; 3. Until: determina se deve esperar um valor maior ou menor que o indicado a frente (em segundos). Quando selecionado Receive Message: 1. Message: determina que tipo de mensagem deve receber, se texto (text), número (number) ou lógico (logic); 2. Compare to: permite comparar as mensagens, com limites pré-definidos. 3. MailBox: determina em qual caixa de correio deve receber a mensagem. Existem 10 diferentes caixas para serem usadas. 6262
  • 63. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Comando LOOP Com o Loop, podemos condicionar a repetição de uma sequência de código de programação de diversas maneiras. Quando for selecionado Forever: 1. Control: determina o modo de repetição; Selecionando Forever (em português, para sempre), o trecho da programação contido no loop será repetido infinitas vezes; 2. Show: quando selecionada a caixa Counter, o programa registra quantas vezes o loop foi realizado. Caso contrário, somente repete sem registrar. Quando for selecionado Time: Quando for selecionado Time, o loop se repetirá durante um determinado tempo, ou seja, ele aciona um timer que irá determinar quando a sequência dentro do loop é iniciada e verifica se esse tempo é mais do que o configurado (em segundos). Se for maior, o loop termina e passa para a sequência de comando seguinte. Quando for selecionado Logic: Nesse caso o campo Until determina o valor da condição - true ou false - para que o fim do loop aconteça. 6363
  • 64. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Comando SWITCH Permite que o programa tome uma "decisão" conforme o que foi pré-determinado. Basicamente, possibilita duas opções: Value ou Sensor. Quandor for escolhido Value: 1. Type: define o tipo de valor, no caso de Value, que pode ser Logic, Number ou Text; 2. Display: como será exibido o ícone. Em Flat View, teremos linhas separadas, permitindo visualizar a programação de cada condição. Caso contrário, somente será visto uma linha de cada vez e é necessário clicar na aba para ver cada uma das linhas; 3. Conditions: permite estabelecer as condições. Assim, quando selecionado Logic no campo Type, teremos apenas duas condições (True ou False). Caso seja selecionado Text ou Number, pode-se adicionar mais condições, desde que Flat View não seja habilitado. Só é possível ver as opções uma a uma, pelo clique nas abas, que aparecem conforme mais condições são adicionadas. 4. O botão * permite definir qual a condição padrão a ser tomada, caso nenhuma das outras seja possível. Quando for selecionado Touch Sensor: 2. Port: escolha da porta onde o sensor está conectado; 3. Action: seleciona qual padrão deve ser esperado do sensor. Exemplo: se selecionado Pressed, deve-se "seguir" a linha de programação que fica acima da bifurcação; caso contrário, segue-se a linha abaixo. No caso de escolher Bumped, deve-se escolher padrões somente entre verdadeiro ou falso. Quando for selecionado Sound Sensor: 6464
  • 65. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 3. Compare: configura o parâmetro de comparação de volume de som. Quando for selecionado Light Sensor: 3. Compare: configura o parâmetro de comparação do nível de luminosidade; 4. Function: configura se a leitura será somente da luz ambiente, ou, ao selecionar-se o Generate light, acender o led no sensor. Quando for selecionado Ultrasonic Sensor: 3. Compare: configura o parâmetro de comparação de distância do objeto detectado; 4. Show: determina a unidade de medida - polegadas (inches) ou centímetros (centimeters). Quando for selecionado NXT Buttons: 6565
  • 66. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 1. Button: seleciona o botão do NXT; 2. Action: tem a mesma função Touch Sensor. Quando for selecionado Rotation Sensor: 2. Action: configura ler o valor do sensor ou zerá-lo; 4. Compare: configura o sentido da rotação, e se será maior ou menor que o valor determinado, em graus ou rotações. Quando for selecionado Timer: 3. Timer: seleciona um dos 03 timers disponíveis no software; 4. Compare: determina o valor de comparação do timer, em segundos; Quando for selecionado Receive Message: 1. Message: tipo de mensagem a ser recebida: Text, number, logic; 2. Compare to: parâmetro para comparação conforme tipo selecionado acima: número para number, texto para text, true ou false para logic; 3. Mailbox: escolher qual das 10 caixas de correio disponíveis no software deve ser consultada para a comparação. 6666
  • 67. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 6767
  • 68. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Data Hub Existe uma maneira de relacionar e utilizar os valores dos ícones de maneira a transformá-los em gráficos no display, ou mesmo utilizar esses valores como potência de motores, parâmetros de sensores, etc. Para isso, clicamos na parte inferior do ícone. Quando houver plugues a direita, eles são saídas de dados, e a esquerda, eles se tornam entrada de dados. Isso significa que um mesmo dado não pode ser utilizado de diversas formas. Uma maneira mais simples de visualizar, seria colocando o valor de um sensor no Display do NXT. Para isso, conecte o seu sensor de ultrassom na porta 01 do seu NXT, e construa o seguinte programa na sua tela: Nesse exemplo, temos o sensor de ultrassom, a função "Number to Text", para possibilitar a compatibilidade do formato do dado de saída com o dado de entrada. Com esse programa acima, toda vez que alterar a distância do objeto com o sensor, no display irá aparecer a distância medida pelo sensor. Note que as linhas são de cores diferentes, representando formatos diferentes de dados. Caso a linha se torne cinza, significa que não existe compatibilidade entre o dado de saída e o formato de entrada do mesmo. 6868
  • 69. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Formato do Dado Cor da linha de conexão Numérico Amarelo Texto Laranja Incompatível Cinza Lógico Verde PaletaPaleta Completa (Complete Pallete)Completa (Complete Pallete) Como o nome já diz, contém todas as funções de programação disponíveis no software. Engloba todos os ícones da Paleta Comum e mais alguns, permitindo um nível de programação mais complexo. Divide-se em: Common: Reúne as funções básicas do software, já vistas anteriormente; Action: Ações a serem realizadas pelo programa, como ativar motores, emitir sons, exibir informações no display. Refere-se a saída de dados/ações; Sensor: Funções e leitura dos sensores, tratamento da entrada de dados; Flow: Funções de fluxo do programa, como aguardar, repetir, esperar; Data: Funções relativas ao tipo e tratamento de dados obtidos; Advanced: Funções avançadas de tratamento de variáveis. 6969
  • 70. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Essas funções também podem ser acessadas pela Paleta Padrão (já vista anteriormente). 7070
  • 71. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo ACTION Refere-se a ícones de execução de tarefas, como inicializar um motor, exibir uma mensagem na tela, aguardar um evento, tempo ou sensor, etc. Conta ainda com os comandos: COMANDO SEND MESSAGE Configura o envio de mensagens via Bluetooth, para diferentes NXTs. Para que o comando funcione, lembre-se de ativar no Bluetooth no seu NXT. 1. Connection: indica para qual conexão a mensagem será enviada; 2. Message: indica se a mensagem enviada será de texto (text), número (number), ou lógica (logic); 3. Espaço para inserção da mensagem; 4. Mailbox: indica a qual caixa de correio está endereçada a mensagem no outro NXT. COMANDO LAMP Configura o funcionamento de lâmpadas com o NXT. 1. Port: indica a qual porta a lâmpada está conectada; 2. Action: indica se acende ou apaga a lâmpada; 3. Intensity: configura a intensidade da lâmpada. O valor vai de 0% a 100%. SENSOR Seus comandos permitem ler os valores/respostas dos sensores, calibrar seus valores, e permite que usemos estes dados dentro do programa. 7171
  • 72. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Touch Sensor: Permite testar o funcionamento do seu sensor, quando conectado no NXT. Ao pressioná-lo, irá aparecer o número 1; ao colocar Reset, o sensor voltará a 0. Sound Sensor: Permite saber instantaneamente o valor que o sensor está obtendo, quando conectado ao NXT. Ultra-sonic Sensor: Permite a visualização instantânea do valor que o sensor está lendo. Rotation Sensor: Permite testar o funcionamento do seu sensor, quando conectado ao NXT. Ao pressioná-lo irá aparecer o número 1; ao clicar Reset, o sensor voltará a 0. NXT Buttons: Permite testar o funcionamento do seu sensor, quando conectado ao NXT. Ao pressioná-lo, irá aparecer o número 1; ao clicar reset, o sensor voltará a 0. Timer: Permite alterar os valores dos três timers (cronômetros) do NXT, podendo optar por ler o valor atual ou ainda fazer a contagem iniciar do zero novamente (reset). Receive Message: Permite receber mensagens de outro NXT, respeitando as configurações feitas nos dois NXTs. COMANDO RECEIVE MESSAGE Permite receber mensagens de outro NXT, sem utilizar fios, desde que o tipo de mensagem e o número da caixa de correio (mailbox) sejam os mesmos em ambos NXT. 7272
  • 73. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 1. Message: define o tipo de mensagem que deve ser recebida; 2. Compare to: parâmetro para comparação; 3. Mailbox: define qual a Mailbox deve ser usada para comparar/receber a mensagem. FLOW Tem comandos referentes ao fluxo do programa, como esperas, repetições, tomadas de decisões e parada. COMANDO STOP Não possui painel de configuração e sua função é finalizar todo o programa. No caso de ser usado junto a motores, desliga os motores após uma rotação, interrompendo a leitura dos sensores e das demais funções. Outros comandos do menu FLOW são Wait, Loop e Switch, e já foram vistos anteriormente. DATA Comandos referentes ao tratamento dos dados obtidos pelos sensores ou motores, sendo possível transformá-los em gráficos ou mesmo aprimorar os dados para tornar o desempenho mais eficiente. Logic: realiza operações lógicas a partir dos seguintes operadores lógicos - "And", "Or", "Not" e "Xor". Math: realiza as quatro operações com os valores obtidos pelos sensores, podendo utilizá-los como parâmetros. Compare: compara dois valores entre si. 7373
  • 74. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Range: define o intervalo que pode ser usado, ou que deve ser analisado. Random: determina um valor aleatório, dentro do intervalo determinado. Variable: define o valor de uma variável, a ser usado em comparação, operação ou qualquer outra função. COMANDO LOGIC 1. Define o valor das entradas como verdadeiros ou falsos, e mostra graficamente o resultado; 2. Operation: configura o tipo de operação entre And, Or, Xor e Not. É possível realizar operações com operadores lógicos. Para facilitar a compreensão, siga as tabelas verdade das páginas 46 e 47. COMANDO MATH Permite realizar operações matemáticas (adição, subtração, divisão e multiplicação) com os valores obtidos pelos sensores, utilizando tais resultados em gráficos ou como parâmetros de configuração. 7474
  • 75. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 1. Valores da operação; 2. Operation: tipos de operação: Addition (Adição), Subtraction (Subtração), Multiplication (Multiplicação), Division (Divisão). COMANDO COMPARE Compara valores e define a condição como igualdade, maior que ou menor que. 1. Entrada de valores a serem comparados; 2. Operation: Define o Tipo de Comparação: LessThan (menor que), Greather Than (maior que), Equals (igual). COMANDO RANGE Define o intervalo de valores para ser usado como na configuração. 1. Test: número para testar a condição, se esta não tiver sido definida por outro ícone; 2. Define o início e o fim do intervalo a ser usado; 3. Operation: define se os números estarão dentro (inside) ou fora (outside) do intervalo. COMANDO RANDOM Gera um valor aleatório, dentro de um intervalo determinado, que pode ser usado na configuração. 7575
  • 76. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 1. Range: define o intervalo de valores de onde será escolhido o número aleatório, definido entre o mínimo e o máximo. Quando o valor digitado ultrapassar os valores, tanto acima quanto abaixo, a range permanece no valor mínimo (0), ou no máximo (100). COMANDO VARIABLE Define variáveis para serem usadas durante a programação, sendo que o software possui três pré-definidas. Para criar novas variáveis, vá ao menu Edit > Define Variables e, na caixa que se abre clique em Create para criar uma nova variável e definir o tipo. Ao colocar o ícone na tela, este irá aparecer na relação de variáveis do programa. 1. List: define o nome e o tipo da variável - lógica (logic), numérica (number) ou texto (text); 2. Action: define a ação em relação ao valor da variável; através dele é possível utilizar um valor já definido, ou atribuir um novo para uso posterior; 3. Value: quando habilitado Write em Action, pode-se atribuir um valor, texto ou condição de verdadeiro ou falso, dependendo do tipo da variável. ADVANCED As funções avançadas de tratamentos de variáveis permitem aumentar o uso do software a fim de transformar, armazenar valores e até calibrar os sensores, tornando os robôs o mais independente possíveis. 7676
  • 77. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Text: Combina várias sequências de texto em uma só. Number to Text: Transforma uma sequência de números em texto, para que possa ser usado com ícones que não possuam ligações para números. Keep Alive: Coloca o NXT em estado de espera, seja para efetuar uma ação ou, simplesmente, detectar dados sem consumir excessivamente a bateria. File Access: Permite armazenar números e textos do programa em arquivos na memória do NXT, permitindo o posterior acesso. Calibrate: Permite calibrar os sensores de luz e som em situações específicas. Reset: Permite resetar a posição dos motores, reajustando-os quanto ao movimento conjunto de um par de motores. COMANDO TEXT Combina várias sequências de texto, concatenando até três delas; 1. Text: sequências de texto ou sentenças a serem concatenadas. 7777
  • 78. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo COMANDO NUMBER TO TEXT Converte números para textos, para poder utilizá-los com caixas de texto que não aceitam números. Number: número a ser convertido em texto. COMANDO KEEP ALIVE Faz com que o NXT entre em modo de espera por um tempo determinado, medido em milésimos de segundos, ou "sleep mode". Ao esgotar-se o tempo, o NXT retorna à programação (o que o difere do comando "Wait", que não o coloca em modo de espera). Não apresenta painel de configuração. COMANDO FILE ACCESS Permite registrar dados em arquivos no NXT, para leitura posterior. Podem ser digitados em forma de texto ou números, e são usados para registrar diversos dados obtidos pelo robô. 1. Action: Determina se é para ler (read), escrever (write), fechar (close) ou deletar (delete) o arquivo; 2. Name: Determina o nome do arquivo a ser criado; 3. Type: Tipo do arquivo; 4. Text/Number: Número ou texto a ser escrito no arquivo; COMANDO CALIBRATE Permite calibrar os sensores de luz e de som com os valores do ambiente, permitindo uma interação e precisão maior do robô com o ambiente. 7878
  • 79. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 1. Port: Porta em que o sensor está conectado; 2. Sensor: Tipo de sensor que está conectado, se é de Luz ou de Som; 3. Action: Determina se é para calibrar o sensor ou resetar os valores, voltando a configuração padrão; 4. Value: Determina o valor a ser calibrado, se é o máximo ou mínimo. COMANDO RESET Quando utilizado o comando MOVE, automaticamente o NXT faz um ajuste entre a rotação dos motores configurados, aumentando a precisão dos movimentos. Porém, ao utilizar o parâmetro de configuração COAST, o mesmo pode perder a precisão na quantidade de movimento (Degrees ou Rotations). Para ajustar a duração do movimento nessa situação, usamos o comando RESET MOTOR. 1. Port: Portas que devem ter seus valores resetados. PaletaPaleta Personalizada (Custom Pallete)Personalizada (Custom Pallete) A paleta personalizada irá conter dois menus: os blocos de programa que você irá criar, em My Blocks, ou aqueles que poderão ser baixados via download na internet, em WebDownloads, disponibilizados por usuários como você. Esses blocos de programa são uma sequência de comandos pré-determinados que foram salvos, para facilitar a programação dos seus robôs. My Blocks: reúne os blocos criados pelo usuário. 7979
  • 80. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Web Downloads: reúne todos os blocos que você fizer o download da web. My Blocks - Como criar um bloco personalizado Para ter blocos no menu My Blocks, é preciso criá-los antes. Para isso, siga os seguintes passos: 1. Abra uma janela e crie o programa que você deseja transformar em um bloco, como por exemplo, 2. Em seguida, selecione esse bloco e vá ao menu Edit e clique em Make a New Block. O assistente My Builder será aberto; 3. Em Block Name, nomeie o seu bloco, e em Block Description, escreva uma breve descrição do que ele faz. Logo abaixo aparecem os comandos que você selecionou anteriormente. 8080
  • 81. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo 4. Clique em Next para continuar. 5. Escolha um ícone para representar o bloco e clique em Finish. Quando colocar o ponteiro do mouse sobre My Blocks novamente, irá aparecer o seu ícone do bloco que você criou. Para utilizá-lo, basta arrastá-lo para a área de trabalho do software. 8181
  • 82. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo ReferênciasReferências • MORAES, Paulo Sérgio de. Curso Básico de Lógica de Programação, Unicamp - Centro de Computação, 2000. • [Online] What is NXT? - http://mindstorms.lego.com/en-us/whatisnxt/default.aspx • [Online] NXT Tutorial - http://www.ortop.org/NXT_Tutorial/index.html • Manual de Programação para o NXT software - Educação Tecnológica. ZOOM Ed. Educacional Ltda, 2003. 2003. Introdução à Programação com Robôs Lego está sob a Licença Creative Commons Atribuição-Não a obras Derivadas. 8282
  • 83. Introdução à Programação com Robôs Lego Projeto Levando a Informática do Campus ao Campo Sobre o projeto Este projeto propõe a difusão de conhecimentos da área de computação para jovens alunos da zona rural. Em específico, o conhecimento em informática existente no campus de Catalão da Universidade Federal de Goiás e os jovens pertencentes à zona rural de Catalão, no estado de Goiás. Além disso é vislumbrado a aquisição de conhecimentos por parte dos envolvidos, a possibilidade de incluir o jovem do campo social e digitalmente. É financiado com recursos do CNPQ e apoiado pela Prefeitura Municipal de Catalão. O projeto é coordenado pela Profª Dr. Selma Terezinha Milagre e tem a colaboração dos professores Dr. Alexsandro Santos Soares, Dr. Marcelo Henrique Stoppa, Ms. Márcio Antônio Duarte, Dr. Roberto Mendes Finzi Neto e Dr. Vaston Gonçalves da Costa. Os bolsistas deste projeto são os autores deste material. 8383