apostila de programaÇÃo -...

29
4/12/2013 Projeto CNPq-Vale/DAINF/UTFPR-CT | PET-ECO ROBÔ F APOSTILA DE PROGRAMAÇÃO

Upload: phamkien

Post on 08-Nov-2018

229 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

4/12/2013

Projeto CNPq-Vale/DAINF/UTFPR-CT | PET-ECO

ROBÔ F APOSTILA DE PROGRAMAÇÃO

Page 2: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

ROBÔ F APOSTILA DE PROGRAMAÇÃO

2

SUMÁRIO

INTRODUÇÃO 3

PENSAMENTO COMPUTACIONAL 4

INTERFACE DE PROGRAMAÇÃO DO ROBÔ F 5

DEFINIÇÕES BÁSICAS 5

COMANDOS DA API DO ROBÔ F 5

EXEMPLO DE UTILIZAÇÃO DA INTERFACE 10

PROBLEMAS FÁCEIS 11

AVANÇAR EM METROS 12

ROBÔ LIMPADOR 1 12

SENSOR DE ESTACIONAMENTO 1 13

SENSOR DE ESTACIONAMENTO 2 13

SAIA DA MINHA FRENTE 13

PROBLEMAS INTERMEDIÁRIO 14

CODIGO ALIENÍGENA 15

CODIGO ALIENÍGENA 2 16

AJUDANTE DE BOMBEIRO 17

JOGOS OLÍMPICOS 18

TRIÂNGULO EQUILÁTERO 18

DESENHAR POLÍGONOS REGULARES 19

VIRANDO COM AJUDA 19

BARREIRAS ORTOGONAIS 19

ACELERANDO E REDUZINDO 20

BARULHO DO MOTOR 20

RACE DAY 21

ROBÔ LIMPADOR 2 22

PROBLEMAS DIFÍCEIS 23

DESENHO PELA TRAJETÓRIA 24

ROBÔ SEGUIDOR 25

GATO E RATO 26

GATO E RATO2 26

ROBÔ MOTORISTA 27

ROBÔ AUTÔNOMO 28

CONCEITOS BÁSICOS DE ELETRÔNICA 29

Page 3: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

APOSTILA DE PROGRAMAÇÃO ROBÔ F

3

INTRODUÇÃO

Este material serve de apoio ao curso introdutório de robótica e computação baseado na interface

de programação Robô F. Durante o curso serão abordados os assuntos básicos de programação

que são ensinados no início dos cursos de “Sistemas de Informação” e “Engenharia de

Computação” juntamente com alguns tópicos iniciais de eletrônica. Basicamente a apostila reúne

alguns problemas clássicos de programação moldados de forma que possam ser solucionados

usando o Robô F. Para resolver os problemas o estudante pode usar o software de programação

visual desenvolvido pelo PET-ECO, uma interface gráfica que permite organizar comandos na

forma de um fluxograma que então é enviado ao robô, que executa os passos. Na interface

também há a opção de simular o funcionamento do Robô F em um ambiente controlado, além

disso, pode-se monitorar as leituras de sensores e o posicionamento tanto do robô simulado como

do real.

Page 4: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

ROBÔ F APOSTILA DE PROGRAMAÇÃO

4

PENSAMENTO COMPUTACIONAL

Ao pensar em computação as pessoas comumente não a veem como algo diretamente

dependente dos seres humanos. Costuma-se imaginar a programação de computadores como

algo distante do mundo tangível, quase mágico, quando na verdade o cerne da programação está

em qualquer atividade cotidiana: o pensamento computacional.

Pensar computacionalmente inclui ver as coisas de forma lógica e cadenciada, como um passo-a-

passo para resolver um problema ou realizar uma tarefa (a isso podemos chamar de algoritmo),

mas não se resume a isso. Inclui todas as áreas do conhecimento, humanas, exatas e biológicas.

A palavra-chave no pensamento computacional é abstração. A abstração na computação é feita

de forma muito ampla, se lida não somente com números e respostas exatas, mas com situações

