Você está na página 1de 96

COLEÇÃO – PROFISSIONALIZANTE – EQUIPE PRAXIS

Coordenação Geral
Maiara Caroline Braz Sobrinho

Gerência de Projetos
Priscila Isaías da Silva

Projeto Gráfico, Editoração e Revisão


Matheus Carrara de Oliveira Gerth

Montagem da Capa
Leonardo Moreira Campos

AUTOR
Edu Silva de Mesquita

2022
Caro estudante,

Estamos muito felizes em te receber e compartilhar


com você nosso conhecimento e experiências, para que você
tenha um ótimo proveito no curso em que está matriculado.

Nossos cursos têm por objetivo prepara-lo para o mer-


cado de trabalho de forma abrangente, nos quais são aplica-
dos conteúdos específicos da profissão em que você se forma-
rá, e também outros conteúdos de suma importância para a
atuação no mercado, complementando assim sua formação
profissional.

Enfatizamos que é importante você participar de to-


das as atividades propostas pelos seus instrutores e pela equi-
pe de coordenação da Equipe Praxis. Você terá aulas teóricas
em sala de aula, e também participará de workshops, oficinas,
eventos e atividades práticas promovidas pela Equipe Praxis.

Aqui a teoria e a prática aqui andam juntas!

Aproveite cada momento em sala de aula, tire dúvidas,


questione, pergunte e avalie! Assim poderá absolver o máxi-
mo de conhecimento estando preparado para o mercado de
trabalho cada dia mais competitivo.

A média de formando que consegue emprego nos


meses subsequentes a sua formatura é de 52% e com você
estando na nossa lista de formandos temos a certeza que au-
mentaremos ainda mais nossa lista de empregabilidade.

Desejamos a você bons estudos!

Equipe Praxis
Apresentação

O objetivo do curso de ROBÓTICA EDUCACIONAL é


formar o aluno da educação básica, qualificando-o para de-
senvolver equipamentos robóticos utilizando, além das fer-
ramentas corretas, motores, servos, programação, conexões
elétricas, eletrônicas, criando rotinas operacionais com movi-
mentos. O conjunto de conhecimento que o aluno adquire
através desse curso está relacionado à montagem, mecânica,
sensores, comunicadores, controladores dentre outros, neces-
sários para uma boa resposta do projeto apresentado.

Este curso se desenvolve por módulos, sendo que, a


cada módulo o aluno aumenta o seu conhecimento, que vai
de uma maquete automatizada no primeiro módulo, passa
por conhecimentos de comunicação via Bluetooth no segun-
do módulo chegando ao último módulo com a condição de
realizar um projeto pessoal, instigado pelas aulas, com a ca-
pacidade de criação e intervenção do professor apenas para
guiar o caminho para a realização de seu projeto. Este último
sendo presenteado ao aluno no final do curso.

Atualmente o avanço da tecnologia está presente em


quase 100% das casas, e a necessidade de pessoas que consi-
gam manusear essas tecnologias está cada vez mais escassa
no mercado, com a necessidade de inovação e criatividade.

Pensando nisso, os módulos dão conhecimentos só-


lidos para o manuseio de equipamentos robóticos, atingindo
sabedoria para o reparo rápido e barato do que se torna inutili-
zável devido a problemas de resolução simples.
Sumário Robótica
Apresentação.................................................................................................................................................................................... 4
A Importância da Robótica nas nossas vidas.......................................................................................................... 6
1. Introdução....................................................................................................................................................................................... 7
2. Noções De Eletrônica............................................................................................................................................................ 8
2.2 Componentes Eletrônicos.............................................................................................................................................. 9
Exercite!.................................................................................................................................................................................................. 11
Atividade............................................................................................................................................................................................... 15
O que é voltagem?........................................................................................................................................................................ 22
Como calcular o resistor .......................................................................................................................................................... 22
adequado para um LED........................................................................................................................................................... 22
A fórmula para calcular o resistor .................................................................................................................................... 24
adequado para LED..................................................................................................................................................................... 24
3. Linguagem e Lógica de Programação.................................................................................................................... 30
Atividade 2 (Prática)..................................................................................................................................................................... 39
Atividade 3 (Prática)..................................................................................................................................................................... 40
Atividade 4 (Prática)..................................................................................................................................................................... 40
Atividade 5 (Prática)..................................................................................................................................................................... 43
Atividade 6 (Prática)..................................................................................................................................................................... 46
Atividade 7 (Prática)..................................................................................................................................................................... 47
Atividade 8 (Prática)..................................................................................................................................................................... 49
4. Arduino............................................................................................................................................................................................. 59
5. Engenharia..................................................................................................................................................................................... 77
Atividade............................................................................................................................................................................................... 86
Atividade extra!................................................................................................................................................................................ 87
6. Apresentação do Autor........................................................................................................................................................ 88
7. Referências Bibliográficas.................................................................................................................................................. 89
A Importância da Robótica nas Nossas Vidas

A robótica esta se tornando cada vez mais presente em nossas vidas. Em casa,
no trabalho, na escola, por exemplo, temos diversos robôs como: geladeira, microondas,
computadores, fogão, maquina de lavar e muitos outros.

Atualmente, é difícil imaginar nossas vidas sem os eletrodomésticos, sem a


mordomia que só existem devido ao avanço da tecnologia robótica, pois, antigamente,
dizia que era impossível construir objetos que se movessem e fizessem tarefas ao nosso
favor.

Nas indústrias, as maquinas substituíram pessoas, por conta da praticidade e


agilidade, visando ao aumento da produção, porém, precisam de manutenção e não
substituem as relações humanas.

O que torna isso tudo possível é a autonomia. Robôs autônomos são capazes
de exercer tarefas sem a necessidade de uma constante supervisão do homem. Eles
são equipados com diversos tipos de sensores tais como câmera, Bluetooth, WiFi, sen-
sor de proximidade e contato, que lhe permitem perceber que está acontecendo a sua
volta e tomarem as decisões certas, sozinhos.

Podemos observar a partir disso que no futuro bem próximo, os robôs serão a
nova ferramenta do ser humano, tanto na área profissional, como novas oportunidades
de emprego que ainda nem existem, como no meio pessoal, com robôs lembrando
horários de medicamentos, ou simplesmente mandando uma foto do ladrão que está
entrando em sua casa. A expectativa é que esses mecanismos possam ajudar as pes-
soas de várias formas, como na área da medicina, educação, meio ambiente e outros.
Além disso, contribuir para pesquisas científicas, assim como colaborar para o desenvol-
vimento tecnológico e científico em países subdesenvolvidos.

A robótica promove o estudo multidisciplinar, nas áreas de Arquitetura, Biologia,


Engenharia, Física, Matemática e outros, propiciando um estímulo aos estudos de uma
forma diferenciada, com aplicabilidade prática.

Robótica 6 Qualifica DF
1. Introdução

Como já citado na apresentação do curso, vamos começar com conceitos e co-


nhecimentos básicos de componentes elétricos e eletrônicos.

Quando pensamos em robótica, devemos sempre nos ater a criar algo que
está em nossa cabeça, então desenhar uma arquitetura dessa criação, com metragens
e cálculos de encaixe, sustentação, buscando soluções para os problemas que há de
vir no decorrer da montagem e engenharia do projeto. Após essa etapa, irá um último
passo, e não menos importante que é a programação. Portanto, vamos iniciar conhe-
cendo os componentes eletrônicos que iremos utilizar no decorrer do curso.

Refletindo

Forme um grupo com colegas que enxerguem uma mesma necessidade, ou


pelo menos aproximada, de uma solução para um problema que atinja a esses cole-
gas. Abaixo, registre as conclusões:

1. Qual foi a necessidade encontrada?

2. De que forma o grupo encontrou a solução?

3. A solução criada utiliza materiais de fácil acesso?

Robótica 7 Qualifica DF
2. Noções de Eletrônica

A eletrônica é um mundo fascinante. É também uma ciência que, mais do que nenhu-
ma outra revolução tecnológica, transformou a humanidade. Proporciona-nos entre-
tenimento, conforto e informação, permite a comunicação com nossos semelhantes e
facilita o desenvolvimento de nossas habilidades. São aplicações práticas dos princípios
gerais da eletricidade.

2.1. Eletricidade

É uma forma invisível de energia originada pelo movimento de certas partículas


diminutas chamadas elétrons livres. Estas partículas, ao circular massivamente atra-
vés de determinados materiais, formam correntes elétricas e produzem efeitos físicos
importantes como luz, calor, movimento, som, magnetismo, etc.

A seguir a lista de alguns dos principais tipos de componentes eletrônicos que


serão utilizados nessa apostila.

1. Fios e cabos

2. Resistores

3. Potenciômetros

4. Capacitores

5. Chaves

6. Transistores

7. Baterias

8. Diodos

9. LED’s

Robótica 8 Qualifica DF
10. Microfones

11. Alto-Falantes

12. Fotocélulas

13. Motores

14. Conectores

15. Protoboard

16. Sensores

17. Ferro de Solda e Estanho

18. Multímetro

19. Displays

20. Ponte-H

Vamos ver conceitos de alguns dos componentes listados acima:

2.2 Componentes Eletrônicos

2.2.1. Fios e cabos

Na maioria das vezes, conectar um componente a outro, ou a um dispositivo


diretamente à fonte de energia é praticamente impossível ou não recomendável, pois
os componentes podem ter características diferentes, como produção de calor, resis-
tência a água dentre outros. Para que facilite, então, a utilização de fios se torna indis-
pensável para a montagem. Permite também a ligação de equipamentos que estão
a grandes distâncias, sendo protegido por uma camada de borracha que terá a espes-
sura dependente do meio ao qual será fixado. O fio de um fone de ouvido é bem mais
fino se comparado ao fio da tomada de um televisor, por exemplo.

Robótica 9 Qualifica DF
2.2.2. Resistores

Como o próprio nome já diz, resistores são componentes responsáveis por


apresentar resistência à passagem da corrente. Todo material que conduz a energia
apresenta uma certa resistência, pois não existe condutor perfeito. Para que não dani-
fique alguns componentes do circuito, precisamos controlar a corrente em certas par-
tes. Podemos também utilizar resistores para transformar energia elétrica em energia
térmica, o chamado Efeito Joule, e acontece porque os elétrons se chocam com os
átomos do material na qual estão passando. Alguns exemplos desse efeito estão em
nossas casas: o chuveiro elétrico. Outro exemplo é o da lâmpada incandescente, hoje
em dia menos utilizada por ser ineficaz, gastando mais de 90% de sua energia em pro-
dução de calor e menos de 10% em energia luminosa. Outro fato é a opção pela troca
desse tipo de lâmpada pelas fluorescentes ou de LED, que veremos mais adiante.

A unidade de medida da resistência é o Ohm, representado pela letra grega Ω


(ômega maiúsculo) e pode ser medido como a divisão da tensão pela corrente elétrica.

Robótica 10 Qualifica DF
Código de cores

Devido os resistores utilizados nas placas impressas de circuitos serem muito peque-
nos, a impressão do valor de sua resistência em ohms numericamente fica bastante
complicada. Por causa disso, foi convencionado um código de cores que facilitou esse
reconhecimento. O padrão é, de certa forma, bastante simples: existem quatro faixas
de cores ao redor do resistor. As três primeiras faixas são as A, B e C, e a quarta é a to-
lerância (quantos por centos, para mais ou para menos, aquela resistência pode estar
- não existe resistor 100% preciso). De modo geral, a faixa A representa a primeira casa
decimal, a faixa B a segunda casa decimal e a faixa C a ordem de grandeza. As cores
vão do branco ao preto na seguinte ordem, do menor para o maior: preto, marrom,
vermelho, laranja, amarelo, verde, azul, violeta, cinza e branco. Na terceira faixa, o cinza e
o branco são substituídos por prata e dourado. A quarta faixa só possui três cores: prata,
dourado e marrom.

Exercite!

Um resistor de composição de cerâmica que forma parte do circuito de um


amplificador de áudio tem marcadas sobre seu corpo quatro faixas de cores que são:
da esquerda pra direita amarelo, violeta, laranja e dourado. Entre que limites se encon-
tram o valor real da resistência desta peça?

Robótica 11 Qualifica DF
2.2.3. Potenciômetros

Potenciômetros, ou reostatos, são resistores ajustáveis.


Eles permitem que ajustemos a intensidade da corrente
que passará por determinada parte do circuito. Eles são
bastante usados, por exemplo, em caixas de som: se você
abrir uma, verá que o regulador de volume dela é um po-
tenciômetro, que somente ajusta o quão forte aquele
som vai sair. Ao aumentarmos o volume da caixa, estamos diminuindo a resistência e
permitindo uma maior intensidade da corrente. Normalmente, o potenciômetro pos-
sui três conectores, dois laterais e um central. Um dos conectores laterais é por onde a
energia entrará, e o outro é conectado ao terra. O central é por onde a corrente sairá,
depois de tê-lo percorrido.


DIELÉTRICO – meio não
condutor de corrente elétrica.

2.2.4. Capacitores

São componentes capazes de armazenar energia elétrica. São


como pequenas pilhas ou baterias, mas possuem capacidade
mais limitada, dependendo de seu tamanho e de sua tensão.
Normalmente são formados por duas placas condutoras se-
paradas por uma camada isolante (dielétrica), de modo que
não tenham contato uma com a outra. Quando acumulam
cargas o suficiente, a rigidez dielétrica do isolante é rompida
(ou seja, ele passa a conduzir corrente), e toda a energia é liberada quase que instanta-
neamente. É o que acontece com os relâmpagos: A nuvem e o solo são as duas placas,
e o ar é o dielétrico.

Quando a rigidez dielétrica do ar é rompida, toda a energia é liberada de uma


vez, e forma-se o relâmpago. Uma aplicação bastante famosa dos capacitores é o flash
das máquinas fotográficas. Durante alguns segundos, a bateria da máquina carrega o
capacitor, que libera toda a energia de uma vez para a lâmpada do flash.

Robótica 12 Qualifica DF
2.2.5. Chaves

As chaves, ou interruptores, servem para abrir ou fechar um circuito, permitindo


ou não que haja diferença de potencial e, consequentemente, corrente elétrica. Daí seu
nome: eles interrompem a corrente. Podemos utilizar um único interruptor para con-
trolar a corrente em várias partes do circuito ao mesmo tempo. Os interruptores das
lâmpadas de nossa casa são uns ótimos exemplos. Podemos ligar várias lâmpadas ao
mesmo tempo ou somente uma. Eles podem funcionar de diversas formas; por exem-
plo, ao apertar o botão, ele libera a passagem da corrente e, ao soltá-lo, ele a impede
novamente, enquanto outros podem manter continuamente a corrente passando até
ser pressionado novamente.

2.2.6. Transistores

Transistores são dispositivos semicondutores usados como amplificadores ou


