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

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: Departamen...
48 downloads 59 Views 7MB Size

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 André Reis de Geus Gabriela Quirino Pereira Rayner de Melo Pires Salviano Ludgério Felipe Gomes

[email protected] [email protected] [email protected] [email protected] [email protected]

Introdução à Programação com Robôs Lego está sob a Licença Creative Commons Atribuição-Não a obras Derivadas.

SUMÁ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 Lego Mindstorms NXT mais se parece com um brinquedo, e é utilizado amplamente em todo o mundo por escolas, universidades, e mesmo por crianças. Na verdade ele é um kit de robô programável, voltado para a educação tecnológica1, lançado pela Lego em Julho de 2006, substituindo a primeira geração do kit Lego Mindstorms. O nosso kit é o Kit Base 9797 e é composto por 431 peças: 3 servomotores2, 4 sensores (toque, som, luz e ultrassom), 7 cabos para conexões com motores e sensores, um cabo para interface USB, o Brick Inteligente NXT, que é o corpo central do robô, bateria recarregável, base giratória, rodinhas com pneus e várias peças conhecidas como Lego Technic, como blocos, vigas, eixos, rodas, engrenagens e polias. O Brick NXT (em português, tijolo) é o cérebro dessas pequenas máquinas. Ele viabiliza autonomia na execução de diferentes tarefas tais como a criação, programação e montagem de robôs com noções de distância, capazes de reagir a movimentos, ruídos e cores3, e de executar movimentos com razoável grau de precisão. O kit também inclui o NXT-G, um ambiente de programação gráfico que possibilita a criação e o download de programas para o NXT. Os novos modelos permitem que se criem não apenas estruturas, mas também comportamentos, permitindo a construção de modelos interativos, com os quais se pode aprender conceitos básicos de ciência e de engenharia. Os empregos didáticos abrangem as áreas de robótica, controle, automação, física, matemática, programação e projetos.

Explicando o NXT

1 O lema da Educação Tecnológica é preparar os estudantes para não serem apenas usuários de ferramentas tecnológicas, mas capazes de criar, solucionar problemas e usar os tipos de tecnologia de forma racional, efetiva e significativa. 2 Servomotor é uma máquina, mecânica ou eletromecânica, que apresenta movimento proporcional a um comando, em vez de girar ou se mover livremente sem um controle mais efetivo de posição como a maioria dos motores. 3 Neste caso, para a percepção de cores é necessário a utilização do sensor de cores, que não acompanha o kit 9797.

4

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

Projeto Levando a Informática do Campus ao Campo

Como já foi dito, o Brick NXT é o corpo central do robô. Nele conectaremos cabos que vão até os motores e cabos que vêm dos sensores. Ele será como o cérebro (e como o coração). Nele está contido o processador, que receberá os programas que criaremos e então os interpretará (executará) fazendo o robô montado ganhar movimentos. Para facilitar a comunicação e melhorar a compreensão dessa apostila pelos leitores, aqui vamos nos referenciar ao Brick NXT somente como NXT.

As portas de entrada e saída Como mostrado na figura acima, o NXT possui três portas de saída (output), onde se conectam os motores. Essas portas estão acima do visor (portas A, B e C). Abaixo dos botões estão mais quatro portas, agora as de entrada (input), onde se conectam os sensores (portas 1, 2, 3 e 4). É importante checar com atenção se os motores e sensores estão conectados corretamente pois eles não são permutáveis. A porta USB para comunicação com o software está próxima às portas de comunicação com os motores. Através dela podemos instalar os programas do computador para o robô, e também coletar dados do robô para o computador. Caso não queiramos fazer essa comunicação através de fios, podemos utilizar o bluetooth, também disponível no NXT. Desse modo precisaremos do nome do NXT, que é mostrado no visor.

5

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

Projeto Levando a Informática do Campus ao Campo