reais e que a princípio parecem simplórias (um bom exemplo, e adiantando o que veremos mais à

frente, como fazer um robô se movimentar sem bater nas pessoas ou obstáculos ao redor) se faz

necessário pensar em situações limite e em todas as coisas que podem dar errado.

Outro conceito essencial no pensamento computacional é a automação. Isso significa mecanizar a

abstração o máximo possível, deixando o “trabalho pesado” para as máquinas.

Relacionados diretamente com a automação e a abstração estão os algoritmos. Um algoritmo é

uma sequência finita e bem definida de passos que, quando executados, realizam uma tarefa

específica ou resolvem um problema. Ele é composto por ações simples e bem definidas (não

pode haver ambiguidade, ou seja, cada instrução representa uma ação que deve ser entendida e

realizada). Exemplos de algoritmos variam de triviais, como receitas de culinária e manuais de

instruções, à softwares que controlam trânsito de dados na web.

Na computação, algoritmos são geralmente ensinados em pseudocódigos, que representam a

resolução de um problema usando estruturas de decisão típicas de linguagens de programação.

Dentro desse raciocínio, é possível e desejável aglomerar em uma mesma estrutura vários

comandos simples que estejam relacionados à mesma tarefa. A essas estruturas chamamos de

funções.

Page 5: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

APOSTILA DE PROGRAMAÇÃO ROBÔ F

5

INTERFACE DE PROGRAMAÇÃO DO ROBÔ F

Definições Básicas

A linguagem de programação visual é composta de:

1. Comandos disponíveis na API de programação dos robôs (ver abaixo)

2. Bloco de comandos sequenciais;

3. Loop: assumir que para o módulo 1 só existe while

4. Função com argumentos;

5. Variáveis sem tipificação;

6. Variáveis vetoriais;

7. Operadores

a. Aritméticos básicos (4 operações)

b. Relacionais (maior, menor, maior ou igual, menor ou igual, diferente).

c. Lógicos (and, or).

Comandos da API do Robô F

move wait rotate var

read print if...else while

move

move ( r1, r2 );

Move o robô, sendo r1 e r2 a roda esquerda e direita respectivamente. Cada roda recebe um valor

inteiro de velocidade relativa, sendo 0 a roda parada, 100 a velocidade máxima para frente e -

100 a velocidade máxima para trás do motor.

Exemplo

move (100, 100);

Move o robô em linha reta para frente com velocidade máxima.

Page 6: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

ROBÔ F APOSTILA DE PROGRAMAÇÃO

6

wait

wait ( t );

wait ( t ) serve para controlar o tempo de um comando. O tempo é regulado pelo parâmetro inteiro

t, e é medido em milissegundos.

Exemplo

move (100, 100); wait (1000); move (0, 0);

Faz o robô acionar os motores em velocidade máxima para frente por 1 segundo e depois parar.

rotate

rotate ( a );

Rotaciona o robô em torno de seu próprio eixo ao fazer as rodas girarem em sentidos opostos na

mesma velocidade. Recebe o parâmetro angular inteiro a (-360 a 360). Valores positivos

rotacionam o robô no sentido horário e valores negativos rotacionam o robô no sentido anti-

horário.

Exemplo

rotate (90);

Rotaciona o robô 90º no sentido horário.

Page 7: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

APOSTILA DE PROGRAMAÇÃO ROBÔ F

7

var

var <nome>;

Cria uma variável , ou seja, reserva um espaço de memória para guardar uma variável de

qualquer tipo (números inteiros, reais, caracteres, etc.). O comando também aceita vetores de

tamanho variável.

Exemplo

var x = 0;

Cria uma variável de nome x e atribui o valor zero a ela.

var v; v = [10,20];

Cria um vetor com 2 posições preenchidas com 10 e 20.

Page 8: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

ROBÔ F APOSTILA DE PROGRAMAÇÃO

8

read

read ( Device, var );

Comando usado para guardar valor de uma variável lida pelo sensor. Recebe um parâmetro

Device, que é um dos dispositivos do robô (bússola, sensor de distância e sensores de refletância)

e guarda o valor recebido na variável var.

Exemplo