chaveadores. Sua entrada é uma corrente/tensão que altera a corrente/tensão de saída.
Os transistores são a base de todos os circuitos integrados e placas modernos – alguns,
como os microprocessadores, possuem milhões deles. Para nossos estudos, iremos fo-
car nos transistores de estrutura bipolar de junção (ou BJT, Bipolar Junction Transistor,
do Inglês) com polaridade NPN e PNP, porém existem outros tipos, como os FETs (Fisi-
cal Effect Transistor, do Inglês).
Os transistores possuem três terminais: base, coletor e
emissor. E suas principais equações características são:

IC+IB=IE

IC=βIB

onde β é uma constante (também referida como hFE) característica do transis-


tor (fator de amplificação). A segunda equação nos evidencia o poder de amplificação
de um transistor: dependendo da corrente que colocarmos na base (corrente I B), ele

Robótica 13 Qualifica DF
permitirá maior ou menor corrente no coletor (corrente IC). No mercado encontramos
transistores NPN e PNP com vários encapsulamentos diferentes. Alguns comuns são o
2N3904 (NPN) e 2N3906 (PNP).

Componente 2N3904: transistor NPN com encapsulamentos TO-92

Utilização de transistores com relés

Relés são componentes úteis quando precisamos


isolar eletronicamente um circuito de controle de
um circuito de potência. Se quisermos, por exem-
plo, acender uma lâmpada incandescente (que
utiliza corrente alternada) através do Arduino, po-
demos utilizar um relé: o Arduino controlará o relé,
que então fará a conexão (ou não) da lâmpada
com a tomada. Existem relés mecânicos e de es-
tado sólido (SSD ou Solid-State Relay, do Inglês),
porém iremos utilizar um relé mecânico em nosso exemplo, por ser mais barato e fácil
de encontrar no mercado. Como relés possuem correntes de ativação maiores que as
portas digitais do Arduino conseguem suprir, precisamos amplificar a corrente que sai
das portas digitais do Arduino para que ela seja capaz de acionar o relé – e isso faremos
utilizando um transistor NPN. Utilizando um relé acionado por 5V, um transistor NPN
(2N3904) e dois resistores (10Ω para o relé e 470Ω para a base do transistor) podemos
utilizar o circuito a seguir para controlar qualquer carga de corrente alternada – basta
ligar a carga às saídas do relé, que não estão indicadas no diagrama:

Robótica 14 Qualifica DF
Atividade

Verifique como seria o uso de um transistor PNP.

2.2.7. Baterias

As baterias são dispositivos que produzem energia elétrica a partir


de reações químicas controladas. São utilizadas como fontes de
alimentação de uma grande variedade de aparelhos eletrônicos.
Elas são formadas por uma ou varias células conectadas entre si.
Cada célula é formada por dois eletrodos, um positivo ou catodo e
um negativo ou anodo, separados por uma solução aquosa sólida ou liquida, conduto-
ra de eletricidade, chamada eletrólito.

As baterias podem ser basicamente de dois


tipos, secundárias ou primárias, dependen-
do, respectivamente, de serem recarregáveis
ou não, e são fabricadas utilizando-se diver-
sas tecnologias de células. As mais comuns são as secas ou de carvão e zinco, as alcalina
as de níquel-cádmio, as de chumbo-ácido e as de lítio.

2.2.8. Diodos
Os diodos são componentes projetados para permitir a passagem da corren-
te elétrica em um sentido e bloqueá-lo no sentido oposto. Fisicamente são formados
por duas camadas de material semicondutor dopado, ou seja, tratado com impurezas
especiais chamadas materiais P e material N, e possuem externamente dois terminais
de conexão, chamados anodo (positiva) e catodo (negativa). A posição do catodo é nor-
malmente indicada através de uma faixa colorida impressa em uma ponta. São, por-
tanto, componentes polarizados.

Existem vários tipos de diodos, varactores e varicap, dependendo de suas carac-


terísticas construtivas particulares e da aplicação para a qual foram projetados. Existem
por exemplo, diodos retificadores de baixa, média e alta potencia, diodos de Zener, dio-
dos de emissão de luz (LEDs), diodos de capacitância variável (varactores), diodos detec-
tores, diodos túnel, diodos a laser, fotodiodos, etc. Os diodo retificadores, por exemplo,
são utilizados para converter corrente alternada (AC) em corrente continua (DC). Esta
operação é chamada de retificação.

Robótica 15 Qualifica DF
2.2.9. LEDs

LEDs (Light Emitting Diode) são, como o próprio nome diz, dio-
dos emissores de luz. Um diodo é um semicondutor; isso signi-
fica que ele tem a capacidade de conduzir corrente elétrica por
um de seus terminais e bloqueá-la pelo outro. Diodos são bas-
tante usados em circuitos em geral por esta capacidade, e os
LEDs têm destaque por suas inúmeras aplicações. Eles servem de base tanto para
relógios digitais quanto para televisores e controles remotos (no caso do LED
infravermelho). Seu funcionamento é relativamente simples: um material com cargas
negativas extras, chamado de material tipo-N, é colocado separado por uma pequena
distância, chamada de zona vazia, de um material com carpas positivas extras, chamado
de material tipo-P. Ao conectarmos o eletrodo do material tipo-P ao terminal positivo
do gerador e fizermos o mesmo com os lados negativos, as cargas se repelirão, fazendo
a corrente fluir. Ao fazer isso, os elétrons liberam energia em forma de luz (fótons), que é
a luz que vemos quando os ligamos. A principal vantagem dos LEDs é que gastam
bem menos energia e são tão eficientes quanto as lâmpadas incandescentes, o que
pode ser verificado pela quantidade de calor que eles geram pelo efeito Joule: como
esquentam muito pouco, pouca energia é desperdiçada em energia térmica, ao con-
trário das incandescentes.

2.2.10. Microfo- nes

Os microfones convertem ondas sonoras, ou seja, variações da


pressão do ar, em sinais elétricos equivalentes. Estes sinais são pos-
teriormente processados por circuitos eletrônicos a fim de amplifi-
car, gravar ou modificar o som original. Existem vários tipos de mi-
crofones, dependendo do seu principio de funcionamento. Os
mais utilizados são os de bobina móvel ou dinâmica e os de capa-
citor. Outros tipos são os eletretos, o de cristal e o de carbono.

Robótica 16 Qualifica DF
2.2.11. Alto-falantes

Os alto-falantes convertem sinais elétricos em sons equivalentes.


Os alto-falantes mais utilizados da atualidade são os de tipo dinâ-
mico ou de bobina móvel, formados por uma bobina que vibra
entre os pólos de um imã e move um cone de papel segundo o
ritmo imposto pelo sinal elétrico. Uma variante dos alto-falantes
convencionais são os fones de ouvido, utilizados para transmitir di-
retamente ao ouvido informações audíveis..

2.2.12. Fotocélulas

As células fotoelétricas convertem a luz em sinais elétricos. Elas podem ser basi-
camente de dois tipos: condutivas ou fotovoltaicas. As células fotocondutivas, feitas ge-
ralmente de sulfato de cádmio, mudam sua resistência de acordo com a quantidade
de luz incidente.

Por esta razão também são denominadas foto resistências ou LDRs. As células
fotovoltaicas feitas de junções de semicondutores produzem uma voltagem quando
são iluminadas. Um exemplo de aplicação prática são as células solares utilizadas como
fonte de alimentação em satélites, veículos espaciais, etc.

Fotoelétrica Fotocondutiva

2.2.13. Motores

Os motores convertem energia elétrica em movimento de


rotação. Eles são formados por duas bobinas, uma fixa cha-
mada estator e uma móvel chamada rotor as quais, ao se-
rem energizadas, produzem campos magnéticos cuja in-

Robótica 17 Qualifica DF
teração causa o giro permanente do roto. Podem ser de corrente alternada (AC) ou de
corrente continua (DC). Um exemplo muito comum de motor DC é o motor passo a
passo (PAP), utilizado em robôs, unidades de disco e outras aplicações de precisão.

2.2.14. Conectores

Os conectores são peças eletromecânicas que são utilizadas para ligar ou unir
eletricamente duas ou mais partes de um sistema eletrônico de forma permanente.
No entanto, esta união pode ser desfeita por métodos manuais, sem necessidade de
recorrer a ferramentas especiais. Podem ser de dois tipos, machos ou fêmeas, e foram
projetados para aceitar um ou vários condutores, bem como para serem instalados em
painéis ou em placas de circuitos impressos.

2.2.15. Protoboard

Para conectar todos estes componentes de forma a termos um circuito funcio-


nal, teríamos que unir suas entradas e saídas de alguma forma, de modo que a corren-
te que passe por uma peça continue se propagando à próxima. Geralmente, fazemos
isso através de um processo de solda; ou seja, aquecemos um metal maleável e condu-
tor de forma que ele derreta, para unir as duas partes usando-o como uma espécie de
cola. O ato de soldar é uma prática delicada e requer habilidade, tanto para obter resul-
tados satisfatórios quanto para evitar uma queimadura que geralmente pode ser fatal
(uma maquina de solda aquecida derrubada por acidente pode causar queimaduras
de 3º grau). Além do óbvio perigo, o processo de solda é de certo modo “permanente”,
pois as peças ficarão unidas até que se derreta o metal novamente e utilize-se um su-
gador para retirá-lo, o que pode ser bastante trabalhoso se houver grande quantidade
de peças soldadas. Para evitar todos esses problemas, existe a protoboard, uma placa
com furos dispostos em formato de grade, com conexões condutoras em seu interior.
A protoboard faz com que a conexão entre os componentes seja extremamente sim-
ples, sem necessidade de solda. Obviamente ela não é usada em aplicações industriais,
já que o desencaixe dos fios é muito fácil de ocorrer (motivo pelo qual ela também é
chamada de placa de ensaio). Uma protoboard comum possui dois tipos de conexões:
verticais, presentes nos furos laterais, e horizontais, presente nos restantes. A cor-
rente percorre todos os furos da mesma linha, alimentando todos os fios ou com-
ponentes que ali estiverem conectados.

Robótica 18 Qualifica DF
2.2.16. Sensores

Os sensores são componentes usados para ler e interpretar variáveis do am-


biente. Intensidade de luz, som, objetos, temperatura etc., podem ser medidos e tradu-
zidos como uma determinada voltagem. Alguns dos sensores mais comuns são:

a) Sensor de Som

O sensor de som, que capta a intensidade e frequência do som emitido no


ambiente. Os mais comuns são os utilizados em eventos musicais, mas também possui
uma aplicabilidade muito grande em aparelhos telefônicos, medição de decibéis
(unidade de medida para medir a intensidade do som (dB)) do ambiente.

b) Sensor de Luz

Como o próprio nome diz, sensores de luz detectam certa intensidade de luz
no ambiente. Os mais comuns são os LDR (Light Dependent Resistor - resistor depen-
dente de luz, no inglês), que são resistores que se ajustam de acordo com a intensidade
de luz - ou seja, deixam passar mais ou menos corrente, e é esse sinal que é detectado
e interpretado.

c) Sensor de Temperatura

Sensores de temperatura funcionam como termômetros, captando a tempe-


ratura do ambiente. Mas, ao invés de exibir esta informação visualmente, ele a reproduz
em forma de uma tensão de saída. O mais famoso e comum é o LM35, pois é barato e
possui uma boa precisão. Neste sensor, por exemplo, para cada grau Celsius a tensão
de saída aumenta em 10mV. Sua faixa de precisão varia de -55ºC a 150ºC, com precisão
de ± 0,5ºC. Em nosso curso iremos utilizar outro modelo que, além de captar a tempe-
ratura, também irá captar a umidade.

Robótica 19 Qualifica DF
2.2.17. Ferro de Solda e Estanho

Muito usado na montagem dos projetos de forma definitiva, o ferro de solda


é uma ferramenta de grande importância na robótica. Sua utilização se resume em
juntar conexões com ferro chamado estanho, pois o mesmo é um ótimo condutor de
energia e, quando resfriado, enrijece de tal maneira que fixa as duas ou mais partes.
Para que possamos amolecer o estanho, usamos o ferro de solda, que aquece sua pon-
ta. Quando esquentamos o estanho na ponta do ferro de solda, vira uma espécie de
líquido que rapidamente resfria e endurece. Devido a esse aquecimento, o uso do ferro
de solda tem que ser manuseado com cuidados, já que pode provocar queimaduras
de 3º grau.

2.2.18. Multímetro

Usado para medir voltagens, tensões, correntes e outras medidas que varia de
acordo com o modelo, o multímetro é uma ferramenta necessária para que evitemos
a queima de equipamentos ligando voltagens erradas. Por serem peças de pequeno
porte, a queima dessas peças é de uma facilidade tremenda. Devemos sempre ficar
antenados para que usemos as medidas corretas. O multímetro é achado em lojas em
duas versões: digital e analógico. Esse último é mais preciso, porém exige um conheci-
mento maior. Ele possui uma agulha que se move para a direita ou esquerda, e o técni-
co tem que saber interpretá-lo. O que usaremos durante o curso será o digital, menos
preciso, mas com uma facilidade inestimável.

Robótica 20 Qualifica DF
2.2.19. Displays

Os displays são interfaces gráficas que utilizamos para representar informações


visualmente. Podemos, por exemplo, exibir uma mensagem, mostrar a temperatura
do ambiente, etc. Existem os famosos displays de 7 segmentos (ou 11 segmentos), que
são usados para representar dígitos decimais, e os displays mais complexos, capazes
de exibir cadeias de caracteres e até figuras. Os acima são, respectivamente, displays de
128x64 e 16x2.

2.2.20. Ponte-H

Em alguns projetos precisamos inverter a tensão de entrada de determinado


circuito. Por exemplo: os motores de corrente contínua giram para um lado caso apli-
quemos tensão positiva em seu terminal esquerdo e negativa em seu terminal direito.
Porém, para fazê-los girar em sentido contrário, precisamos aplicar tensão negativa em
seu terminal esquerdo e positiva em seu terminal direito. Podemos implementar cir-
cuitos que fazem essa inversão de tensão a partir de 4 transistores funcionando como
chave. Esse tipo de circuito se chama ponte-H por conta da disposição dos transistores
com relação ao motor, como pode ser visto no diagrama a seguir:

Robótica 21 Qualifica DF
Quando fechamos as chaves S1 e S4, o terminal esquerdo do motor recebe ten-
são positiva e o terminal direito recebe tensão negativa. Já quando fechamos as chaves
S2 e S3, o terminal esquerdo do motor recebe tensão negativa e o terminal direito rece-
be tensão positiva. O que precisamos fazer é substituir as chaves por transistores, para
então podermos controlar o sentido de rotação do motor através do Arduino.

Para quem não quer ter trabalho montando o circuito, existe a opção de com-
prar um circuito integrado pronto com a ponte-H – uma das opções é o L293D.