O visor Na parte superior do visor, no canto esquerdo, vemos ícones que informam sobre o status e da conexão bluetooth ou USB do robô. No canto direito vemos o ícone da bateria informando a carga disponível.

Na parte de baixo do visor é mostrado os menus disponíveis no NXT.

O 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çã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.

6

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

Projeto Levando a Informática do Campus ao Campo

Explicando os sensores Os sensores biológicos do nosso corpo são células especializadas que são sensíveis a temperatura, luminosidade, vibração, toxinas, hormônios, proteínas, entre outros. No caso dos nossos robôs, podemos pegar a definição do dicionário: "Designação comum de dispositivos elétricos, eletrônicos, mecânicos ou biológicos capazes de responder a estímulos de natureza física (temperatura, pressão, umidade, velocidade, aceleração, luminosidade e etc.). São utilizados em sistemas de controle e monitoramento." No nosso kit temos quatro sensores: o de luz, o de toque, o de ultrassom e o de som. Vamos ver para que serve cada um?

Sensor de luz 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.

Sensor de 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. 7

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.

Sensor de Ultrassom Permite que o robô "veja" e passe a detectar onde os objetos estão. Você pode usá-lo para fazer o robô evitar obstáculos, detectar e medir a distância, e detectar movimentos. O sensor de ultrassom mede distâncias em centímetros e em polegadas. Ele é capaz de medir distâncias de 0 a 255 centímetros com uma precisão de +/- 3 cm. O sensor usa a mesma técnica que os morcegos usam: ele consegue medir a distância calculando o tempo que leva para uma onda sonora bater em um objeto e retornar – como se fosse um eco. Objetos maiores com superfícies duras retornam melhores leituras. Enquanto que objetos feitos de tecido macio ou que possuem curvas (como uma bola) ou que são muito finos e pequenos podem ser difíceis para o sensor detectar. * Dois ou mais sensores ultrassônicos atuando no mesmo espaço podem interromper uns aos outros sua leitura. Faça você mesmo! Conecte o sensor de ultrassom ao NXT. Selecione no visor o submenu View. Selecione o ícone do sensor de ultrassom e a porta onde você o conectou, e pressione o botão Run (botão laranja). Para medir a distância de um objeto mova sua mão para perto do sensor e observe a mudança de leitura no visor. Try me O NXT vêm com a função Try Me. Conecte o sensor de ultrassom à porta 4 do NXT e selecione o menu "Try Me" no NXT para testar o sensor de ultrassom Você terá uma reação divertida.

Sensor de Som O sensor de som faz com que seu robô ouça! O sensor de som pode detectar tanto decibéis (dB) quanto decibel ajustado (dBA). Um decibel é uma medida da pressão do som. dBA: no modo dBA a sensibilidade do sensor de som é ajustada para a 8

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

Projeto Levando a Informática do Campus ao Campo

sensibilidade dos ouvidos humanos. Em outras palavras, são os sons que os seus ouvidos são capazes de ouvir. dB: na medição de decibéis padrão (sem ajuste) todos os sons são medidos com a mesma sensibilidade. Deste modo, estes sons podem ser muito altos ou muito baixos para serem ouvidos por nossos ouvidos. O sensor de som pode medir níveis de pressão de som de até 90 dB – o mesmo produzido por uma roçadeira de gramas. Níveis de pressão sonora são muito complexos, então as leituras do sensor de som são mostradas no visor em percentagens (%). Quanto menor for o valor, mais calmo é o ambiente. Por exemplo: 4 - 5% - é como uma sala de estar silenciosa; 5 - 10% - seria como uma pessoa conversando um pouco distante; 10 - 30% - é como uma conversação normal próxima ao sensor, ou uma música tocando em um volume normal; 30 - 100% - é como pessoas gritando ou uma música sendo tocada em volume alto. Faça você mesmo! 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.

Explicando os Servomotores Sensor de 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.

9

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á.