var y; read (Bussola, y);

Cria uma variável y e guarda o valor lido da bússola em y, no caso um número inteiro

representando um ângulo (0 a 359º).

print

print ( <formato>, [var1, ..., varN] )

Exibe uma mensagem na tela. O formato é delimitado por aspas duplas (“”) e pode conter a

expressão %v, que será substituída pela variável fornecida como parâmetro.

Exemplo

var x = 5; print (“O valor de x é: %x”, x);

Exibe a mensagem: “O valor de x é: 5”.

Page 9: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

APOSTILA DE PROGRAMAÇÃO ROBÔ F

9

if...else

If (condição ) { ... } else { ... }

O comando if (Se),serve para fazer um caminho alternativo . Irá executar um bloco de comandos

apenas se determinada condição for satisfeita. O comando else (Senão) executa um bloco caso a

condição não seja satisfeita

Exemplo

if (x >= 120) {

x = 0; } else {

x = x + 10; }

O valor da variável x será zerado se a variável apresentar um valor maior ou igual a 120. Caso

contrário a variável é incrementada em 10 unidades.

Page 10: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

ROBÔ F APOSTILA DE PROGRAMAÇÃO

10

while

while ( condição )

Comando de loop de repetição. Irá executar um bloco de comandos enquanto uma determinada

condição for satisfeita.

Exemplo

while (x < 120) {

x = x + 10; }

Enquanto o valor da variável x é menor que 120 a variável tem seu valor incrementado em 10

unidades.

Exemplo de Utilização da Interface

Pequeno texto tutorial de como usar o programa

IMAGENS COM LEGENDA DOS BOTOES E DESCIRÇÃO DE SUAS FUNÇÕES

Page 11: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

APOSTILA DE PROGRAMAÇÃO ROBÔ F

11

Problemas Fáceis

Page 12: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

ROBÔ F APOSTILA DE PROGRAMAÇÃO

12

Avançar em metros

Objetivo: aprender funções, condicionais básicas.

Conhecimentos envolvidos: movimento retilíneo uniforme (Física)

Enunciado: Faça uma função chamada andar_metros, que recebe como argumento uma

distancia, contendo a distância em metros que o robô irá percorrer. Considerando uma velocidade

fixa de 0.1 m/s, calcule o tempo necessário, em segundos, de execução do comando

avancar(v,t) para os valores de distancia.

Provocação: verifique através do sensor de distância se é possível andar a quantidade de metros

armazenada em distancia.

Robô Limpador 1

Objetivo: Utilizar funções de movimento.

Conhecimentos envolvidos: Nenhum

Enunciado: Você está desenvolvendo um robô que limpa o chão (como a imagem acima), o robô

possui cerdas limpadoras e um aspirador de pó, ele deve andar pela casa e recolher o máximo de

sujeira que encontrar. Como seu primeiro desafio nesse projeto ensine o robô a andar em zigue-

zague:

Page 13: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

APOSTILA DE PROGRAMAÇÃO ROBÔ F

13

Sensor de estacionamento 1

Objetivo: aprender o funcionamento de um LED

Conhecimentos envolvidos: corrente e tensão em um LED

Enunciado: adicione um LED vermelho e um verde no robô. Deixe o LED vermelho aceso

enquanto o robô não estiver na posição final desejada. Quando o robô alcançar a posição final,

apagar o LED vermelho e acender o LED verde.

Sensor de estacionamento 2

Objetivo: aprender o funcionamento de um LED

Conhecimentos envolvidos: corrente e tensão em um LED

Enunciado: Faça um indicador de distância usando três LEDs que varie de 10 em 10 centímetros.

Coloque três LEDs enfileirados. Quando o robô estiver a uma distância de 40 cm ou mais,

acender um LED. Acender mais um LED a cada 10 cm aproximados do obstáculo.

3 LEDs: de 20 a 29 cm

2 LEDs: de 30 a 39 cm

1 LED: 40 cm ou mais

Saia da Minha Frente

Objetivo: aprender laços infinitos, tomada de decisão, leitura de sensores e laços de repetição.