O que é voltagem?

Para forçar os elétrons livres de um material e fluir ordenadamente em uma de-


terminada direção e assim produzir uma corrente útil, deve-se aplicar uma força exter-
na denominada voltagem. A voltagem também chamada de força eletromotriz (FEM)
ou diferença de potencial (DDP), é representada pelo símbolo “e” ou “E”. Sua unidade
de medida é o volt (v). Assim chamado em homenagem ao físico italiano Alessandro
Volta (1745 – 1827), inventor da bateria. A voltagem se mede utilizando um instrumento
chamado voltímetro.

Como calcular o resistor


adequado para um LED.

É comum na montagem de circuitos eletrônicos o uso de LEDs, para, por exemplo,


indicar que o circuito está ligado, ou no caso de uma lanterna ou farol de LEDs, onde o
LED deixa de ser um componente eletrônico secundário e passa a ser o principal do cir-
cuito. Existem receitas genéricas, que dão certo e já são até consagradas entre hobistas,
de resistores para determinados tipos de LEDs como, por exemplo usar um resistor de
1K ohm em um LED difuso ou de alto brilho em uma alimentação de até 6V. Funcio-
nar funciona, o LED vai ficar protegido de danos, e como vai, devido a um resistor ultra,
super, mega dimensionado, mas em contrapartida o LED vai brilhar menos, devido ao
excesso de resistência imposto pelo resistor.
Para você aproveitar ao máximo o brilho do seu LED, sem o perigo de causar
danos a ele e ao mesmo tempo manter seu circuito eletrônico bem equilibrado, sem
grandes excessos ou falta de resistência, vou mostrar para vocês como calcular o resistor
adequado para o seu LED. Então vamos lá!

Robótica 22 Qualifica DF
Para calcular o resistor adequado para um LED você vai precisar saber:

1. a tensão da fonte de alimentação, ou seja, quantos volts você


vai usar para alimentar seu LED,

2. a tensão suportada pelo seu LED em volts,

3. e a corrente suportada pelo seu LED em amperes.

Sei da dificuldade que é para se conseguir informações exatas sobre a tensão e


corrente do LED que está aí na sua

mão. Uma vez que em um LED não existe nenhuma impressão do nome do
fabricante, marca, modelo ou qualquer outra informação, um LED sempre é um enig-
ma.

Então encontrar o datasheet exato do seu LED torna-se uma tarefa muito difícil.
Mas se por acaso você tiver o datasheet ou souber exatamente a tensão e corrente do
seu LED, ótimo! Essa tensão e corrente que você vai usar no cálculo.

Agora se você não sabe a tensão e corrente exata do seu LED e não encontrou
o datasheet e muito menos o fabricante, você vai usar a tabela de tensão e corrente
abaixo, uma tabela genérica para LEDs de 5mm, mas que de qualquer forma se apro-
xima muito mais da realidade de um LED do que aquela receita genérica apresentada
anteriormente.

*Alto Brilho – Tensão de 3,5V e Corrente 30mA

Robótica 23 Qualifica DF
A fórmula para calcular o resistor
adequado para LED

R = (Valimentação - Vled)
I

R: é a resistência em ohms do resistor adequado para o LED, isso é o que você quer
descobrir.

Valimentação :é a tensão em volts da fonte de alimentação que você vai usar no LED.

Vled:é a tensão em volts do LED.

I:é a corrente do LED em amperes.

Exemplos de aplicação da fórmula

Exemplo 1:

Vamos construir um circuito que controla o brilho de um LED com um


potenciômetro. Temos um LED difuso de 5 mm de cor vermelha, a corrente igual a
20mA e a tensão igual a 2 volts e que você vai alimentar o seu circuito com 6 volts.

A primeira coisa que você deve fazer é converter os 20mA (miliamperes) do


LED para amperes que dariam 0,02 A (amperes). Agora substitua os valores na fórmu-
la, que ficaria assim:

R = (Valimentação - Vled)
I
R = (6 - 2) / 0,02

R = 4 / 0,02

R = 200 ohms

Segundo a fórmula o resistor adequado é de 200 ohms. Mas é comum que


você não encontre um resistor exatamente com a resistência apontada pela fórmula.
Neste caso você deve usar um resistor com a resistência maior mais próxima do re-
sultado encontrado. Por exemplo, nesse caso você pode usar um resistor de 220 ohms.

Robótica 24 Qualifica DF
Outra coisa que você pode fazer é ligar resistores em série para que alcancem ou pas-
sem um pouco do valor apontado pela fórmula. Por exemplo, eu poderia ligar dois re-
sistores de 100 ohms em série, que totalizariam 200 ohms.

Exemplo 2:

Agora vamos acender um led vermelho, de tensão igual a 2v e corrente igual a


20 mA em uma alimentação de 3v, usando 2 pilhas.

Aplicando os valores na fórmula ficaria assim:

R = (Valimentação - Vled)

Convertendo os 20mA (miliamperes) do LED para amperes dariam 0,02 A (am-


peres).

R = (3 - 2) / 0,02

R = 1 / 0,02

R = 50 ohms

Como dificilmente você vai encontrar um resistor de 50 ohms, você pode usar
um 68 ohms ou de 100 ohms, ou ainda ligar 5 resistores de 10 ohms em série (vai ficar
grande, mas seu LED estará protegido!).

Robótica 25 Qualifica DF
Calculando o resistor adequado para leds ligados em série

Agora são 3 LEDs vermelhos ligados em série, cada um com tensão de 2v e cor-
rente de 20 mA e a alimentação será uma bateria de 9v.

Aplicando os valores na fórmula ficaria assim:

Convertendo os 20mA (miliamperes) dos LEDs para amperes dariam 0,02 A


(amperes). Somando-se as tensões dos LEDs teríamos o total de 6v.

R = (9 - 6) / 0,02

R = 3 / 0,02

R = 150 ohms

Logo para esse três LEDs em série um resistor de 150 ohms seria adequado.

Calculando o resistor adequado para LEDs ligados em paralelo

Para ligação de LEDs em paralelo é recomendado que você use um resistor


para cada LED. Não se recomenda usar um resistor para todos os LEDs pois pode haver
danos a eles. No caso temos um LED vermelho, um verde e um azul. Então o correto é
calcular individualmente um resistor para cada um dos LEDs.

 para o LED vermelho

Convertendo os 20mA (miliamperes) do LED para amperes dariam 0,02 A (am-


peres).

Robótica 26 Qualifica DF
R = (9 - 2) / 0,02

R = 7 / 0,02

R = 350 ohms

Como vai ser muito difícil encontrar um resistor de 350 ohms você pode usar
um de 470 ohms.

 para o LED verde

Convertendo os 20mA (miliamperes) do LED para amperes dariam 0,02 A (am-


peres).

R = (9 - 2,5) / 0,02

R = 6,5 / 0,02

R = 325 ohms

Como vai ser muito difícil encontrar um resistor de 325 ohms você pode usar
um de 330 ohms.

 para o LED azul

Convertendo os 20mA (miliamperes) do LED para amperes dariam 0,02 A (am-


peres).

R = (9 - 3) / 0,02

R = 6 / 0,02

R = 300 ohms

Como vai ser muito difícil encontrar um resistor de 300 ohms você pode usar
um de 330 ohms.

Robótica 27 Qualifica DF
Calculando o resistor adequado para LEDs ligados em série e
em paralelo ao mesmo tempo

Há ainda uma situação em que você pode ligar LEDs em série e em paralelo ao
mesmo tempo. Veja abaixo, onde temos três LEDs vermelhos (em série) e um LED azul
ligados em paralelo e alimentados por uma bateria de 9v.

Nesse caso você deve tratar os LEDs ligados em série (no caso os vermelhos)
como se fossem um LED só, somando-se suas tensões para calcular o resistor.

 para os LEDs vermelhos ligados em série

Convertendo os 20mA (miliamperes) dos LEDs para amperes dariam 0,02 A


(amperes).

R = (9 - 6) / 0,02

R = 3 / 0,02

R = 150 ohms

Logo para esse três LEDs em série um resistor de 150 ohms seria adequado.

 para o LED azul

Convertendo os 20mA (miliamperes) do LED para amperes dariam 0,02 A (am-


peres).

R = (9 - 3) / 0,02

R = 6 / 0,02

R = 300 ohms

Como vai ser muito difícil encontrar um resistor de 300 ohms você pode usar
um de 330 ohms ou usar dois de 150 ohms ligados em série.

Verificando se a potência do resistor é adequada

A corrente elétrica limitada pelo resistor é dissipada em forma de calor, e a ca-

Robótica 28 Qualifica DF
pacidade de dissipar calor de um resistor é medida em watts ou W, quanto maior a
potência em watts do resistor, maior a sua capacidade de dissipação de calor e a po-
tência de um resistor está relacionada ao seu tamanho, quanto maior o resistor, maior
a sua capacidade de dissipar calor. Um resistor pode queimar pelo excesso de calor
a ser dissipado, então é importante dimensionar corretamente a potência do resistor
a ser usado em seu circuito. Os resistores que estão no mercado normalmente estão
disponíveis em versões de 1/2 watt, 1/4 watt, 1/8 watt, 1/16 watt, 1 Watt e outros. E através
da fórmula P = V² / R você consegue descobrir se o seu resistor vai ser adequado para o
seu projeto.

P = V2/ R

P: é a potência em
watts.

V: é a tensão em
volts.

R: é a resistência
em ohms

Imagine que você tem um LED de alto brilho de 5mm de cor azul, e que esse
LED tem a corrente igual a 20mA e a tensão igual a 3 volts e que você vai alimentar o
seu circuito com quatro pilhas, totalizando 6 volts e que você calculou o resistor ade-
quado e deu 150 ohms, e você tem um resistor de 150 ohms de 1/4 de watt (muito co-
mum). Esse resistor de 1/4 de w seria adequado?

Como o LED consome 3v e minha alimentação é de 6v então sobram 3v (6v - 3v


= 3v), logo o valor de V para esse caso são os 3v que “sobraram”.

P = V2/ R

P = 32/ 150

P = 9/ 150

P = 0,06 w

Então um resistor de 1/4 de watt ou 0,25 watts seria adequado! Caso você queira
usar um mais potente, de 1/2 watt ou 0,50 watt também poderia.

Robótica 29 Qualifica DF
3. Linguagem e Lógica de Programação

Tudo que nos rodeia envolve


uma programação. Desde o
momento de ajustar um des-
pertador até uma programação
complexa que exige programa-
ção avançada. Acompanhe o
Mineirim em sua receita:

Dessa forma, vimos que exis-


tem algumas peculiaridades
que podemos tirar dessa recei-
ta. O primeiro é a linguagem
utilizada pelo autor, uma forma
de escrever e falar diferente da
que conhecemos, apesar de ser
compreensível. Outra coisa é a
separação das etapas, onde pri-
meiramente ele separa os “ingredientes” para depois realizar o processo de cozimento.
Por último, verificamos que nem tudo está especificado em sua receita, como talheres,
panelas e até mesmo o próprio fogão, indispensáveis para o processo de cozimento.
Trocando em miúdos, na programação temos também a inclusão de uma linguagem,
onde iremos apresentar uma baseada em C++, onde posteriormente iremos ver por
que ela é baseada. Depois iremos informar o que será utilizado em nosso sistema, em
uma parte da programação denominada SETUP e por último o processo de LOOP,
onde o programa será “rodado” infinitamente.

Uma forma bem didática e prática para que possamos aprender na


prática e enraizar os conhecimentos será a utilização do VisuAlg, um progra-
ma gratuito, leve, sem a necessidade de instalação e que trabalha 100% em português,
tornando mais fácil o entendimento.

3.1. VisuAlg

A ideia de escrever este programa nasceu a partir de uma necessidade: uma


ferramenta que permitisse aos alunos iniciantes em programação o exercício dos seus
conhecimentos num ambiente próximo da realidade. Em minha experiência como
professor desta disciplina, tenho notado que a abstração de “rodar o chinês”, ou seja, de
executar um programa apenas no papel, é um grande obstáculo (quase intransponível

Robótica 30 Qualifica DF
para alguns) no aprendizado das técnicas de elaboração de algoritmos. Por outro lado,
submeter um iniciante aos rigores de uma linguagem de programação como Pascal
ou ao “esoterismo” do C também me parecia exagerado. O ideal seria uma linguagem
mais simples, parecida com o “Portugol”, de grande popularidade nos meios acadêmi-
cos e presente nos livros mais utilizados; com ela, os princípios básicos da programação
estruturada poderiam ser ensinados sem que a curva de aprendizagem fosse íngre-
me. A ideia básica é manter o VisuAlg simples: deve ser como as rodinhas de apoio que
uma criança usa ao aprender a andar de bicicleta, e que são retiradas quando deixam
de ser necessárias. Isto não quer dizer que o VisuAlg não possa ou deva ser melhorado.

“A linguagem que o VisuAlg interpreta é bem simples: é uma versão portu-


guesa dos pseudocódigos largamente utilizados nos livros de introdução à progra-
mação, conhecida como “Portugol”. Tomei a liberdade de acrescentar-lhe alguns
comandos novos, com o intuito de criar facilidades específicas para o ensino de
técnicas de elaboração de algoritmos. Inicialmente, pensava em criar uma sintaxe
muito simples e “liberal”, para que o usuário se preocupasse apenas com a lógica da
resolução dos problemas e não com as palavras-chave, pontos e vírgulas, etc. No en-
tanto, cheguei depois à conclusão de que alguma formalidade seria não só neces-
sária como útil, para criar um sentido de disciplina na elaboração do “código-fonte””.
(Palavras do autor ANTONIO CARLOS NICOLODI).

A tela do VisuAlg

Importante: para facilitar a digitação e evitar confusões, todas as palavras-chave


do VisuAlg foram implementadas sem acentos, cedilha, etc. Portanto, o tipo de dados
lógicos é definido como logico, o comando se..então..senão é definido como se..entao..

Robótica 31 Qualifica DF
senao, e assim por diante. O VisuAlg também não distingue maiúsculas e minúsculas
no reconhecimento de palavras-chave e nomes de variáveis.

O formato básico do nosso pseudocódigo é o seguinte:

Algoritmo “semnome”

// Função :

// Autor :

// Data :

// Seção de Declarações

Inicio

// Seção de Comandos

fimalgoritmo

A primeira linha é composta pela palavra-chave algoritmo, seguida do seu


nome delimitado por aspas duplas. Este nome será usado como título nas janelas de
leitura de dados. A seção que se segue é a de declaração de variáveis, que termina com
a linha que contém a palavra-chave inicio. Deste ponto em diante está a seção de co-
mandos, que continua até a linha em que se encontre a palavra-chave fimalgoritmo.
Esta última linha marca o final do pseudocódigo: todo texto existente a partir dela é
ignorado pelo interpretador.