A montagem do nosso modelo Nessa parte começaremos a montagem do nosso modelo de robô. O modelo pronto deverá ficar parecido com a imagem abaixo. A diferença é que o nosso modelo ficará todo conectado.

10

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

Projeto Levando a Informática do Campus ao Campo

Usamos esse modelo pois é relativamente fácil, rápido e utiliza todos os sensores que acompanham o kit, servindo muito bem ao propósito de apresentação que temos. As ilustrações e o passo-a-passo que seguiremos foi copiado do guia ilustrado que acompanha o kit Lego Educacional 9797. Vamos agora montar nosso robô. Iremos construí-lo passo-a-passo, testando todos os sensores, um de cada vez. Primeiramente, o robô montado ficará como na imagem abaixo, sem os sensores:

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ô.

11

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

Projeto Levando a Informática do Campus ao Campo

12

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

Projeto Levando a Informática do Campus ao Campo

13

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

Projeto Levando a Informática do Campus ao Campo

14

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

Projeto Levando a Informática do Campus ao Campo

15

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

Projeto Levando a Informática do Campus ao Campo

16

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

Projeto Levando a Informática do Campus ao Campo

17

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

Projeto Levando a Informática do Campus ao Campo

18

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

Projeto Levando a Informática do Campus ao Campo

Agora vamos testar os motores

19

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

Projeto Levando a Informática do Campus ao Campo

20

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

Projeto Levando a Informática do Campus ao Campo

Vamos testar o som.

21

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

Projeto Levando a Informática do Campus ao Campo

22

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

Projeto Levando a Informática do Campus ao Campo

Testando se seu robô "enxerga":

23

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

Projeto Levando a Informática do Campus ao Campo

24

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

Projeto Levando a Informática do Campus ao Campo

25

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

Projeto Levando a Informática do Campus ao Campo

26

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

Projeto Levando a Informática do Campus ao Campo

27

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

Projeto Levando a Informática do Campus ao Campo

28

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

Projeto Levando a Informática do Campus ao Campo

29

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

Projeto Levando a Informática do Campus ao Campo

30

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

Projeto Levando a Informática do Campus ao Campo

31

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

Projeto Levando a Informática do Campus ao Campo

32

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

Projeto Levando a Informática do Campus ao Campo

33

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

Projeto Levando a Informática do Campus ao Campo

34

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

Projeto Levando a Informática do Campus ao Campo

35

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

Projeto Levando a Informática do Campus ao Campo

36

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

Projeto Levando a Informática do Campus ao Campo

37

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

Projeto Levando a Informática do Campus ao Campo

38

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

Projeto Levando a Informática do Campus ao Campo

39

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

Projeto Levando a Informática do Campus ao Campo

40

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

Projeto Levando a Informática do Campus ao Campo

41

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

Projeto Levando a Informática do Campus ao Campo

42

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

Projeto Levando a Informática do Campus ao Campo

Antes de começarmos a trabalhar com o software que utilizaremos para criar os programas para os robôs LEGO temos que falar sobre programação e sobre a lógica de programação.

O que é programação? Programação, segundo o dicionário, é o ato ou efeito de programar ou planejar um evento. Também consta que programa é um plano contendo as ações a serem tomadas em um evento. Mais especificamente, na área da informática, a programação é o ato de programar uma máquina para que uma tarefa (programa) seja executada por ela. O programa é uma sequência de códigos onde especificamos o quê fazer e como fazer. Com as definições anteriores, podemos inferir uma definição mais elaborada, com termos mais adequados. Programação é o processo de escrita, teste e manutenção de um programa de computador. O programa é escrito em uma linguagem de programação - embora seja possível, com alguma dificuldade, escrevê-lo diretamente em linguagem de máquina - seguindo uma lógica de programação. Diferentes partes de um programa podem ser escritas em diferentes linguagens. “Software” é um termo inglês generalizado que designa o conjunto de programas/aplicações armazenados em computador que são executados a fim de resolver alguma tarefa ou solucionar 43

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