Conhecimentos envolvidos: lógica.

Enunciado: O Robô F deve executar os seguintes procedimentos:

a) se o leitor de distância não detectou nenhum objeto, o robô anda em frente;

b) se o leitor de distância detectou algo a menos de 40 cm, então o robô deve virar 90 graus e

recomeçar o algoritmo do procedimento a).

Comportamento: Este algoritmo deve fazer com que o robô ande pelo ambiente desviando de

todos os obstáculos encontrados por ele.

Page 14: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

ROBÔ F APOSTILA DE PROGRAMAÇÃO

14

Problemas Intermediários

Page 15: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

APOSTILA DE PROGRAMAÇÃO ROBÔ F

15

Codigo Alienígena

Objetivo: Utilizar arrays e sensor de refletância.

Conhecimentos envolvidos: Váriaveis, arrays, condicionais aninhadas, laços de repetição

Enunciado:

Durante a expedição arqueológica em marte outro artefato foi encontrado: Uma placa branca com

traços pretos. A placa possui uma mensagem oculta, você descobriu que cada letra do código é

formada por linhas em alturas diferentes e que as cinco primeiras letras são relacionadas ao nosso

alfabeto pela relação:

a: 1 linha

b: 2 linha

r: 3 linha

c: 4 linha

d: 5 linha

Ensine o robô a ler a mensagem usando o sensor de refletância.

Page 16: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

ROBÔ F APOSTILA DE PROGRAMAÇÃO

16

Codigo Alienígena 2

Objetivo: Utilizar sensor de distância.

Conhecimentos envolvidos: Variáveis, condicionais aninhados, laços de repetição, sensores

Enunciado:

Você está em uma expedição arqueológica em marte no ano de 2044 e seu grupo acaba de

encontrar vestígios de uma civilização alienígena pré histórica. Um dos artefatos parece uma

mensagem codificada com o formato de uma engrenagem. Estudos foram feitos e descobriu-se

que cada seção ("dente da engrenagem") representa uma letra, onde a distancia do centro até a

borda as tornam diferentes, e que o artefato deve der lido em sentido horário. Decodifique a

mensagem por meio do código das regras abaixo:

o : >130

i : > 120

r : > 100

m : > 90

c : > 70

s : > 60

p : > 40

(as distancias estão em cm)

Page 17: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

APOSTILA DE PROGRAMAÇÃO ROBÔ F

17

Ajudante de Bombeiro

Objetivo: Movimentos complexos

Conhecimentos envolvidos: Variáveis (flags), laços de repetição

Enunciado:

No caso de incendios é comum que as pessoas tenham pouca visibilidade por causa da fumaça e

se percam em locais que não conheçam. Seu robô possui uma lanterna e vai ajudar as pessoas a

saírem do prédio com segurança, mas * **antes deve encontra-las** *. Ensine o robô a chegar ao

fim do caminho proposto onde estão as vitimas, lembrando que ele não conhece o terreno.

Page 18: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

ROBÔ F APOSTILA DE PROGRAMAÇÃO

18

Jogos Olímpicos

Conhecimentos: Geometria básica, estruturas de repetição, estruturas condicionais.

Enunciado: Você foi selecionado para as Olimpíadas Mundiais de Róbotica na modalidade

"dança sincronizada". Você deverá programar o seu robô de forma que ele execute a tarefa

pedida e assim deixar o seu país orgulhoso com o ouro.

A dança sincronizada consiste basicamente em receber um número N, que deverá ser

representado numa variável no seu programa, e mandar o robô andar descrevendo um polígono

regular (que tem todos os lados iguais) com o número de lados igual a N. O seu robô não poderá

passar da velocidade 80 pois senão ele será desclassificado. O seu robô deve andar dois

segundos em cada lado do polígono. Caso N seja melhor que dois, seu programa não deverá

fazer nada.

A sua equipe precisa de você para ganhar o ouro!

Triângulo Equilátero

Objetivo: comandos avançar, recuar e ler bússola. Verificar se o aluno aprendeu a realizar uma

sequência de comandos simples.

Conhecimentos envolvidos: geometria