O VisuAlg permite a inclusão de comentários: qualquer texto precedido de “//”


é ignorado, até se atingir o final da sua linha. Por este motivo, os comentários não se es-
tendem por mais de uma linha: quando se deseja escrever comentários mais longos,
que ocupem várias linhas, cada uma delas deverá começar por “//”.

Robótica 32 Qualifica DF
3.1.1. Tipos de Dados

O VisuAlg prevê quatro tipos de dados:

 inteiro,

 real,

 cadeia de caracteres e

 lógico (ou booleano).

As palavras-chave que os definem são as seguintes (observe que elas não têm
acentuação):

inteiro: define variáveis numéricas do tipo inteiro, ou seja, sem casas decimais.

real: define variáveis numéricas do tipo real, ou seja, com casas decimais.

caractere: define variáveis do tipo string, ou seja, cadeia de caracteres.

logico: define variáveis do tipo booleano, ou seja, com valor VERDADEIRO ou


FALSO.

O VisuAlg permite também a declaração de variáveis estruturadas através da


palavra-chave vetor, mas não usaremos esse recurso, pois aprofundaremos nossos co-
nhecimentos em programação em outra linguagem.

3.1.2. Nomes de Variáveis e sua Declaração

Os nomes das variáveis devem começar por uma letra e depois conter letras,
números ou underline (_), até um limite de 30 caracteres. As variáveis podem ser sim-
ples ou estruturadas. Não pode haver duas variáveis com o mesmo nome.

A seção de declaração de variáveis começa com a palavra-chave var, e continua


com as seguintes sintaxes:

<lista-de-variáveis>:<tipo-de-dado>

Na <lista-de-variáveis>, os nomes das variáveis estão separados por vírgulas.

Robótica 33 Qualifica DF
Exemplos:

var a: inteiro

Valor1, Valor2: real

nome_do_aluno: caractere

sinalizador: lógico

Note que não há a necessidade de ponto e vírgula após cada declaração: basta
pular linha.

3.1.3. Constantes e Comando de Atribuição

O VisuAlg tem três tipos de constantes:

Numéricos: são valores numéricos escritos na forma usual das linguagens de


programação. Podem ser inteiros ou reais. Neste último caso, o separador de decimais
é o ponto e não a vírgula, independente da configuração regional do computador
onde o VisuAlg está sendo executado. O VisuAlg também não suporta separadores de
milhares.

Caracteres: qualquer cadeia de caracteres delimitada por aspas duplas (“).

Lógicos: admite os valores VERDADEIRO ou FALSO.

A atribuição de valores a variáveis é feita com o operador <-. Do seu lado esquer-
do fica a variável à qual está sendo atribuído o valor, e à sua direita pode-se colocar qual-
quer expressão (constantes, variáveis, expressões numéricas), desde que seu resultado
tenha tipo igual ao da variável.

Alguns exemplos de atribuições, usando as variáveis declaradas acima:

a <- 3

Valor1 <- 1.5

Valor2 <- Valor1 + a

nome_do_aluno <- “José da Silva”

sinalizador <- FALSO

Robótica 34 Qualifica DF
Operadores Aritméticos

Operadores unitários, isto é, são aplicados a um único operando. São os


operadores aritméticos de maior precedência. Exemplos: -3, +x. Enquanto o
+,-
operador unitário - inverte o sinal do seu operando, o operador + não altera o valor
em nada o seu valor.

Operador de divisão inteira. Por exemplo, 5 \ 2 = 2. Tem a mesma


\
precedência do operador de divisão tradicional.

Operadores aritméticos tradicionais de adição, subtração, multiplicação e


divisão. Por convenção, * e / têm precedência sobre + e -. Para modificar a ordem
+, -, *, /
de avaliação das operações, é necessário usar parênteses como em qualquer
expressão aritmética.

Operador de módulo (isto é, resto da divisão inteira). Por exemplo, 8 MOD 3 =


MOD ou %
2. Tem a mesma precedência do operador de divisão tradicional.

Operador de potenciação. Por exemplo, 5 ^ 2 = 25. Tem a maior precedência


^
entre os operadores aritméticos binários (aqueles que têm dois operandos).

Operadores de Caracteres

Operador de concatenação de strings (isto é, cadeias de caracteres), quando


+ usado com dois valores (variáveis ou constantes) do tipo "caractere". Por exemplo:
"Rio " + " de Janeiro" = "Rio de Janeiro".

Robótica 35 Qualifica DF
Operadores Relacionais

Respectivamente: igual, menor que, maior que, menor ou igual a, maior ou


igual a, diferente de. São utilizados em expressões lógicas para se testar a relação
=, <, >, <=,
entre dois valores do mesmo tipo. Exemplos: 3 = 3 ( 3 é igual a 3?) resulta em
>=, < >
VERDADEIRO; "A" > "B" ("A" está depois de "B" na ordem alfabética?) resulta em
FALSO.

Importante: No VisuAlg, as comparações entre strings não diferenciam as letras


maiúsculas das minúsculas. Assim, «ABC» é igual a «abc». Valores lógicos obedecem à
seguinte ordem: FALSO < VERDADEIRO.

Operadores Lógicos

Operador unitário de negação. nao VERDADEIRO = FALSO, e nao FALSO


nao
= VERDADEIRO. Tem a maior precedência entre os operadores lógicos.

Operador que resulta VERDADEIRO quando um dos seus operandos


ou
lógicos for verdadeiro.

Operador que resulta VERDADEIRO somente se seus dois operandos


e
lógicos forem verdadeiros. Equivale ao AND do Pascal.

Operador que resulta VERDADEIRO se seus dois operandos lógicos forem


xou
diferentes, e FALSO se forem iguais.

Comandos de Saída de Dados

escreva (<lista-de-expressões>)

Escreve no dispositivo de saída padrão (isto é, na área à direita da metade infe-


rior da tela do VisuAlg) o conteúdo de cada uma das expressões que compõem <lista-
-de-expressões>. As expressões dentro desta lista devem estar separadas por vírgulas;
depois de serem avaliadas, seus resultados são impressos na ordem indicada. É equiva-
lente ao comando write que veremos mais adiante.

É possível especificar o número de espaços no qual se deseja escrever um


determinado valor. Por exemplo, o comando escreva(x:5) escreve o valor da variável x
em 5 espaços, alinhado-o à direita. Para variáveis reais, pode-se também especificar o
número de casas fracionárias que serão exibidas. Por exemplo, considerando y como

Robótica 36 Qualifica DF
uma variável real, o comando escreva(y:6:2)escreve seu valor em 6 espaços colocando 2
casas decimais. 

escreval (<lista-de-expressões>). 

Idem ao anterior, com a única diferença que pula uma linha em seguida. É
equivalente ao writeln.

Exemplos:

algoritmo “exemplo”

var x: real

y: inteiro

a: caractere

l: lógico

inicio

x <- 2.5

y <- 6

a <- “teste”

l <- VERDADEIRO

escreval (“x”, x:4:1, y+3:4) // Escreve: x 2.5

escreval (a, “ok”) // Escreve: testeok (e depois pula linha)

escreval (a, “ ok”) // Escreve: teste ok (e depois pula linha)

escreval (a + “ ok”) // Escreve: teste ok (e depois pula linha)

escreva (l) // Escreve: VERDADEIRO

fimalgoritmo

Robótica 37 Qualifica DF
Note que o VisuAlg separa expressões do tipo numérico e lógico com um es-
paço à esquerda, mas não as expressões do tipo caractere, para que assim possa haver
a concatenação. Quando se deseja separar expressões do tipo caractere, é necessário
acrescentar espaços nos locais adequados.

Atividade 1 (Prática)

Quando começamos a aprender a programar, conhecemos um novo mundo,


uma nova linguagem. Por isso, o mais comum é que nosso primeiro programa seja
saudar esse novo “mundo”. Vamos lá? Faça um pequeno programa saudando esse
mundo ao qual você está entrando.

Comando de Entrada de Dados

leia (<lista-de-variáveis>)

Recebe valores digitados pelo usuário, atribuindo-os às variáveis cujos nomes


estão em <lista-de-variáveis> (é respeitada a ordem especificada nesta lista). É análogo
ao comando read.

Veja no exemplo abaixo o resultado:

algoritmo “exemplo 1”
var x: inteiro;

inicio
leia (x)
escreva (x)
fimalgoritmo

Robótica 38 Qualifica DF
O comando de leitura acima irá exibir uma janela como a que se vê ao lado,
com a mensagem padrão:

“Entre com o valor de <nome-de-variável>”

Se você clicar em Cancelar ou teclar Esc durante a leitura de dados, o programa


será imediatamente interrompido.

Atividade 2 (Prática)

Aproveitando a atividade 1, crie uma variável para que o usuário possa incluir seu
nome no programa. Lembre-se que o tipo de variável tem que ser caracteres.

Comando de Desvio Condicional

se <expressão-lógica> então

<sequência-de-comandos>

fimse

Ao encontrar este comando, o VisuAlg analisa a <expressão-lógica>. Se o seu


resultado for VERDADEIRO, todos os comandos da <sequência-de-comandos> (entre
esta linha e a linha com fimse) são executados. Se o resultado for FALSO, estes coman-
dos são desprezados e a execução do algoritmo continua a partir da primeira linha de-
pois do fimse.

Robótica 39 Qualifica DF
Atividade 3 (Prática)

Faça um programa que compare duas situações e escreva o resultado obtido.


O programa deve receber um valor e avaliar esse valor com outro já existente.

se <expressão-lógica> então

<sequência-de-comandos-1>

senão

<sequência-de-comandos-2>

fimse

Nesta outra forma do comando, se o resultado da avaliação de <expressão-lógi-


ca> for VERDADEIRO, todos os comandos da <sequência-de-comandos-1> (entre esta
linha e a linha com senao) são executados, e a execução continua depois, a partir da
primeira linha, depois do fimse. Se o resultado for FALSO, estes comandos são despre-
zados e o algoritmo continua a ser executado a partir da primeira linha depois do se-
nao, executando todos os comandos da <sequência-de-comandos-2> (até a linha com
fimse).

Estes comandos equivalem ao if...then e if...then...else do C++. Note que não há


necessidade de delimitadores de bloco (como begin e end), pois as sequências de
comandos já estão delimitadas pelas palavras-chave senao e fimse. O VisuAlg permite
o alinhamento desses comandos de desvio condicional.

Atividade 4 (Prática)

Vamos incrementar o algoritmo iniciado na atividade 3, apresentando outro va-


lor caso a comparação não seja satisfeita.

Robótica 40 Qualifica DF
Para refletir

Em nossas vidas, a todo o momento, fazemos escolhas após comparações: vou


de ônibus ou metrô, caso ou compro uma bicicleta, estudo ou viro vagabundo. Em
programação, acontece a mesma coisa: se isso então aquilo, senão aquilo outro. A partir
desse pensamento, podemos fazer comparações dentro de comparações, é o famoso
se, senão, se. Quantos laços de comparações seriam necessários para um bom progra-
ma? Quantos laços acha que possui um programa básico de computador? Pense nis-
so!

Comando de Seleção Múltipla

O VisuAlg implementa (com certas variações) o comando case do C++. A sinta-


xe é a seguinte:

escolha <expressão-de-seleção>

caso <exp11>, <exp12>, ..., <exp1n>

<sequência-de-comandos-1>

caso <exp21>, <exp22>, ..., <exp2n>

<sequência-de-comandos-2>...

Outrocaso

<sequência-de-comandos-extra>

fimescolha

Robótica 41 Qualifica DF
Veja o exemplo a seguir, que ilustra bem o que faz este comando:

Algoritmo: “Times”

var time: caractere

inicio

escreva (“Entre com o nome de um time de futebol: “)

leia (time)

escolha time

caso “Flamengo”, “Fluminense”, “Vasco”, “Botafogo”

escreval (“É um time carioca.”)

caso “São Paulo”, “Palmeiras”, “Santos”, “Corínthians”

escreval (“É um time paulista.”)

outrocaso

escreval (“É de outro estado.”)

fimescolha

fimalgoritmo

Robótica 42 Qualifica DF
Atividade 5 (Prática)

Agora, após esse exemplo com times, crie um algoritmo de sua preferência re-
lacionando lugares, pessoas ou até mesmo jogos que são do seu cotidiano. Use o es-
colha e peça para o seu colega fazer uma das escolhas para ver o resultado. Após isso,
descreva aqui como foi essa experiência. Seu colega escolheu o que você imaginava ou
foi uma surpresa pra você? E você, surpreendeu seu colega?

Comandos de Repetição

O VisuAlg implementa as três estruturas de repetição usuais nas linguagens de


programação: o laço contado para...ate...faca (similar ao for...to...do usado em C++), e os la-
ços condicionados enquanto...faca (similar ao while...do) e repita...ate (similar ao repeat...
until). A sintaxe destes comandos é explicada a seguir.

Para ... faça

Esta estrutura repete uma sequência de comandos um determinado número


de vezes.

para <variável> de <valor-inicial> ate <valor-limite> [passo <incremento>]


faca

<sequência-de-comandos>

fimpara

Robótica 43 Qualifica DF
É a variável contadora que controla o número de repetições do
<variável> laço. Na versão atual, deve ser necessariamente uma variável do tipo
inteiro, como todas as expressões deste comando.

É uma expressão que especifica o valor de inicialização da


<valor-inicial>
variável contadora antes da primeira repetição do laço.

É uma expressão que especifica o valor máximo que a variável


<valor-limite >
contadora pode alcançar.

É opcional. Quando presente, precedida pela palavra passo, é


uma expressão que especifica o incremento que será acrescentado à
variável contadora em cada repetição do laço. Quando esta opção não
é utilizada, o valor padrão de <incremento> é 1. Vale a pena ter em
<incremento >
conta que também é possível especificar valores negativos para
<incremento>. Por outro lado, se a avaliação da expressão
<incremento> resultar em valor nulo, a execução do algoritmo será
interrompida, com a impressão de uma mensagem de erro.

Indica o fim da sequência de comandos a serem repetidos. Cada


vez que o programa chega neste ponto, é acrescentado à variável
contadora o valor de <incremento>, e comparado a <valor-limite >. Se
fimpara for menor ou igual (ou maior ou igual, quando <incremento > for
negativo), a sequência de comandos será executada mais uma vez;
caso contrário, a execução prosseguirá a partir do primeiro comando
que esteja após o fimpara.

<valor-inicial >, <valor-limite > e <incremento > são avaliados uma única vez an-
tes da execução da primeira repetição, e não se alteram durante a execução do laço,
mesmo que variáveis eventualmente presentes nessas expressões tenham seus valo-
res alterados.

No exemplo a seguir, os números de 1 a 10 são exibidos em ordem crescente.

algoritmo “Números de 1 a 10”