Projeto Levando a Informática do Campus ao Campo

algum problema. No Brasil também utilizamos o termo programa quando queremos substituir o termo em inglês. Note que o prefixo SOFT (de software) é usado em contraposição ao prefixo HARD (de hardware). Ambos os termos já foram discutidos anteriormente no primeiro módulo desse projeto.

O que é 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? Definição: uma sequência de passos (ações) que devem ser executados para se alcançar um determinado objetivo. Nota: Não confunda “algoritmo” com “algarismo”. São duas palavras com significados completamente diferentes. Embora a palavra pareça um pouco estranha, executamos algoritmos cotidianamente. Por exemplo: a rotina diária de um aluno, que se levanta de manhã, se prepara, pega um ônibus (ou carro) para vir até a UFG, assiste as aulas, volta para a casa (de ônibus ou carro), estuda durante a tarde, toma banho, janta, estuda depois do jantar, e em seguida vai dormir, é um algoritmo que a maioria dos alunos executa diariamente (ou pelo menos deveria executar). Um algoritmo também pode ser comparado como uma receita culinária. Se obedecermos passo a passo as instruções de uma receita, chegamos sempre ao mesmo resultado. Mais abaixo teremos vários exemplos de algoritmos.

Comandos de Controle Os comandos de controle permitem alterar a direção tomada por um programa (desvio), ou fazer com que partes específicas de um algoritmo seja executada mais uma vez (loop). Existem três estruturas básicas para a construção de algoritmos: sequenciação, seleção e repetição. A combinação destas três estruturas permite-nos a construção de algoritmos para a resolução de problemas. Imagine a seguinte situação: precisamos elaborar um algoritmo para trocar uma lâmpada. O algoritmo abaixo é um exemplo para a resolução.

44

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

Projeto Levando a Informática do Campus ao Campo

Algoritmo 1 Início - pegue uma escada; - coloque-a embaixo da lâmpada; - busque uma lâmpada nova; - suba na escada com a lâmpada nova; - retire a lâmpada velha; - coloque a lâmpada nova; - desça da escada. Fim

Observe que este algoritmo resolve o nosso problema da troca de lâmpada. Trata-se de um algoritmo bastante simples, que utiliza-se apenas da estrutura de sequenciação, ou seja, nenhuma seleção ou repetição de procedimentos aparece no algoritmo. Uma estrutura de sequência, caracteriza-se por possuir uma única sequência de ações, que é executada apenas uma vez. No entanto, antes de trocarmos a lâmpada devemos nos certificar de que ela realmente esteja queimada, para então trocá-la. Assim, podemos melhorar o nosso algoritmo.

Algoritmo 2 Início - ligue o interruptor - se a lâmpada não acender, então: - pegue uma escada - coloque-a embaixo da lâmpada - busque uma lâmpada nova - suba na escada com a lâmpada nova - retire a lâmpada velha - coloque a lâmpada nova - desça da escada - fim-se Fim

Observe que agora o nosso algoritmo, além da estrutura de sequência, passa a utilizar uma estrutura de seleção. Na estrutura de seleção, uma condição deve ser analisada. A partir do resultado da análise, um “caminho” do algoritmo será executado. Em outras palavras, uma estrutura de seleção seleciona (escolhe) ações a serem executadas a partir de uma condição (que pode ser simples ou composta). Embora nosso algoritmo tenha melhorado, ainda podemos deixá-lo mais completo. Quando verificamos que a lâmpada está queimada, subimos para trocá-la, mas não consideramos a hipótese da lâmpada nova também estar queimada, e se isso ocorrer, precisaremos executar algumas ações novamente, até que possamos efetivamente resolver nosso problema.

45

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

Projeto Levando a Informática do Campus ao Campo