Enunciado: Faça um programa que, ao receber um número inteiro a, faça o Robô F andar em um

triângulo equilátero imaginário de a centímetros de aresta. Recordar-se que um triângulo

equilátero possui ângulos internos de 60o. O robô começa a percorrer o triângulo imaginário na

direção para a qual estiver apontando.

Provocação: o aluno pode, ao invés de repetir o código três vezes, criar um laço condicional para

fazer as tarefas de girar 60º e percorrer a distância a.

Page 19: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

APOSTILA DE PROGRAMAÇÃO ROBÔ F

19

Desenhar Polígonos Regulares

Objetivo: Aprender os comandos básicos do robô, o uso de funções e lógica de programação.

Conhecimentos envolvidos: ângulos (matemática), geometria

Enunciado: adapte o código usado para desenhar um triângulo equilátero para desenhar um

quadrado. Depois use o código recém-criado para desenhar um pentágono. Depois um hexágono,

ou seja, faça uma função que receba o número de lados que o polígono regular deve ter e

desenhe a figura.

Virando com ajuda

Objetivo: aprender funções, condicionais simples, loop, recursão simples.

Conhecimentos envolvidos: ângulos retos (matemática)

Enunciado: Faça uma função virando que recebe como argumento um inteiro virar. Se virar ==

1, o robô vira 90 graus a direita, se virar == 2, o robô anda 10 cm, vira 90 graus a direita, anda 10

cm, vira 90 graus a direita, e depois anda mais 10 cm e vira 90 graus a direita.

Provocação: chame a própria função com virar == 1 dentro de um loop para fazer as conversões

à direita no segundo caso.

Barreiras Ortogonais

Objetivo: aprender laços condicionais e laços de número fixo

Conhecimentos envolvidos: ângulos retos (matemática)

Enunciado: o RobôF deve sair da origem (ponto circular), avançar em direção às barreiras (se

aproximar o máximo possível - 20 cm) na sequência indicada na figura e parar a frente da última

das barreiras.

Provocação: caso o programa que fez tenha mais que 8 linhas, tente reduzi-la para o mínimo que

conseguir.

Aplicação de eletrônica

Implementar a mesma aplicação eletrônica do problema “Saia da minha frente”

Page 20: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

ROBÔ F APOSTILA DE PROGRAMAÇÃO

20

Acelerando e Reduzindo

Objetivo: aprender laços de repetição, contadores, comando avançar e recuar.

Conhecimentos envolvidos: lógica

Enunciado: Faça um programa no qual dado um i, que inicialmente é zero e vai até 255, acelere

o robô usando este i como velocidade. Para cada i o robô deve andar por 10 ms. Depois de

alcançar 255 o i deve decrescer novamente até zero fazendo com que o robô desacelere. Repita a

operação, mas desta vez ao invés de avançar o robô deve recuar.

Comportamento: Este algoritmo deve fazer com que o robô acelere gradualmente até o seu

máximo e depois desacelere até zero. Depois o robô acelerará na marcha ré e depois

desacelerará até zero.

Provocação: O problema é resolvido com no máximo 4 Whiles.

Barulho do Motor

Objetivo: trabalhar com variações de frequência

Conhecimentos envolvidos: funcionamento de buzzer, sinais periódicos.

Enunciado: Utilize um buzzer para simular o “som do motor” do robô, variando a frequência do

som emitido de acordo com a velocidade do motor, quando o motor estiver de vagar o som deve

ser grave e conforme acelera o som torna-se mais agudo.

Page 21: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

APOSTILA DE PROGRAMAÇÃO ROBÔ F

21

Race Day

Objetivo: aprender laços condicionais infinitos, operadores lógicos, resolução de problemas

práticos.

Conhecimentos envolvidos: conjuntos (matemática), lógica booleana.

Enunciado: o Robô F está treinando para uma competição de seguidores de linha. A competição

é composta por três etapas, com três circuitos diferentes. O objetivo principal é dar duas voltas

completas no circuito sem perder a linha. A primeira etapa é um circuito é um circuito oval simples.