O número que vem após os dois pontos que
sucedem a variável no comando escreva, corres-
var j: inteiro ponde ao espaço entre as variáveis que serão mos-
tradas na tela. Nesse exemplo, usamos 3 caracteres
de espaço entre as variáveis (j).
inicio
para j de 1 ate 10 faca
escreva (j:3)
fimpara
fimalgoritmo

Robótica 44 Qualifica DF
Importante: Se, logo no início da primeira repetição, <valor-inicial > for maior que
<valor-limite > (ou menor, quando <incremento> for negativo), o laço não será executa-
do nenhuma vez. O exemplo a seguir não imprime nada.

algoritmo “Números de 10 a 1 (não funciona)»

var j: inteiro

inicio

para j de 10 ate 1 faca

escreva (j:3)

fimpara

fimalgoritmo

Este outro exemplo, no entanto, funcionará por causa do passo -1:

algoritmo “Números de 10 a 1 (este funciona)”

var j: inteiro

inicio

para j de 10 ate 1 passo -1 faca

escreva (j:3)

fimpara

fimalgoritmo

Robótica 45 Qualifica DF
Atividade 6 (Prática)

Utilizando esse laço de repetição muito usado na robótica, faça um algoritmo


que mostre os números decimais, como se fosse a moeda corrente, simulando um
caixa de um mercado. No exemplo acima, fizemos um com números, faça um agora
com dinheiro.

Enquanto ... faça

Esta estrutura repete uma sequência de comandos enquanto uma


determinada condição (especificada através de uma expressão lógica) for satisfeita.

enquanto <expressão-lógica> faca

<sequência-de-comandos>

fimenquanto

Esta expressão é avaliada antes de cada repetição do laço.


<expressão-lógica> Quando seu resultado for VERDADEIRO, <sequência-de-
comandos> é executada.

Indica o fim da <sequência-de-comandos> que será


repetida. Cada vez que a execução atinge este ponto, volta-se ao
início do laço para que a <expressão-lógica> seja avaliada
fimenquanto novamente. Se o resultado desta avaliação for VERDADEIRO, a
<sequência-de-comandos> será executada mais uma vez; caso
contrário, a execução prosseguirá a partir do primeiro comando
após fimenquanto.

O mesmo exemplo anterior pode ser resolvido com esta estrutura de repetição:

algoritmo “Números de 1 a 10 (com enquanto...faca)”

var j: inteiro

inicio

j <- 1

Robótica 46 Qualifica DF
enquanto j <= 10 faca

escreva (j:3)

j <- j + 1

fimenquanto

fimalgoritmo

Importante: Como o laço enquanto...faca testa sua condição de parada antes de


executar sua sequência de comandos, esta sequência poderá ser executada zero ou
mais vezes.

Atividade 7 (Prática)

Usamos esse laço para apresentar a mesma resposta do anterior, no para...ate...


faca, utilizado em números. Será que podemos fazer o laço enquanto...faca para letras
também? Teste aí no seu programa e veja a resposta!

Repita ... até

Esta estrutura repete uma sequência de comandos até que uma determinada
condição (especificada através de uma expressão lógica) seja satisfeita.

repita

<sequência-de-comandos>

ate <expressão-lógica>

Robótica 47 Qualifica DF
Repita Indica o início do laço.

Indica o fim da <sequência-de-comandos> a serem repetidos.


Cada vez que o programa chega neste ponto, <expressão-lógica> é
ate <expressão-
avaliada: se seu resultado for FALSO, os comandos presentes entre
lógica>
esta linha e a linha repita são executados; caso contrário, a
execução prosseguirá a partir do primeiro comando após esta linha.

Considerando ainda o mesmo exemplo:

algoritmo “Números de 1 a 10 (com repita)”

var j: inteiro

inicio

j <- 1

repita

escreva (j:3)

j <- j + 1

ate j > 10

fimalgoritmo

Importante: Como o laço repita...até testa sua condição de parada depois de


executar sua sequência de comandos, esta sequência poderá ser executada uma ou
mais vezes.

Robótica 48 Qualifica DF
Atividade 8 (Prática)

Vamos exercitar a criatividade? Pense em um algoritmo no qual utilize o laço re-


pita. Lembrando que esse laço é muito utilizado em robótica, quando se compara uma
temperatura de ambiente ou até mesmo no funcionamento de uma comunicação
Bluetooth. Após isso, descreva aqui qual foi o programa criado, pra que ele serve e quais
são os pontos positivos e negativos dessa experiência. Aproveite para sanar as dúvidas,
pois são laços muito utilizados na robótica.

Comando Interrompa

As três estruturas de repetição acima permitem o uso do comando interrompa


que causa uma saída imediata do laço. Embora esta técnica esteja de certa forma em
desacordo com os princípios da programação estruturada, o comando interrompa foi
incluído no VisuAlg por ser encontrado na literatura de introdução à programação e
mesmo em linguagens como o Object Pascal (Delphi/Kylix), Clipper, VB, etc. Seu uso é
exemplificado a seguir:

Algoritmo: “Números de 1 a 10 (com interrompa)”

var x: inteiro

inicio

x <- 0

repita

x <- x + 1

escreva (x:3)

se x = 10 entao

interrompa

fimse

ate falso

fimalgoritmo

Robótica 49 Qualifica DF
O VisuAlg permite ainda uma forma alternativa do comando repita...ate, com a
seguinte sintaxe:

Algoritmo: “Números de 1 a 10 (com interrompa) II”

var x: inteiro

inicio

x <- 0

repita

x <- x + 1

escreva (x:3)
se x = 10 entao
interrompa
fimse
fimrepita
fimalgoritmo

Com esta sintaxe alternativa, o uso do interrompa é obrigatório, pois é a única


maneira de se sair do laço repita...fimrepita; caso contrário, este laço seria executado in-
determinadamente.

Reflita!

O comando interrompa é utilizado em várias situações. Quais são as que você


imagina ser utilizada em robótica? Pense nisso e escreva aqui o que você pensou.

3.1.4. Subprograma

É um programa que auxilia o programa principal através da realização de uma


determinada subtarefa. Também costuma receber os nomes de sub-rotina, procedi-
mento, método ou módulo. Os subprogramas são chamados dentro do corpo do pro-
grama principal como se fossem comandos. Após seu término, a execução continua a

Robótica 50 Qualifica DF
partir do ponto onde foi chamado. É importante compreender que a chamada de um
subprograma simplesmente gera um desvio provisório no fluxo de execução.
Há um caso particular de subprograma que recebe o nome de função. Uma
função, além de executar uma determinada tarefa, retorna um valor para quem a cha-
mou, que é o resultado da sua execução. Por este motivo, a chamada de uma função
aparece no corpo do programa principal como uma expressão, e não como um co-
mando.
Cada subprograma, além de ter acesso às variáveis do programa que o chamou
(são as variáveis globais), pode ter suas próprias variáveis (são as variáveis locais), que
existem apenas durante sua chamada.
Ao se chamar um subprograma, também é possível passar-lhe determinadas
informações que recebem o nome de parâmetros (são valores que, na linha de cha-
mada, ficam entre os parênteses e que estão separados por vírgulas). A quantidade
dos parâmetros, sua sequência e respectivos tipos não podem mudar: devem estar de
acordo com o que foi especificado na sua correspondente declaração.

Para se criar subprogramas, é preciso descrevê-los após a declaração das variá-


veis e antes do corpo do programa principal. O VisuAlg possibilita declaração e chama-
da de subprogramas, procedimentos e funções com passagem de parâmetros por
valor ou referência. Isso será explicado a seguir.

3.1.5. Procedimentos

Em VisuAlg, procedimento é um subprograma que não retorna nenhum valor.


Sua declaração, que deve estar entre o final da declaração de variáveis e a linha inicio do
programa principal, segue a sintaxe abaixo:

procedimento <nome-de-procedimento> [(<sequência-de-declarações-


-de-parâmetros>)]

// Seção de Declarações Internas

Inicio

// Seção de Comandos

Fimprocedimento

Robótica 51 Qualifica DF
O <nome-de-procedimento> obedece às mesmas regras de nomenclatura
das variáveis. Por outro lado, a <sequência-de-declarações-de-parâmetros> é uma se-
quência de

[var] <sequência-de-parâmetros>: <tipo-de-dado>

separadas por ponto e vírgula. A presença (opcional) da palavra-chave var indica


passagem de parâmetros por referência; caso contrário, a passagem será por valor.

Por sua vez, <sequência-de-parâmetros> é uma sequência de nomes de


parâmetros (também obedecem a mesma regra de nomenclatura de variáveis)
separados por vírgulas.

De modo análogo ao programa principal, a seção de declaração internas come-


ça com a palavra-chave var, e continua com a seguinte sintaxe:

<lista-de-variáveis> : <tipo-de-dado>

Nos próximos exemplos, através de um subprograma soma, será calculada a


soma entre os valores 4 e –9 (ou seja, será obtido o resultado 13) que o programa princi-
pal imprimirá em seguida. No primeiro caso, um procedimento sem parâmetros utiliza
uma variável local aux para armazenar provisoriamente o resultado deste cálculo (evi-
dentemente, esta variável é desnecessária, mas está aí apenas para ilustrar o exemplo),
antes de atribuí-lo à variável global res:

procedimento soma

var aux: inteiro

inicio

//n, m e res são variáveis globais

aux <- n + m

res <- aux

fimprocedimento

Robótica 52 Qualifica DF
No programa principal deve haver os seguintes comandos:

n <- 4

m <- -9

soma

escreva(res)

A mesma tarefa poderia ser executada através de um procedimento com parâ-


metros, como descrito abaixo:

procedimento soma (x,y: inteiro)

inicio

//res é variável global

res <- x + y

fimprocedimento

No programa principal deve haver os seguintes comandos:

n <- 4

m <- -9

soma(n,m)

escreva(res)

A passagem de parâmetros do exemplo acima chama-se passagem por valor.


Neste caso, o subprograma simplesmente recebe um valor que utiliza durante sua exe-
cução. Durante essa execução, os parâmetros passados por valor são análogos às suas
variáveis locais, mas com uma única diferença: receberam um valor inicial no momen-
to em que o subprograma foi chamado.

Função

É um subprograma que retorna um valor. De modo análogo aos procedimentos,


sua declaração deve estar entre o final da declaração de variáveis e a linha inicio do
programa principal, e segue a sintaxe abaixo:

Robótica 53 Qualifica DF
função <nome-de-função> [(<sequência-de-declarações-de-parâmetros>)]:
<tipo-de-dado>

// Seção de Declarações Internas

Inicio

// Seção de Comandos

fimfuncao

O <nome-de-função> obedece às mesmas regras de nomenclatura das variá-


veis. Por outro lado, a <sequência-de-declarações-de-parâmetros> é uma sequência de

[var] <sequência-de-parâmetros>: <tipo-de-dado>

separadas por ponto e vírgula. A presença (opcional) da palavra-chave var indica


passagem de parâmetros por referência; caso contrário, a passagem será por valor.

Por sua vez, <sequência-de-parâmetros> é uma sequência de nomes de


parâmetros (também obedecem a mesma regra de nomenclatura de variáveis)
separados por vírgulas.

O valor retornado pela função será do tipo especificado na sua declaração (logo
após os dois pontos). Em alguma parte da função (de modo geral, no seu final), este
valor deve ser retornado através do comando retorne.

De modo análogo ao programa principal, a seção de declaração internas come-


ça com a palavra-chave var, e continua com a seguinte sintaxe:

<lista-de-variáveis> : <tipo-de-dado>

Voltando ao exemplo anterior, no qual calculamos e imprimimos a soma entre


os valores 4 e –9, vamos mostrar como isso poderia ser feito através de uma função sem
parâmetros. Ela também utiliza uma variável local aux para armazenar provisoriamen-
te o resultado deste cálculo, antes de atribuí-lo à variável global res:

funcao soma: inteiro

var aux: inteiro

Robótica 54 Qualifica DF
inicio

//n, m e res são variáveis globais

aux <- n + m

retorne aux

fimfuncao

No programa principal deve haver os seguintes comandos:

n <- 4

m <- -9

res <- soma

escreva(res)

Se realizássemos essa mesma tarefa com uma função com parâmetros passa-
dos por valor, poderia ser do seguinte modo:

funcao soma (x,y: inteiro): inteiro

inicio

retorne x + y

fimfuncao

No programa principal deve haver os seguintes comandos:

n <- 4

m <- -9

res <- soma(n,m)

escreva(res)

Robótica 55 Qualifica DF
Passagem de Parâmetros por Referência

Há ainda uma outra forma de passagem de parâmetros para subprogramas:


é a passagem por referência. Neste caso, o subprograma não recebe apenas um va-
lor, mas sim o endereço de uma variável global. Portanto, qualquer modificação que
for realizada no conteúdo deste parâmetro afetará também a variável global que está
associada a ele. Durante a execução do subprograma, os parâmetros passados por re-
ferência são análogos às variáveis globais. No VisuAlg essa passagem é feita através da
palavra var na declaração do parâmetro.

Voltando ao exemplo da soma, o procedimento abaixo realiza a mesma tarefa


utilizando passagem de parâmetros por referência:

procedimento soma (x,y: inteiro; var result: inteiro)

inicio

result <- x + y

fimprocedimento

No programa principal deve haver os seguintes comandos:

n <- 4

m <- -9

soma(n,m,res)

escreva(res)

Comando Aleatório

Muitas vezes a digitação de dados para o teste de um programa torna-se uma


tarefa entediante. Com o uso do comando aleatório do VisuAlg, sempre que um co-
mando leia for encontrado, a digitação de valores numéricos e/ou caracteres é substi-
tuída por uma geração aleatória. Este comando não afeta a leitura de variáveis lógicas:
com certeza, uma coisa pouco usual em programação...

Este comando tem as seguintes sintaxes:

Robótica 56 Qualifica DF
Ativa a geração de valores aleatórios que substituem
a digitação de dados. A palavra-chave on é opcional. A
faixa padrão de valores gerados é de 0 a 100 inclusive.
aleatorio [on]
Para a geração de dados do tipo caractere, não há uma
faixa pré-estabelecida: os dados gerados serão sempre
strings de 5 letras maiúsculas.

Ativa a geração de dados numéricos aleatórios


estabelecendo uma faixa de valores mínimos e máximos.
Se apenas < valor1> for fornecido, a faixa será de 0 a
<valor1> inclusive; caso contrário, a faixa será de <valor1>
aleatorio <valor1 > [<valor2 >]
a <valor2> inclusive. Se <valor2> for menor que <valor1>,
o VisuAlg os trocará para que a faixa fique correta.
Importante: <valor1> e <valor2> devem ser constantes
numéricas, e não expressões.

Desativa a geração de valores aleatórios. A palavra-


aleatorio off
chave off é obrigatória.

Comando Timer

Embora o VisuAlg seja um interpretador de pseudocódigo, seu desempenho é


