Buscar

Apostila Programacao de Robos


Continue navegando


Prévia do material em texto

4/12/2013 
 
 
Projeto CNPq-Vale/DAINF/UTFPR-CT | PET-ECO 
ROBÔ F APOSTILA DE PROGRAMAÇÃO 
 
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 
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. 
 
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. 
 
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. 
 
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. 
 
 
 
 
 
 
 
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. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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”. 
 
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. 
 
 
 
 
 
 
 
 
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. 
Exemplowhile (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 
 
 
 
 
APOSTILA DE PROGRAMAÇÃO ROBÔ F 
 
 11 
 
 
 
 
 
 
 
 
Problemas Fáceis 
 
 
 
 
 
 
 
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: 
 
 
 
 
 
 
 
 
 
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. 
 
 
 
 
 
 
 
 
 
 
 
ROBÔ F APOSTILA DE PROGRAMAÇÃO 
 
14 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Problemas Intermediários 
 
 
 
 
 
 
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. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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) 
 
 
 
 
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. 
 
 
 
 
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. 
 
 
 
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” 
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. 
 
 
 
 
 
 
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 
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 
 | | | | | 
 ̂ 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
APOSTILA DE PROGRAMAÇÃO ROBÔ F 
 
 23 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Problemas Difíceis 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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. 
 
 
 
 
 
 
 
 
 
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. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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. 
 
 
 
 
 
 
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 rotinado 
robô, este só a alteraria caso surgisse algum pedestre ou outro robô a sua frente. 
 
 
 
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. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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