Na segunda etapa, o circuito contém uma pista interna em cada reta, similar a um pit-stop, e o

robô deve passar pelo menos uma vez por uma delas. Na terceira, e última, etapa são

adicionadas duas linhas no centro do circuito original, formando um oito “deitado”. Nessa etapa o

robô deve passar pelo menos uma vez pelas linhas centrais e deve seguir reto no cruzamento.

1

2

3

Page 22: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

ROBÔ F APOSTILA DE PROGRAMAÇÃO

22

Robô Limpador 2

Objetivo: Utilizar bussola e movimento em conjunto Conhecimentos envolvidos:Sensores e Movimento Enunciado:

Seu novo desafio no desenvolvimento do robô limpador é fazer o robô conseguir desviar de objetos, no caso, os pés das cadeiras embaixo de uma mesa. Os pés estão alinhados e o robô deve fazer um movimento composto por semi-circulos ao redor dos mesmos, como mostrado abaixo: Ilustração:

___ ___ ___ ___ ...> .' '. .' '. .' '. .' '. .' / \ / \ / \ / \ / / O \ / O \ / O \ / O \ / O | | | | | ̂

Page 23: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

APOSTILA DE PROGRAMAÇÃO ROBÔ F

23

Problemas Difíceis

Page 24: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

ROBÔ F APOSTILA DE PROGRAMAÇÃO

24

Desenho pela Trajetória

Objetivo: Aprender os comandos básicos do robô e o uso de funções

Conhecimentos envolvidos: ângulos (matemática)

Enunciado: Mova o robô fazendo que sua trajetória forme uma pétala de flor parecida com a da

figura abaixo

Provocação: Crie uma função com o código anterior e usando esta função faça o seguinte

desenho.

Page 25: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

APOSTILA DE PROGRAMAÇÃO ROBÔ F

25

Robô Seguidor

Objetivo: aprender laços condicionais, laços infinitos, tomada de decisão, leitura de sensores.

Conhecimentos envolvidos: lógica

Enunciado: O RobôF deve encontrar o objeto mais próximo no seu entorno e, ao encontrá-lo, se

posicionar de frente ao objeto ajustando sua distância para 30cm. Você deve dar uma margem de

erro de 2 cm, ou seja, um valor entre 28 e 32cm é aceitável. Tal margem de erro serve para

corrigir a imprecisão do sensor. Você deve verificar se, após parar, a distância é a desejada e,

caso contrário, calibrá-la. Após ter se posicionado, o objeto pode ser movido (apenas para frente e

para trás) e o RobôF deverá manter a mesma distância de 30 cm do objeto.

Provocação: faça o robô conhecer o ambiente ao redor e tomar decisões.

Page 26: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

ROBÔ F APOSTILA DE PROGRAMAÇÃO

26

Gato e Rato

Objetivo: aprender as dificuldades de iteração em tempo real, loops.

Conhecimentos envolvidos: operações com ângulos, busca.

Enunciado: esse problema consiste em uma perseguição entre dois robôs, o gato perseguindo o

rato. O rato é mais devagar que o gato, por isso está sempre mudando a sua trajetória para

despistar o gato. O gato, apesar de ser mais rápido, tem dificuldades em fazer curvas e é

facilmente despistado pelo rato. Por isso, a cada mudança de direção do rato ele tem que parar e

buscar em que direção ele foi. O seu papel é programar o gato.

Gato e Rato2

Objetivo: trabalhar com variações de luminosidade

Conhecimentos envolvidos: funcionamento de LDR, lógica condicional.

Enunciado: Utilize um LDR no robô seguidor (gato) para monitorar a luminosidade a que ele está

exposto. Quando o rato “entrar no buraco” (ambiente com baixa luminosidade) o gato deve parar

de segui-lo, caso o gato entre no buraco ele deve retornar para o lado de fora. Resumindo, o robô

perseguidor deve evitar ambientes com baixa luminosidade.

Page 27: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

APOSTILA DE PROGRAMAÇÃO ROBÔ F

27

Robô Motorista

Objetivo: aprender laços condicionais e laços de número fixo