muito bom: o tempo gasto para interpretar cada linha digitada é apenas uma fração de
segundo. Entretanto, por motivos educacionais, pode ser conveniente exibir o fluxo de
execução do pseudocódigo comando por comando, em “câmera lenta”. O comando
timer serve para este propósito: insere um atraso (que pode ser especificado) antes da
execução de cada linha. Além disso, realça em fundo azul o comando que está sendo
executado, da mesma forma que na execução passo a passo.

Sua sintaxe é a seguinte:

timer on Ativa o timer.

Ativa o timer estabelecendo seu tempo de atraso em


milissegundos. O valor padrão é 500, que equivale a meio
timer <tempo-de-
segundo. O argumento <tempo-de-atraso> deve ser uma
atraso>
constante inteira com valor entre 0 e 10000. Valores menores que
0 são corrigidos para 0, e maiores que 10000 para 10000.

timer off Desativa o timer.

Robótica 57 Qualifica DF
Ao longo do pseudocódigo, pode haver vários comandos timer. Todos eles de-
vem estar na seção de comandos. Uma vez ativado, o atraso na execução dos coman-
dos será mantido até se chegar ao final do pseudocódigo ou até ser encontrado um
comando timer off.

Comando Limpatela

Sua sintaxe é

limpatela

Este comando simplesmente limpa a tela DOS do Visualg (a simulação da tela


do computador). Ele não afeta a “tela” que existe na parte inferior direita da janela prin-
cipal do Visualg.

Esses são os principais comandos tanto do programa quanto à linguagem bá-


sica de programação. Está na hora de exercitar-mos.

Atividade conclusiva:

Vimos vários comandos do VisuAlg. Agora, vamos praticar. Crie um programa


com, pelo menos, 3 tipos de comandos do VisuAlg. Procure primeiro um problema
que possa ser resolvido com uma programação. Após isso, converse com os colegas,
pergunte qual o programa que ele pensou e tente incrementar o seu com as idéias
que ele teve.

Reflita!

De tudo que viu sobre programação, compare com o que ouviu antes de ter
contato com essas aulas. Seu ponto de vista ainda é o mesmo? Se possível assista o
filme Matrix, se já assistiu, assista mais uma vez, mas agora com outra idéia sobre pro-
gramação. Após assistir, reflita: é possível existir um mundo daqueles? O Oráculo pode
ser comparado com qual ferramenta utilizada por quase todos? E a conexão? Quando
navegamos, ficamos daquela forma? Parados e fazendo tudo que queremos no mun-
do virtual?

Robótica 58 Qualifica DF
4. Arduino

4.1. Conceitos Básicos

Arduino é uma plataforma eletrônica de prototipação, criada na Itália, constituí-


do basicamente de uma placa micro controladora, uma linguagem de programação
típica com um ambiente de desenvolvimento e suporte a entrada e saída de dados e
sinais. Foi criada em 2005 com o objetivo de servir como base para projetos de baixo
custo, sendo simples o suficiente para ser usado por desenvolvedores amadores. É bas-
tante flexível e não requer um domínio profundo de eletrônica, o que o fez ser bastan-
te popular entre os artistas e iniciantes, além de desenvolvedores experientes que não
têm acesso a plataformas mais complexas.

O Arduino foi criado com o propósito de ser


uma plataforma extremamente fácil de usar
se comparado às outras, o que o torna ideal
tanto para desenvolvedores iniciantes quan-
to para os mais experientes, que farão seus
projetos de robótica muito mais rapidamen-
te, de forma menos trabalhosa. Outro fator
que torna o Arduino atrativo é sua filosofia de
hardware livre, ou seja, as pessoas podem
usá-lo para criar diversos projetos sem custo algum de direitos pela utilização da plata-
forma, podendo ser distribuído gratuitamente, se elas desejarem. Isto traz diversos be-
nefícios; além de serem criadas e distribuídas diversas novas bibliotecas e ferramentas
para auxiliar o desenvolvimento de projetos todos os dias, conta-se com uma comuni-
dade de milhares de pessoas que divulgam informações e detalhes sobre o que criam,
fazendo com que nunca falte ajuda ou algum conhecimento necessário para concluir
o que se desejas construir. Esses são também alguns dos motivos pelo qual a populari-
dade do Arduino vem crescendo atualmente entre os desenvolvedores.

4.2. O que pode ser feito com Arduino?

Tudo! Tendo os equipamentos necessários, é possível criar projetos que só são


limitados pela sua imaginação (e às leis da física, é claro!).

Robótica 59 Qualifica DF
4.3. Quais os tipos de Arduino existem?

Existem diversos modelos de Arduino para se utilizar dependendo do que se


deseja fazer, com diferentes formatos e configurações de hardware. O Arduino Uno é
um dos mais utilizados, mas o Arduino Mega, por exemplo, possui muito mais portas
de entrada, possibilitando a criação de dispositivos maiores e mais complexos. O Ardui-
no Nano, como o nome já diz, é uma versão reduzida de um Arduino comum, para a
criação de objetos eletrônicos menores (ou ocupação de menos espaço, dependendo
do projeto). Seguem abaixo algumas imagens com alguns dos vários tipos de Arduino
existentes hoje em dia.

Respectivamente, os modelos são Arduino Mega, LilyPad Arduino e Ardui-


no Nano. Cada um possui uma funcionalidade diferente que justifica sua criação. O
LilyPad, por exemplo, foi criado para poder ser utilizado em vestimentas, podendo ser
costurado diretamente sobre tecidos. Para mais informações sobre os diversos mode-
los do Arduino, basta consultar o site oficial: www.arduino.cc.

4.4. Alimentação do circuito

Internamente, o circuito do Arduino é alimentado com uma tensão de 5V.


Quando ligamos o Arduino em uma porta USB do PC, o próprio PC, através do cabo
USB, alimenta o Arduino. Porém nem sempre temos um PC por perto; para esses ca-
sos, podemos utilizar uma outra fonte de energia de 5V (a fonte deve ser ligada direta-
mente nos pinos 5V e GND do Arduino).

Robótica 60 Qualifica DF
Como não possuímos pilhas/baterias em abundância no mercado com ten-
são de 5V, fica complicado alimentar um Arduino dessa forma alternativa – se tivermos
uma tomada de 127/220VAC por perto, poderíamos ligar uma fonte AC/DC (essas sim,
existem aos montes). Para resolver esse problema, o Arduino possui um regulador de
tensão que aceita tensões de 7 a 12V (na verdade, ele consegue funcionar com tensões
entre 6 e 20V, apesar de não ser recomendado). Com o regulador de tensão podemos
combinar pilhas em série, utilizar uma bateria de 9V ou mesmo baterias de carros, mo-
tos e no-breaks (12V).

4.5. Desenvolvimento com o Arduino

Agora que temos uma boa noção de como funcionam alguns dos diversos
componentes eletrônicos que podemos utilizar e sabemos como o fazer, aprendemos
sobre programação em Portugol, está na hora de começarmos a desenvolver com o
Arduino. Nesta parte, vamos aprender como instalar e utilizar o software necessário,
bem como detalhes para a montagem de alguns exemplos de projetos iniciais, que
gradativamente vão se tornando mais complexos à medida que adicionamos mais
funcionalidades ao dispositivo.

Antes de qualquer coisa, precisamos obter os arquivos necessários para poder-


mos enviar os comandos ao Arduino. Para isso, devemos fazer o download da platafor-
ma no site oficial (www.arduino.cc) dependendo do sistema operacional.

4.6. Instalação da IDE no Windows

Após baixar os arquivos necessários do Windows pelo site, extraia-os para o local
desejado e execute o programa do Arduino, localizado na raiz da pasta principal. Em
seguida:

Robótica 61 Qualifica DF
 Conecte o Arduino ao computador usando o cabo USB. A luz com nome
PWR (Power) deve acender, indicando que a placa está ligada.

 Deve-se ser solicitado que um novo driver seja instalado. Para isso, recuse
que o Windows procure os drivers automaticamente na internet e, na sele-
ção manual, peça para que sejam procurados os drivers na pasta do Ardui-
no que extraiu no primeiro passo.

 Caso não seja acionada a detecção automática de driver, vá ao Painel de


Controle, abra o Gerenciador de Dispositivos e procure por drivers desatua-
lizados. Selecione a atualização manual do driver e indique a pasta mencio-
nada no passo anterior.

 Após isso, a instalação deve estar concluída.

4.7. Instalação da IDE no Linux

Para o Linux, abra o terminal e execute os seguintes comandos:

 sudo add-apt-repository ppa:arduino-ubuntu-team/ppa

 sudo apti-tude update

 sudo aptitude install arduino

Em seguida, já pode-se acessar a IDE do Arduino através dos aplicativos de de-


senvolvimento.

Robótica 62 Qualifica DF
4.8. IDE

O IDE do Arduino é bastante simples. Foi projetado para ser uma interface ami-
gável à pessoas que nunca tiveram contato com desenvolvimento de software, e por-
tanto é bastante intuitiva. Foi desenvolvido em Java e possui recursos simples de realce
de palavras-chave e uma base com diversos códigos prontos para servir como exemplo.

Além do espaço para a escrita do código, existem 7 botões na parte superior:


Verificar, Carregar, Novo, Abrir, Salvar e Monitor Serial. Eles servem respectivamente para
verificar se o programa possui erros, carregar o código atual para o Arduino, criar um
novo documento, abrir um documento já existente, salvar a programação e o último é
um monitor para dados seriais, que será explicado mais a frente. Na parte inferior, tam-
bém existe uma janela de console para informar ao usuário mensagens de erro ou de
execução do programa.

4.9. Linguagem, comandos e funções

A linguagem de programação utilizada pela plataforma Arduino é basicamen-


te C e C++. Praticamente todos os comandos utilizados em C e C++ podem ser utiliza-
dos para configurar o comportamento de nossos circuitos, o que facilita (e muito) nosso
trabalho, mesmo para quem não tem o conhecimento de tais linguagens, por serem
bastante simples e intuitivas.

4.10. Principais funções

O fluxo de execução de qualquer programa do Arduino começa na função se-

Robótica 63 Qualifica DF
tup(), em que definimos quais pinos iremos usar e se eles serão de entrada ou de saída.
Para isso, usamos a função pinMode(pino, modo), onde pino é um inteiro representan-
do o número do pino que estamos configurando e modo é o tipo de pino que ele será,
no caso entrada ou saída - Input ou Output, respectivamente. Por exemplo, pinMode(13,
OUTPUT) indica que o pino 13 será usada como uma saída; ou seja, ele fornecerá sinal
ao circuito. Após a execução da função setup(), o programa passa a executar a função
loop(), e continuará a repeti-la até a execução do programa terminar. Devido a isto, ela é
uma das funções mais importantes que iremos utilizar na construção de projetos, pois
é nela que iremos descrever tudo que o circuito irá fazer e como ele vai se comportar.

4.11. Tipos de portas

No Arduino existem dois tipos de portas: digitais, divididas entre binárias co-
muns e PMW, e analógicas. Cada tipo de porta é designada para objetivos específicos.

4.11.1 Portas Digitais

As portas digitais são utilizadas para trabalhar com valores binários de tensão:
0V e 5V.

Assim, componentes conectados a essas portas só poderão mandar e receber


dados na forma destas duas tensões. No Arduino Uno, existem 14 portas digitais, nu-
meradas de 0 a 13, sendo que 5 delas são PWM (que será explicado mais adiante), e as
0 e 1 são para os LED’s embutidos RX e TX, respectivamente. As principais funções do
Arduino para manipular as portas digitais são:

Robótica 64 Qualifica DF
 digitalRead(pino) Lê um valor da porta pino e retorna o valor HIGH
quanto está em 5V e LOW quando está em 0V.

 digitalWrite(pino, estado) Utilizada para dizermos ao Arduino que


queremos que pino esteja no estado ligado (HIGH) ou desligado
(LOW).

Para entender melhor estes conceitos, vamos usar um exemplo simples para
demonstrar o uso destas portas.

Exemplo:

Para o primeiro exemplo de um circuito simples usando Arduino, vamos mon-


tar um LED que pisca a cada segundo. Para isso, utilizaremos as funções e comandos
vistos anteriormente. Primeiro, no IDE do Arduino, criamos a função setup. Nela, usa-
mos o procedimento pinMode para dizer que o pino 13 será utilizado como uma saída.
Isto, por enquanto, é tudo que precisamos, já que só vamos precisar de uma saída para
fornecer energia para o LED. Em seguida, devemos criar a função loop, que é onde fi-
carão todos os comandos que vão ser executados repetidamente e indefinidamente
pelo Arduino, como já foi dito. Usamos o procedimento digitalWrite(pino, estado) para
dizer ao Arduino que se pino 13 estará ligado ou desligado, e o procedimento delay(ti-
me) para dizê-lo para esperar um certo período de tempo, em milisegundos. Ao final, o
código deverá estar parecido com isso:

void setup() {

pinMode(13, OUTPUT); //Diz que o pino 13 é de saída

void loop() {

digitalWrite(13, HIGH); //Diz que o pino 13 está ligado

delay(1000); //Espera 1000ms (1 segundo)

digitalWrite(13, LOW); //Diz que o pino 13 está desligado

delay(1000) //Espera mais um segundo

Robótica 65 Qualifica DF
Em seguida, devemos montar o circuito. Vamos precisar do LED, da protoboard,
de dois fios e de um resistor de 120Ω. O resistor restringirá a corrente de forma a não da-
nificar o LED, portanto é importante não se esquecer dele!

Devemos ligar o anodo do LED (a “perna” maior) ao catodo do gerador (no caso,
ao pino 13) e o catodo ao terra (GRD ground), de forma a ter uma DDP e, assim, permitir
a passagem da corrente elétrica. O resistor deve ser ligado entre o anodo e o gerador.
Por convenção, utilizaremos os fios pretos para conexões ao terra, vermelho para as por-
tas normais e azuis para as portas de voltagem (3.3V e 5V). O esquema do circuito mon-
tado e mostrado acima

Agora, basta fazer o upload do código ao Arduino e vê-lo em ação!

4.11.2. PWM
Podemos perceber, pelo exemplo anterior, que utilizando as portas digitais
binárias só podemos fornecer dois estados ao nosso LED: totalmente ligado ou total-
mente apagado. Isso acontece porque as portas mandam um sinal constante de 5V, o
que faz o LED acender inteiramente. Podemos, porém, controlar o percentual de tem-
po que o LED fica ligado, utilizando as portas digitais PWM (Pulse Width Modulation
- Modulação por Largura de Pulso, em inglês). O que essas portas têm de especial é
que elas são capazes de controlar a potência de um sinal, fazendo-o oscilar entre 0V e
5V, em uma determinada frequência: na prática, isso significa que a porta vai repetida-
mente ser ligada e desligada.

Robótica 66 Qualifica DF
Mas qual a utilidade disso? Bom, primeiro, podemos economizar energia li-
mitando a potência pelo qual o circuito está sendo alimentado. Podemos não que-
rer, por exemplo, que o LED gaste 5V todo o tempo em que ele estiver ligado, ou uma
iluminação mais suave. Para isso, basta diminuir este percentual de tempo em que a
porta deixa o sinal no máximo. Para controlar esse percentual, utilizamos a função ana-
logWrite(pino, valor), onde pino deve ser uma porta PWM e valor e um inteiro entre 0
(0% do tempo) e 255 (100% do tempo). Note que estamos utilizando uma função para
manipulação de portas analógicas, mesmo as PWM sendo portas digitais. A razão por
trás disso é que as portas PWN simulam o comportamento das portas analógicas, que
serão explicadas em seguida. Para exemplificar, vamos fazer um LED acender e apagar
suavemente. Para isso, basta apenas trocar a porta de saída do nosso LED por uma por-
ta PWM. No Arduino Uno, essas portas estão marcadas por um acento til (∼). No nosso
exemplo, utilizaremos a porta 6.

A montagem do circuito é a mesma do primeiro exemplo, mudando somente


a porta de saída:

No código, utilizamos um for para irmos do brilho mínimo (i = 0) para o brilho


máximo (i = 255), aumentando o brilho de 5 em 5 (i += 5). Então, usamos a função ana-
logWrite para mandar a tensão ao pino 6, e esperamos 30 milisegundos (sem o delay, o
brilho aumenta rápido demais e não conseguimos ver!).

Robótica 67 Qualifica DF
void setup() {

pinMode(6, OUTPUT);

void loop() {

for (int i = 0; i <= 255; i += 5) {

analogWrite (6, i);

delay (30);

PWM e ponte-H para controle de velocidade

Como com PWM conseguimos controlar a quantidade de potência que será


entregue a um circuito, caso utilizemos PWM como entrada do controle de uma pon-
te-H, podemos limitar a quantidade de potência entregue ao motor e, com isso, con-
trolar sua velocidade.

4.11.3. Portas Analógicas

Diferentemente das portas digitais, que só podem ler e enviar valores binários,
as portas analógicas podem ler qualquer valor, com determinada precisão, entre 0V e
5V.

Robótica 68 Qualifica DF
No entanto, elas podem somente ler, e não enviar. Existem seis portas analógi-
cas no Arduino Uno, numeradas de 0 a 5, e possuem precisão de 10 bits. Isso significa
que elas podem ler em uma faixa de valores entre que vai de 0 a 1023 (210 valores), e é
com esses valores que iremos trabalhar. Para ilustrar uma situação prática, vamos criar
um circuito onde um LED pisca de acordo com a leitura de um potenciômetro - ou
seja, quanto mais corrente ele deixar passar, mais rápido o LED piscará. Para isso, conec-
te os três pinos do potenciômetro da seguinte maneira:

 O conector central ligado à uma das entradas analógicas. No nosso


caso, utilizaremos a A5 (lembrando que as entradas analógicas são
nomeadas de A0 a A5);

 Um dos conectores laterais (não importa qual) conectado ao terra;

 O outro conector ligado à saída 5V do Arduino. Em seguida, conecte


o LED à porta 13, como anteriormente. Lembrando que o próprio
Arduino possui um LED embutido conectado ao pino 13, então co-
nectar outro é opcional. O esquema deve ficar parecido com este:

Agora, criemos o código. Nele, precisamos agora declarar duas portas: a do LED
e a do sensor. Como as portas analógicas só servem como entrada, não precisam ini-
cializá-las na função setup. Lemos o valor do potenciômetro com a função analogRead
(que retorna um inteiro entre 0 e 1023) e o usamos este valor como o atraso para acen-
der o LED, como mostra o código:

Robótica 69 Qualifica DF
const int sensor = A5; //Entrada para o potenciômetro

const int LED = 13; //Saída para o LED

int leitura = 0; //Guarda o valor lido pelo potenciômetro

void setup() {

pinMode (LED, OUTPUT); //Declara o pino do LED como saída

void loop() {

leitura = analogRead(sensor); //Lê o valor do sensor

digitalWrite(LED, HIGH); //Acende o LED

delay(leitura); //Pausa de acordo com a leitura

digitalWrite(LED, LOW); //Apaga o LED

delay(leitura); //Nova pausa de acordo com a leitura

4.12. Comunicação Serial

Até agora, vimos como configurar o Arduino para algumas funções usando
sensores e atuadores diversos. Mas, e se quisermos, por exemplo, controlar algum com-
ponente do Arduino através do computador? É para isso que servem as portas de co-
municação serial. Utilizando a comunicação USB (Universal Serial Bus – Barramento
em Série Universal) que usamos normalmente para fazer o upload de dados do Ar-
duino, podemos enviar sinais e comandos para alterar o seu estado. Antes de qualquer
coisa, precisamos iniciar a comunicação informando a velocidade da transferência de
dados. Depois, poderemos enviar e receber dados do Arduino e visualizá-los através do
monitor serial.

Robótica 70 Qualifica DF
As principais funções que iremos utilizar são:

 Serial.begin(velocidade) Esta função diz ao Arduino que iremos ini-


ciar a interface serial, utilizando o parâmetro velocidade como taxa
de transferência. Por padrão, normalmente utiliza-se 9600 como
taxa.

 Serial.print(“Mensagem”) Exibe uma mensagem no monitor serial.


Podemos informar qual a leitura que um sensor está recebendo do
ambiente, por exemplo, ou apenas informar alguma mensagem
qualquer.

 Serial.available() Retorna o número de bytes sendo lidos pela porta


serial. No caso de não haver nenhuma valor, retorna zero. Utilizamos
esta função para o Arduino saber quando enviamos ou recebemos
algum dado - um botão que pressionamos, por exemplo.

 Serial.read() Esta função lê os dados que digitamos pelo teclado e os


envia ao Arduino. É nosso principal meio de comunicação!

Vamos para um exemplo prático. Neste exemplo, vamos apagar e acender um


LED usando um comando no teclado. Para isso, verificamos se há alguma informação
a ser lida, ou seja, se algum comando foi enviado do computador ao Arduino. Se sim,
guardamos esta informação e a processamos de acordo com o que queremos. Em
nosso caso, vamos acender o LED no pino 13, caso enviarmos o caractere “L” ao Arduino.

const int LED = 13; //É sempre bom definirmos cada pino.

void setup() {

pinMode(LED, OUTPUT); //Seta o pino 13 como saída

Serial.begin(9600); //Inicia a interface serial

Robótica 71 Qualifica DF
void loop(){

if (Serial.available() ) { //Se há alguma informação a ser lida

int liga = Serial.read(); //Lê a informação como inteiro

if (liga == ‘L’) //Se a leitura for um ‘L’

digitalWrite(LED, HIGH); //Acende o LED

else

digitalWrite(LED, LOW); //Senão, desliga

O esquema do circuito é o mesmo do primeiro exemplo.

Atividade 1 - Faça um circuito onde três LED’s acendam em sequência, com um


atraso de um segundo entre eles, e depois apaguem igualmente em sequência.

Atividade 2 - Usando um LED vermelho, um amarelo e um verde, crie um se-


máforo de trânsito - ou seja, o LED verde deve ficar ligado por um determinado interva-
lo de tempo, seguido pelo amarelo, depois o vermelho, voltando para o verde.

Atividade 3 - Crie um LED inteligente: ou seja, utilizando um sensor de som, fa-


ça-o ligar se o ambiente estiver muito barulhento.

Atividade 4 - Projete o protótipo de uma fechadura com senha - ou seja, a porta


só abre se a senha digitada for correta. Para facilitar, utilize um LED vermelho para re-
presentar a porta fechada e um LED verde para representar que a senha digitada foi
aceita.

Robótica 72 Qualifica DF
4.13. Bibliotecas e Shields

Assim como a IDE já vem com diversas funções pré-definidas, o Arduino possui
outras bibliotecas para controle de servo motores, displays LCD, geração de áudio, re-
cepção de sinais de sensores e outros dispositivos (como teclado PS/2), dentre muitas
outras coisas! E quem pensa que essa extensão de sensibilidade toda se restringe à
parte de software está muito enganado: o Arduino possui o que chamamos de shields,
que são placas que se acoplam à placa original, agregando funcionalidades à mesma.

Existem shields dos mais variados tipos, para as mais diversas funções. Alguns
servem como entrada, outros como saída, e ainda outros como entrada e saída. Com os
shields conseguimos, por exemplo, fazer o Arduino se comunicar numa rede Ethernet,
ou ainda transmitir dados para qualquer dispositivo via Bluetooth, ou Wi-Fi. Existem
shields com circuitos integrados prontos para controlarmos motores sem que precise-
mos nos preocupar com complicações eletrônicas envolvidas, outros possuem leitor
de cartão SD, acelerômetro, GPS e diversos outros sensores que podem gerar dados
importantes para o software que está rodando no micro controlador.

Existem também outros shields mais elaborados, que são sistemas completos.
Um deles, por exemplo, cria uma plataforma para desenvolvimento de jogos no Ardui-
no: o Vídeo Game Shield10, que possui uma saída RCA e duas entradas para controles
Numchuck do Nintendo Wii. Além do hardware, existe uma biblioteca para ser utiliza-
da em conjunto, que já possui várias funções pré-programadas para fazermos dese-
nhos na televisão e capturar os dados dos movimentos nos controles.

4.14. Fazendo barulho com o Arduino

Para quem gosta de fazer música, o Arduino possui uma função pronta para
criar uma onda quadrada na frequência e no tempo desejados. Apesar de serem notas
simples e a onda ser quadrada, adicionando circuitos extras (para filtros e distorções) e
um pouco de criatividade, conseguimos criar sons legais para nossos projetos. A função
que faz esse trabalho é chamada tone. Vamos criar um projeto-exemplo ligando um
buzzer – componente que reproduz sons de acordo com as variações de tensão em
seus terminais – para tocar nosso som da seguinte forma:

Robótica 73 Qualifica DF
Utilizaremos o seguinte código:

#define BUZZER 9

int notas[ ] = { 524, 588, 660, 699, 785, 881, 989 };

void setup() {

pinMode(BUZZER, OUTPUT);

void loop() {

for (int i = 0; i < 7; i++) {

tone(BUZZER, notas[i], 1000); delay(1000);

delay(1000);

Robótica 74 Qualifica DF
Além do laço for, utilizamos também um vetor de inteiros chamado notas. Um
vetor nada mais é que um local onde armazenamos várias variáveis de mesmo tipo. Os
vetores são indexados e para acessar cada item guardado neles, utilizamos índices que
variam de 0 a n − 1, onde n é o número total de elementos. No exemplo acima, utiliza-
mos a variável i para percorrer o vetor e, por isso, para acessar os elementos utilizamos i.
Os segredos do código acima são:

 Saber a frequência das notas1 e

 Saber utilizar a função tone.

A função tone recebe três parâmetros, respectivamente: pino (precisa ser


um pino que tenha suporte a PWM), frequência da nota e duração do som em
milissegundos.

Atividade 5 - Melhore seu protótipo da atividade 4 adicionando um atuador so-


noro, que avisa caso a senha esteja errada, caso ela esteja certa e denuncie caso alguém
erre a senha mais de três vezes. Utilize sons diferentes para cada caso.

Atividade 6 - Utilizando um potenciômetro, crie um ajustador de volume para


um buzzer (alto falante). Em outras palavras, aumenta ou diminua a intensidade do
som do buzzer através do potenciômetro.

Robótica 75 Qualifica DF
4.15. Integração com o PC

Apesar de o Arduino ser um computador independente, em alguns casos po-


demos nos aproveitar de um PC por perto e explorar outra funcionalidade muito boa
do projeto: o Arduino consegue conversar com o computador através da porta USB.
Isso nos permite desenvolver um software que roda no PC e se comunica com o sof-
tware que roda no Arduino, o que nos abre um mar de possibilidades! Podemos, por
exemplo, criar um software em Python que recebe os dados de um sensor, via USB
(através do Arduino), e envia para algum banco de dados na Internet – assim teremos
de certa forma, nosso Arduino on-line, enviando dados para o mundo, através de um
PC! Existem inúmeros projetos interessantes que fazem interface entre linguagens de
programação e o Arduino – existem implementações para Python, Ruby, Java, C, den-
tre outras linguagens. E não para por aí: além de o software que roda no PC receber
dados, ele pode também enviar dados, controlando o Arduino! Dessa forma, podemos,
por exemplo, receber dados da Web e enviar comandos ao Arduino, baseados nesses
dados. Um exemplo de aplicação que utiliza a porta USB para comunicação do Ardui-
no com o PC é o projeto Arduinoscope, que tem como finalidade criar um osciloscópio,
onde podemos ver em tempo real, no PC, gráficos das tensões que estão ligadas às
portas analógicas do Arduino. Outro exemplo é um projeto que controla um carrinho
através de Wi-Fi, o Turiquinhas. Fica a dica para quem quer começar um projeto Ar-
duino assistido por computador de maneira fácil: vale a pena estudar um protocolo de
comunicação e controle chamado Firmata, cuja implementação está disponível para
várias linguagens (e já vem por padrão um exemplo na IDE do Arduino). Ele facilita o
processo de aquisição de dados e controle da placa. Além das opções citadas acima,
existe uma linguagem chamada Processing, parecidíssima com a linguagem que uti-
lizamos no Arduino, que consegue se comunicar com o Arduino via USB e é utilizada
para criar imagens, animações e interações no PC, a partir dos dados vindos da comu-
nicação com o Arduino.

Robótica 76 Qualifica DF
5. Engenharia

A engenharia é fundamental na robótica, pois não adiantaria nada fazermos a


separação dos equipamentos, programar todo o sistema e não ter o objeto ao qual ire-
mos aplicar tudo isso. Seria como se o Mineirinho tivesse todos os ingredientes, a receita
completa de como fazer mas não ter a cozinha e seus mantimentos. Qual seria a graça
de se ter tudo isso mas não ter o prato feito no final. Por isso vamos ver alguns conheci-
mentos básicos de engenharia.

Depois de todos os conhecimentos adquiridos até agora, chegamos à principal


parte do nosso curso: A CRIAÇÃO! Já temos conhecimentos suficientes para realizar
nosso projeto do início ao fim, e para isso devemos construir o que foi desenhado. Ire-
mos utilizar materiais recicláveis como:

1. Garrafa PET;

2. Bandeja de isopor;

3. Caixa de leite;

4. Palito de picolé;

5. Papelão;

6. Equipamentos eletrônicos queimados (para retirada de peças)

7. Fios;

8. Brinquedos velhos;

9. Outros

O curso busca promover oficina de robótica com material reciclado, provenien-


te do lixo e de aparelhos eletrônicos supostamente inutilizáveis.

Lixo Eletrônico

O lixo eletrônico está cada vez maior, e a destinação desses resíduos, que na
maioria são tóxicos, está sem rumo. O curso, além da inclusão de jovens estudantes
no ambiente robótico, tem uma responsabilidade ambiental em dar destino a parte
desse material, dando uma nova funcionalidade a motores, sensores, botões, LED’s e
demais peças que anteriormente seria descartado na natureza sem nenhum tipo de
tratamento.

Robótica 77 Qualifica DF
Temos peças que são mais fáceis de serem achadas, outras nem tanto. Um
driver de CD-ROM ou DVD-ROM possui várias peças de grande valia no ambiente ro-
bótico para a construção de carros por possuir motores e engrenagens importantes
para a construção. O celular também possui muitas peças que podemos usar, como
microfone, alto-falantes, conectores, vibracall, visor, dentre outros. Os modens antigos,
que estariam também em desuso devido a novas tecnologias mais avançadas, apre-
sentam várias peças que podem ser reaproveitadas como o receptor e o emissor de
infravermelho, vários LED’s, conector banana no carregador e muito mais.

1º Projeto – Maquete inteligente

Nesse nosso primeiro projeto, iremos colocar em prática tudo que vimos: ele-
trônica, programação e engenharia.

O primeiro passo é desenhar a maquete, com sua planta baixa e as medidas


exatas para a criação. A documentação deve abranger os seguintes requisitos:

Desenho da planta da maquete;

Programação;

Material utilizado na engenharia;

Material eletrônico;

Ligações.

Quando estiver documentando o projeto com o desenho, anote a relação de


portas que irá utilizar no Arduino, pois a hora da montagem, evitamos erros. O material
utilizado é livre, pode ser isopor, papelão ou de qualquer outro material que julgue ne-
cessário. Minha proposta é fazê-la em uma caixa de sapato, mas deixo livre sua imagi-
nação. Após o desenho da planta, separe os materiais, tanto da engenharia quanto da
eletrônica e mãos à massa. Recorte, cole, cuidado com os ângulos de inclinação. Faça
uma maquete bonita, esconda os fios, pense no local que o Arduino irá ficar, e lembre-
-se: um material em contato com o outro pode ter reações químicas como o derreti-
mento do isopor caso utilize cola quente. Antes de terminar, faça a programação com-
pleta do projeto, fazendo testes na protoboard, já que não poderemos ficar soldando e
tendo que tirar a solda devido a erros. O lugar dos testes serão sempre na protoboard.
Após os passos, conclua a maquete e teste, por várias vezes, tudo que programou. Evite
ligações frágeis, reforce as junções dos fios e isolamento. Divirta-se!

Robótica 78 Qualifica DF
Maquete de uma casa vista de cima

Atividade

Terminado o projeto, escreva aqui suas conclusões, o que achou, quais as difi-
culdades encontradas, quais as facilidades e que idéias você teve após esse primeiro
trabalho.

2º Projeto – Comunicação Bluetooth

Nesse nosso segundo projeto, iremos trabalhar com comunicação remota.


Existem vários tipos de comunicação remota. São eles:

1. Rádio;

2. Infravermelho;

3. Bluetooth;

4. WiFi, dentre outros.

Iremos utilizar no nosso curso o módulo Bluetooth HC-05, que é o mais barato
e mais fácil de ser encontrado. Esse módulo aceita ser Máster (onde ele manda sinal) e
slave (onde ele recebe informações). Cuidado na hora da compra, pois o HC-06 só acei-
ta o envio de informações.

A troca de informações entre um e outro é feito felá porta RX (0) e TX (1) no Ardui-
no e pelos pinos RX e TX no próprio módulo que, além desses dois pinos, possui outros
dois que já conhecemos: o 5v e o GND. Os pinos devem ser ligados trocados, o RX do
módulo no TX do Arduino e o TX do módulo no RX do Arduino.

Robótica 79 Qualifica DF
RX TX

TX RX

Depois de alimentado e com os pinos TX e RX ligados corretamente, baixe a


biblioteca “SoftwareSerial.h”, responsável por fazer a leitura do dados enviados pelo HC-
05. A programação básica seria assim:

#include <SoftwareSerial.h>

//Cria um novo software serial

SoftwareSerial bluetooth(0, 1); //RX, TX

// BOTÕES Joystick

const String VAZIO = “0”;

const String CIMA = “1”;

const String BAIXO = “2”;

const String ESQUERDO = “3”;

const String DIREITO = “4”;

const String SELECT = “5”;

const String START = “6”;

const String TRIANGULO = “7”;

const String QUADRADO = “8”;

const String X = “9”;

const String BOLA = “A”;

void setup()

Serial.begin(9600);

bluetooth.begin(9600);

Robótica 80 Qualifica DF
Antes de iniciarmos, vamos treinar nossa engenharia. Iremos fazer um carrinho
que funcionará via Bluetooth, mas, antes, vamos fazer um que funcione com fio. Para
isso, teremos que construir nosso próprio chassi. Nesse ponto, temos que avaliar algu-
mas situações:

1. Estabilidade;

2. Firmeza;

3. Ângulos;

4. Peso e

5. Atrito.

Temos que medir os ângulos das extremidades e se o mesmo está com as


quatro rodas tocando o chão. Outro ponto importante é a direção que esse carrinho
está indo, pois um erro de ângulo do eixo, além de não permitir o deslocamento em
linha reta, exige mais força por haver a resistência de rodas em deslocamentos dife-
rentes. Por falar em rodas, uma parte importante será a fabricação dessas rodas. Meu
conselho é tentarmos arrumas algumas de brinquedos velhos, pois a circunferência é
perfeita. Porém, podemos também fazer com garrafas PET, tendo que serem iguais
duas a duas. A estrutura tem que ter estabilidade e firmeza, para que o movimento do
carrinho não seja prejudicado.

Pronto! Agora, todas as equipes irão competir entre si. Iremos realizar uma corri-
da de arrancadas de carrinhos com fio, onde testaremos nossas habilidades de criação
e engenharia, estabilidade e direção. Vamos ver quem ganha?

Equipe campeã: ___________________________________________

Robótica 81 Qualifica DF
Agora que corrigimos nossos erros de engenharia, vimos em que ponto deve-
mos melhoras, vamos a nossa construção do carrinho via Bluetooth. Esse deverá fazer
curvas, acender farol e luz de ré, buzinar e ser comandado pelo celular. Mãos à massa!

Programação Básica

#include <SoftwareSerial.h>

/* Controle usado:

Arduino BT Joystick Free - Controle para Android

Recomendo ir a configurações/definir delay de envio e alterar o valor para


50 ou até 100*/

//Cria um novo software serial

SoftwareSerial bluetooth(0, 1); //RX, TX

//BOTÕES Joystick

const String VAZIO = “0”;

const String CIMA = “1”;

const String BAIXO = “2”;

const String ESQUERDO = “3”;

const String DIREITO = “4”;

const String SELECT = “5”;

const String START = “6”;

Robótica 82 Qualifica DF
const String TRIANGULO = “7”;

const String QUADRADO = “8”;

const String X = “9”;

const String BOLA = “A”;

//Portas motores

int A1A = 5;

int A1B = 6;

int B1A = 7;

int B1B = 8;

// Bluetooth

char junk;

String inputString = “”;

int ct = 0;

void setup()

Serial.begin(9600);

bluetooth.begin(9600);

pinMode(A1A, OUTPUT);

pinMode(A1B, OUTPUT);

pinMode(B1A, OUTPUT);

pinMode(B1B, OUTPUT);

void loop() {

if (bluetooth.available() >= 5) {

Robótica 83 Qualifica DF
int ct2 = 0;

while (ct2 < 5)

char inChar = (char)bluetooth.read();

String teste = “”;

teste += inChar;

if (teste != “#” && teste != “b” && teste != “=”) {

inputString += teste;

ct2++;

ct = 0;

ct2 = 0;

Serial.println(inputString);

while (bluetooth.available() > 0)

junk = bluetooth.read() ; // clear the serial buffer

//área onde define a ação para cada botão

if (inputString == CIMA) {

paraFrente();

} else if (inputString == BAIXO) {

paraTras();

} else if (inputString == DIREITO) {

paraDireita();

} else if (inputString == ESQUERDO) {

paraEsquerda();

Robótica 84 Qualifica DF
} else if (inputString == TRIANGULO) {

//sua ação aqui...

} else {

pararMotores();

inputString = “”;

} else {

if (ct == 0) {

Serial.println(“----------------”);

ct = 1;

// controle de direção

void pararMotores() {

digitalWrite(A1A, 0);

digitalWrite(A1B, 0);

digitalWrite(B1A, 0);

digitalWrite(B1B, 0);

void paraFrente() {

digitalWrite(A1A, 1);

digitalWrite(A1B, 0);

digitalWrite(B1A, 1);

digitalWrite(B1B, 0);

void paraTras() {

digitalWrite(A1A, 0);

Robótica 85 Qualifica DF
digitalWrite(A1B, 1);

digitalWrite(B1A, 0);

digitalWrite(B1B, 1);

void paraDireita() {

digitalWrite(A1A, 1);

digitalWrite(A1B, 0);

digitalWrite(B1A, 0);

digitalWrite(B1B, 1);

void paraEsquerda() {

digitalWrite(A1A, 0);

digitalWrite(A1B, 1);

digitalWrite(B1A, 1);

digitalWrite(B1B, 0);

Repare no programa que há um espaço disponível para uma ação além de ir


pra frente, pra trás, pra esquerda, pra direita e ficar parado. Nesse espaço, inclua a luz
dianteira, luz traseira e a buzina. O Arduino ficará com portas disponíveis para funções
que você achar interessante incluir. Deixe sua imaginação fluir, crie mais funcionalida-
des para seu carrinho. Lembre-se sempre que o limite é sua imaginação!

Atividade

Terminado o segundo projeto, escreva aqui novamente suas conclusões, o que


achou, quais as dificuldades encontradas, quais as facilidades e que idéias você teve
após esse trabalho e compare com o que você escreveu na atividade do projeto ante-
rior. Quais as diferenças de dificuldades que foram superadas?

Robótica 86 Qualifica DF
Atividade extra!

Com o apoio da sala, vamos criar um circuito fechado com fitas no chão para
que realizemos uma corrida com os carrinhos feitos por todas as equipes. Iremos com-
petir para sabermos qual foi a melhor equipe que equilibrou peso, força e estabilidade.
Essas três grandezas são fundamentais para o bom funcionamento e resposta para
desvios, curvas e aceleração. E agora, os conhecimentos adquiridos pela corrida de ar-
rancadas ajudam muito na nova estrutura.

Equipe campeã: ___________________________________________

3º Projeto – Livre

Agora, nesse terceiro e último projeto, iremos construir aquilo que queremos. É
um projeto livre, onde os conhecimentos adquiridos até agora servirão de base para o
que pode ou não pode ser feito, suas dificuldades de encontrar o material de engenha-
ria, a necessidade de componentes eletrônicos e de que forma será conseguido. Come-
ce criando um grupo que abrace o mesmo projeto, divida funções e junte o material.
Depois disso, comece pela documentação. Desenhe o que irá fazer, com o esquema
elétrico e teste todos os componentes (LED, sensores, bateria). O próximo passo é fazer
a programação. Anote tudo, qual porta é de entrada, qual é de saída, a voltagem (5v e
3,3v) e a cor do fio. Isso ajuda muito depois que colamos ou passamos o fio por aquele
lugarzinho minúsculo. Testado os componentes e feito a programação, faça o circuito
na protoboard, testando a programação e avaliando sua resposta, para que possa fazer
ajustes se necessário. Após o início da construção, talvez retirar o Arduino para carregar
a programação se torne uma tarefa não tão simples.
Agora é mão à massa! Construa seu projeto e apresente no dia do concurso.
Vamos ver aquele que a escola mais gostou!

Projeto campeão: __________________________________________

Pra que serve? ____________________________________________

Qual a principal função? ____________________________________

Espero ter passado à você o prazer de aprender, motivação e vontade de produ-


zir algo que possa beneficiar uma pessoa, uma escola ou uma comunidade. Acredito
muito que aprender é mais prazeroso e significativo quando se aplica em algo que trás
resultados, em um projeto robótico que, para muitos, parecia utopia.

Robótica 87 Qualifica DF
“A maior condenação a que estamos sujeitos no futuro será por omissão, por-
que meios para se fazer muitas coisas lindas e impossíveis existem.”
Amyr Klink

6. Apresentação do Autor

Caro aluno (a);

Meu nome é Edu Mesquita, professor de Robótica da Equipe Praxis e estarei


com você aprofundando em sala os conhecimentos que serão apresentados nessa
apostila.

Sou formado no curso de Redes de Computadores; Pós-Graduado em Docên-


cia no Ensino Superior; certificado pela escola Formare, representante da marca LEGO®
no curso MindStorms EV3, NXT e RCX de Robótica; certificado no curso All Eletronic’s via
YouTube; formado pela JFL Sistemas de Segurança; autor do curso RoboLibras – Robó-
tica para Surdos; criador do projeto Educação Tecnológica e Ambiental, onde mesclo
a robótica com a reciclagem de materiais descartados em nosso lar; participante do
Circuito Nacional de Ciências das Escolas Públicas.

Essas qualificações apresentadas são todas aproveitadas em sala de aula, com


teoria e aplicações práticas com o uso do material ofertado pela própria escola, poden-
do o aluno adquirir seu próprio material e ir além da sala de aula e criar algo robótico e
de aplicabilidade em seu lar ou até mesmo na sociedade em que vive.

Desejo a você, aluno, um ótimo trabalho nesta fase tão importante de seus es-
tudos. Aproveite que o melhor da vida é o agora!

Abraço e boa sorte.

Edu Mesquita

Robótica 88 Qualifica DF
7. Referências Bibliográficas

Curso Básico de Eletrônica Aplicada CEKIT, Editora Portugal, vol. 3

Componentes e Teoria de Circuitos, CEKIT, vol. 1

Nicolodi, Antônio Carlos, Autor do VisuAlg

Vasiljevic, Gabriel, Apostila de Arduino, 2013

Justem, Álvaro “Turicas”, Curso de Arduino

Aloi, Rentato, Curso Arduino

Sites relacionados

www.arduino.cc

www.python.org

www.cursodearduino.com.br

Robótica 89 Qualifica DF
Anotações
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________

Robótica 90 Qualifica DF
Anotações
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________

Robótica 91 Qualifica DF
Anotações
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________

Robótica 92 Qualifica DF
Anotações
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________

Robótica 93 Qualifica DF
Anotações
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________

Robótica 94 Qualifica DF
Anotações
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________

Robótica 95 Qualifica DF
Anotações
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________
_________________________________________

Robótica 96 Qualifica DF

Você também pode gostar