Algoritmo 3 Início - ligue o interruptor - se a lâmpada não acender, então: - pegue uma escada - coloque-a embaixo da lâmpada - enquanto a lâmpada não acender, faça: - busque uma lâmpada nova - suba na escada com a lâmpada nova - retire a lâmpada velha - coloque a lâmpada nova - desça da escada - fim-enquanto - fim-se Fim

Neste algoritmo somente pararemos de trocar a lâmpada quando colocarmos uma lâmpada que acenda. Portanto, um conjunto de ações será executado repetidamente enquanto a condição de repetição for verdadeira. Assim, inserimos uma estrutura de repetição no nosso algoritmo, que passa a trabalhar com as três estruturas básicas de construção de algoritmos. Vamos supor agora que tenhamos 3 lâmpadas na sala de estar de uma casa, e queremos trocar as que não estiverem funcionando. Para isso inserimos outro estilo de estrutura de repetição.

Algoritmo 4 Início - para (as lâmpadas da sala) de 1 até 3 faça: - ligue o interruptor - se a lâmpada não acender, então: - pegue uma escada - coloque-a embaixo da lâmpada - enquanto a lâmpada não acender, faça: - busque uma lâmpada nova - suba na escada com a lâmpada nova - retire a lâmpada velha - coloque a lâmpada nova - desça da escada - fim-enquanto - fim-se - fim-para Fim

É 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.

46

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ógicos Os operadores "e", "ou" e "não" permitem realizar a combinação lógica de variáveis4 do tipo booleano (lógico). Para isto utilizam-se as tabelas verdade:

Variável1

Variável2

E

OU

V

V

V

V

V

F

F

V

F

V

F

V

F

F

F

F

Variável NÃO V

F

F

V

4 Na programação, uma variável é um elemento capaz de reter e representar um valor ou expressão. As variáveis são associadas a "nomes", chamados identificadores.

47

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

Projeto Levando a Informática do Campus ao Campo

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 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= ).

Ex:

5 >= 5, 5 >= 3

Menor ou igual, pelo símbolo ( 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.

76

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.

77

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. 78

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.

Paleta 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.

79

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

Projeto Levando a Informática do Campus ao Campo

Web Downloads: reúne todos os blocos que você fizer o download da web.

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.

80

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.

81

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

Projeto Levando a Informática do Campus ao Campo

Referências •

MORAES, Paulo Sérgio de. Curso Básico de Lógica de Programação, Unicamp Centro de Computação, 2000.



[Online] What is NXT? - http://mindstorms.lego.com/en-us/whatisnxt/default.aspx



[Online] NXT Tutorial - http://www.ortop.org/NXT_Tutorial/index.html



Manual de Programação para o NXT software - Educação Tecnológica. ZOOM Ed. Educacional Ltda, 2003. 2003.

Introdução à Programação com Robôs Lego está sob a Licença Creative Commons Atribuição-Não a obras Derivadas.

82

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

Projeto Levando a Informática do Campus ao Campo

Sobre o projeto Este projeto propõe a difusão de conhecimentos da área de computação para jovens alunos da zona rural. Em específico, o conhecimento em informática existente no campus de Catalão da Universidade Federal de Goiás e os jovens pertencentes à zona rural de Catalão, no estado de Goiás. Além disso é vislumbrado a aquisição de conhecimentos por parte dos envolvidos, a possibilidade de incluir o jovem do campo social e digitalmente. É financiado com recursos do CNPQ e apoiado pela Prefeitura Municipal de Catalão. O projeto é coordenado pela Profª Dr. Selma Terezinha Milagre e tem a colaboração dos professores Dr. Alexsandro Santos Soares, Dr. Marcelo Henrique Stoppa, Ms. Márcio Antônio Duarte, Dr. Roberto Mendes Finzi Neto e Dr. Vaston Gonçalves da Costa. Os bolsistas deste projeto são os autores deste material.

83