Conhecimentos envolvidos: lógica e leis de trânsito

Enunciado: Imagine a figura a seguir como uma cidade, os quadrados verdes são as quadras

(casas). O robô faria o percurso desenhado pela linha amarela repetidamente, variando as

direções em que escolhe em cada cruzamento. Quando chegasse ao cruzamento central deve

parar por um instante na “faixa de pedestres” representada por 2 linhas pretas paralelas(cor preta

indica quando o robô deve parar) e só poderia andar novamente quando não detectasse nenhum

pedestre a sua frente(provavelmente algum objeto colocado na faixa).

Provocação: Esse problema poderia tornar-se mais desafiador ao introduzir mais robôs na

“cidade” fazendo o percurso em amarelo e seguindo as mesmas regras citadas anteriormente,

porém agora além de cuidar com os pedestres o robô deve dar a preferência nos cruzamentos ao

robô que vai virar a direita e manter uma distância mínima do robô que segue a sua frente.

Lógica utilizada

Este problema possivelmente envolve todos os sensores do robô e exige que seja dividida em

problemas menores mais fácies de resolver. Por exemplo: inicialmente faz-se o robô seguir a linha

amarela e parar nas linhas pretas utilizando os sensores de refletância e lógica condicional (IF),

separadamente cria-se uma lógica para fazer o robô parar caso algum objeto esteja a uma

distância mínima dele. Em seguida combinar esses dois procedimentos dentro de um laço de

repetição para que ele fique percorrendo a cidade. Futuramente se o robô for capaz de medir a

distância percorrida e juntando essa informação com a orientação da bússola é possível montar

um mapa na interface de programação com o percurso a ser seguido e predeterminar a rotina do

robô, este só a alteraria caso surgisse algum pedestre ou outro robô a sua frente.

Page 28: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

ROBÔ F APOSTILA DE PROGRAMAÇÃO

28

Robô Autônomo

Objetivo: trabalhar com variações de luminosidade

Conhecimentos envolvidos: funcionamento de LDR, lógica condicional, acionamento de LEDs

Enunciado: Equipe cada robô que trafega na cidade com um par de LEDs de alto brilho na parte

traseira (lanternas traseiras) e um LDR na parte dianteira, dessa forma o robô que seguir o

percurso atrás de outro deve manter uma distância em relação ao robô da frente baseado em

certo nível de luminosidade. Por exemplo: se a luminosidade detectada pelo LDR for muito alta

isso significa que o robô a sua frente está muito próximo e então é preciso reduzir a velocidade

para evitar uma batida.

Page 29: APOSTILA DE PROGRAMAÇÃO - dainf.ct.utfpr.edu.brdainf.ct.utfpr.edu.br/.../2014/04/Apostila_RoboF_09.04.2014.pdf · robÔ f apostila de programaÇÃo 2 sumÁrio introduÇÃo 3 pensamento

APOSTILA DE PROGRAMAÇÃO ROBÔ F

29

CONCEITOS BÁSICOS DE ELETRÔNICA

Tensão, Medida em volts [V]

Contínua: Diferença de potencial elétrico existente entre dois pontos, pode ser gerada por

diversos processos.

Alternada: Tensão em um condutor que varia no tempo de forma periódica. Utilizada para

transmissão de energia.

Corrente medida em amperes [A]

Fluxo de carga elétrica em um condutor, Coulombs por segundo...

Potência, medida em watts [W]

Taxa de dissipação ou consumo de energia em um dispositivo. Joules por segundo. Para corrente

contínua:

Lei de Ohm

Ao submeter um condutor a uma determinada tensão surge uma corrente diretamente

proporcional. A relação entra a tensão e corrente é dada por uma constante R (resistência elétrica

do material).

Leis de Kirchoff;

1. Lei dos nós: “A soma de todas as correntes que “entram” e “partem” de um nó é zero”.

2. Lei das malhas: “Ao percorrer uma malha e contabilizar todas as quedas de tensão a

tensão final deve ser zero.”

Divisor de tensão e corrente (associação de resistores)

Funcionamento de resistor, LED, LDR, e buzzer