Você está na página 1de 178

APOSTILA DE ROBÓTICA APLICADA

São Luís – MA
2023
Carlos Brandão
GOVERNADOR DO ESTADO

Leuzinete Pereira
SECRETÁRIO DE ESTADO DA EDUCAÇÃO

Alex Oliveira de Souza


DIRETOR GERAL DO IEMA

Marcio Silva Lopes


DIRETOR-ADJUNTO PEDAGÓGICA DO IEMA

Alessandra Salgado Picanço


DIRETORA-ADJUNTA ADMINISTRATIVO-FINACEIRO DO IEMA
EQUIPE DE ELABORAÇÃO

Fábio Aurélio do Nascimento Costa


COORDENADOR DE ROBÓTICA EDUCACIONAL DO IEMA

Ildenice Nogueira Monteiro


ASSESSORA TÉCNICA DE ROBÓTICA EDUCACIONAL DO IEMA

Jorge Emanuel de Oliveira Irineu


ASSESSOR TÉCNICO DE ROBÓTICA EDUCACIONAL DO IEMA

Aleksandro Costa Nogueira


ASSESSOR TÉCNICO DE ROBÓTICA EDUCACIONAL DO IEMA
SUMÁRIO

APRESENTAÇÃO 09
1 INTRODUÇÃO 10
2 HISTÓRICO DA ROBÓTICA 11
2.1 Primeira geração 14
2.2 Segunda geração 15
2.3 Terceira geração 15
3 AS TRÊS LEIS DA ROBÓTICA 16
3.1 1ª lei da Robótica 17
3.2 2ª lei da Robótica 17
3.3 3ª lei da Robótica 17
4 TIPOS DE ROBÔS 17
4.1 Robôs autônomos 17
4.2 Robôs industriais ou manipuladores 18
4.3 Robôs humanoides 18
4.4 Robôs educacionais 19
4.5 Componentes de um robô 19
5 KITS EDUCACIONAIS 21
5.1 Lego Mindstorm EV3 21
5.1.1 Benefícios do LEGO MINDSTORMS Education EV3 para o
aprendizado 22
5.2 Arduino 22
6 ROBÓTICA APLICADA NA EDUCAÇÃO 26
6.1 Competências e habilidades adquiridas com a utilização da Robótica
Educacional 27
7 ROBÓTICA NA BASE NACIONAL COMUM CURRICULAR (BNCC) 29
7.1 Robótica na Linguagens 31
7.2 Robótica na Humanas 32
7.3 Robótica nas Ciências da Natureza 33
7.3.1 Robótica para Ensinar Plano Cartesiano e o Conceito de Graus 34
7.3.2 Robótica e o Ensino de Algoritmos 35
7.3.3 Robótica e o Pensamento Lógico 35
8 PENSAMENTO COMPUTACIONAL 35
8.1 LÓGICA DE PROGRAMAÇÃO 36
9 LINGUAGENS DE PROGRAMAÇÃO 37
9.1 Linguagem em bloco 39
9.1.1 Algorítmo 41
9.1.2 Scratch 42
9.1.2.1 Programar no Scratch 44
9.1.2.2 Área de programação 44
9.1.2.3 Blocos de movimento 45
9.1.2.4 Blocos de aparência 45
9.1.2.5 Blocos de som 46
9.1.2.6 Blocos de evento 47
9.1.2.7 Blocos de controle 47
9.1.2.8 Blocos de sensores 48
9.1.2.9 Blocos de operadores 49
9.1.2.10 Blocos de variáveis 50
9.1.3 Open Roberta 51
9.1.4 Microsoft Makecode 52
9.1.5 ArduinoBlocks 53
9.1.5 .1 Lógica 54
9.1.5.2 Control 56
9.1.5.3 Matemática 57
9.1.5.4 Texto 60
9.1.5.5 Variáveis 64
9.1.5.6 Listas 66
9.1.5.7 Funções 68
9.1.5.8 Blocos de funções arduino 70
9.1.5.8.1 Entrada/Saída 70
9.1.5.9 Multitarefa 77
9.1.5.10 Blocos 77
9.1.5.11 Bluetooth 80
9.1.5.12 Bluetooth HID 3.3.4.1 (ESP32 / ESP32 STEAMakers) 83
9.1.5.13 Sensores 83
9.1.6 Tinkercad 90
9.1.7 Linguagem C/C++ 91
10 PLACA ARDUINO (HARDWARE) 92
10.1 Alimentação da placa Arduino 93
10.2 Comunicação USB da placa arduino UNO 94
10.3 Microcontrolador do Arduino 95
10.4 Entradas e saídas do Arduino 95
10.4.1 Grandezas digitais e analógicas 96
10.4.2 Caraterísticas de uma entrada digital (pull-up e pull-down) 97
10.4.3 Caraterísticas de uma saída digital 99
10.4.4 Entradas e saídas analógicas 99
10.4.5 Entradas analógicas 99
10.5 Programação da placa 101
10.6 Resumo da placa arduino UNO 102
11. ARDUINO IDE (SOFTWARE) 102
11.1 Void 102
11.2 pinMode 103
12 TIPOS DE PLACAS DE ARDUINO 103
12.1 Arduino UNO R3 103
12.2 Arduino Mega (R3) 104
12.3 Arduino Leonardo 105
12.4 Arduíno Nano 106
12.5 Arduino Pro Mini 106
12.6 Arduino LilyPad 107
13 TABELA COMPARATIVA DE PLACAS ARDUÍNO 108
14 MOTORES ARDUINO 108
14.1 Motor de corrente contínua (motor dc) 108
14.2 Servo motor 109
15 SENSORES ARDUINO 110
15.1 Sensor de distância ultrassônico HC-SR04 110
15.2 Sensor de umidade e temperatura 110
15.3 Sensor de obstáculo infravermelho IR 111
15.4 Sensor de cor 111
16 CÓDIGO DE CORES PARA RESISTORES 112
17 EXPERIÊNCIA COM KIT ARDUÍNO E PRÁTICA LABORATORIAL 113
17.1 Prática experimental 1 – Projeto led 113
17.2 Prática experimental 2 – Projeto led com expansão 114
17.3 Prática experimental 3 – Projeto piano 115
17.4 Prática experimental 4 – Projeto registro de temperatura 117
17.5 Prática experimental 5 – Projeto alarme 118
17.6 Prática experimental 6 – Projeto termômetro 119
17.7 Prática experimental 7 – Potenciômetro 122
17.8 Prática experimental 8 – Projeto sensor de estacionamento 123
17.9 Prática experimental 9 – Sistema de alarme codificado com arduino,
display 16×2 e sensor de vibração SW-40 129
17.10 Prática experimental 10 – Sensor de luz 137
18.11 Prática experimental 11 – Incrementando sensor de luz no módulo
relé 138
17.12 Prática experimental 12– Controlando servo motor 140
17.13 Prática experimental 13 – Sensor de som 142
17.14 Prática experimental 14 – Incrementando sensor de som 143
17.15 Prática experimental 15 – Monitoramento de temperatura 144
17.16 Prática experimental 16 – Sensor de movimento e presença 146
17.17 Prática experimental 17 – Controle de acesso por RFID com arduino 148
17.18 Prática experimental 18 – Robô autônomo 152
17.19 Prática experimental 19 – Robô autônomo via bluetooth 158
17.20 Prática experimental 20 – Carregar uma sequência de LED usando
o arduinoblocks 162
17.21 Prática experimental 21- LCD usando o ArduinoBlocks 165
17.22 Prática experimental - Comunicação arduino e bluetooth usando o
arduinoblocks 168
17. 23 Prática experimental – Programe o ESP8266 com arduinoblocks:
NodeMCU Board 168
18 REFERÊNCIAS 172
APRESENTAÇÃO
A coordenação de Robótica do Instituto de Educação, Ciência e
Tecnologia do Maranhão - IEMA, buscando uma formação sintonizada com o
desenvolvimento do conhecimento e da criatividade, traz a Apostila de Robótica
Educacional em Arduino para os demais IEMAs Plenos, que servirá como material de
apoio teórico e prático para os professores.
Além de uma introdução sobre a plataforma Arduino, instalação e
configuração, mostra-se como utilizar todos os recursos que uma placa Arduino oferece,
através de experimentos práticos, desde a programação, montagem, até o produto em
funcionamento.
Esse material se articula fortemente a todos os componentes curriculares,
garantindo que os conteúdos pedagógicos sejam abordados por meio de uma prática
interativa e estimulante. Ainda possibilita ao estudante a compreensão de programação,
conhecimento bastante importante frente aos desafios da sociedade atual.
Professores terão possibilidade de explorar e ampliar os conhecimentos
trazidos neste material, que é um subsídio para o início de projetos nos IEMAs Plenos.
1 - INTRODUÇÃO
A Robótica é a parte da ciência que se dedica a estudar os robôs, ou
autômatos, que podem ser reprogramáveis controlados por um programa de
computador armazenado no próprio robô, ou em um computador ao qual o
robô está ligado. Construir e programar um robô requer a combinação de
conhecimentos de diferentes áreas, logo pode-se dizer que a Robótica é por
natureza multidisciplinar.
Segundo Barbosa e Silva e Blikstein (2020), até a década de 1990, a
Robótica era assunto exclusivo para pesquisadores de ponta nas melhores
escolas de engenharia do mundo ou roteiro de escritores de ficção científica
e por mais que fosse inimaginável pensar que crianças e adolescentes
pudessem utilizar a robótica na sala de aula, essa é a realidade em muitas
escolas.
Ao longo do tempo, um grupo de pesquisadores, originários ou
relacionados ao grupo de Seymour Papert do Massachusetts Institute of
Technology – MIT Media Lab, trouxe a Robótica para a escola, “a ideia era
desenhar dispositivos que escondessem grande parte da complexidade da
construção de dispositivos robóticos” e que tivesse uma abordagem
pedagógica, baseada no construcionismo, na montagem e na programação
de robôs, surgindo assim o que hoje chamamos de Robótica Educacional –
RE (BARBOSA & SILVA e BLIKSTEIN, 2020).
A robótica tem usufruído do uso de blocos de montar para se
estabilizar enquanto instrumento educacional. O uso desses blocos se dá de
forma intencional, onde, ao passo em que o sujeito encaixa uma peça na
outra, já há ali a prática do construcionismo, uma vez que para ele aquela
estrutura representa algo de seu interesse. Montar protótipos e programá-los
através de uma linguagem específica, fazendo uso de variadas tecnologias,
implica diretamente na extensão tecnológica da cultura do “faça você mesmo”
(CRUZ, 2019).
De acordo com Benitti et al. (2009), por meio da robótica os alunos
podem explorar novas ideias e desvendar novos caminhos para aplicar os
conhecimentos adquiridos em sala de aula, fazendo com que desenvolvam a
capacidade de formular hipóteses, estabelecer relações, tirar conclusões e

9
resolver problemas. Tais afirmativas são constatadas através de diversas
pesquisas nessa área.
O ensino de robótica alinhado à cultura maker e às competências
gerais da BNCC promovem um processo ensino-aprendizagem que permite
que a escola acompanhe os rápidos avanços tecnológicos, assim como
abranjam as necessidades das novas e futuras gerações, as quais nasceram
e irão nascer num mundo amplamente conectado (BRASIL, 2017).
Portanto, alinhadas às competências gerais da Base Nacional
Comum, a robótica educacional e a cultura maker nos apresentam uma gama
de oportunidades de desenvolver no espaço educacional habilidades
transversais e transdisciplinares que podem permitir que os sujeitos garantam
cada vez mais a sua formação integral. Neste sentido, diante da necessidade
de nortear os professores que irão trabalhar com a disciplina de Robótica
Educacional, elaborou-se esse material, que servirá de instrumento para as
ações a serem desenvolvidas em sala de aula, pois é um meio de construir e
compreender tecnologias presentes no nosso cotidiano bem como usufruir de
forma sustentável nosso ambiente.

10
2 - HISTÓRICO DA ROBÓTICA
A robótica é um dos ramos da tecnologia, mais especificamente no
domínio das engenharias (englobando mecânica, elétrica, eletrônica,
automação, controle e computação), que lida preferencialmente com sistemas
compostos por máquinas e partes mecânicas automáticas e controlados por
dispositivos mecânicos e/ou circuitos integrados (microprocessadores),
tornando sistemas mecânicos motorizados, controlado manual ou
automaticamente por circuitos elétricos, por computadores ou tele operados.
Esta tecnologia e suas disciplinas correlatas vem já há algum tempo sendo
adotada como padrão de produção em unidades fabris com sucesso relativo
e restrito aos conceitos: índices de produtividade e redução de custos (REIS
e SOUZA, 2020).
O precursor do termo robô (GROOVER, 1989) foi Karel Capek,
novelista e escritor de uma peça teatral na Tchecoslováquia, que usou pela
primeira vez, em 1920, a palavra “robota” (serviço compulsório, atividade
forçada) originando a palavra “robot” em inglês e traduzida para o português
como “robô”. Diversos filmes de ficção científica mostraram robôs produzidos
com o comportamento e a forma humana, levando muitos jovens a pesquisar
e desenvolver robôs para o mundo real.
Com o surgimento dos computadores na metade do século, iniciaram-
se especulações em termos da capacidade de um robô pensar e agir como
um ser humano. No entanto, os robôs foram, neste período, criados
especialmente para executarem tarefas difíceis, perigosas e impossíveis para
um ser humano. Por outro lado, eles não eram projetados com a capacidade
de criar ou executar processos que não lhes foram ensinados ou
programados. Assim sendo, foram as indústrias que mais se beneficiaram
com o desenvolvimento da robótica, aumentando a produção e eliminando
tarefas perigosas, antes executadas por seres humanos (CARRARA, 2015).
Na prática, um robô é um dispositivo autônomo ou semiautônomo que
realiza trabalhos de acordo com um controle humano, controle parcial com
supervisão, ou de forma autônoma. Além de serem usados como redutor de
custos pela indústria, entende-se que a grande vocação para os robôs fica por
conta da realização de tarefas em locais inóspitos ou impróprios a presença
do ser humano. Locais mal iluminados, ruidosos, alagados, poluídos ou

11
contaminados quimicamente, ambientes radioativos, hiper ou hipobáricos;
todos são candidatos a um planejamento especial contando com tais sistemas
(REIS e SOUZA, 2020).
Observa-se que, do mesmo modo que existem inúmeras definições
sobre a robótica pode-se encontrar também vários registros sobre “criadores”
e dos “pais” da tecnologia, ou mesmo quem foi o inventor/criador ou ainda o
primeiro a utilizar os termos: robô e robótica.
Segundo Azevedo et al. (2010), historicamente parece haver razões
para crer que teriam sido os gregos que construíram o que podemos chamar
de primeiros robôs. Ctesibius, um matemático e engenheiro grego que viveu
cerca de 285-222 a.C. em Alexandria, arquitetou uma série de aparelhos
robóticos, o mais famoso destes, foi a clepsidra ou relógio de água, o qual
constitui-se um dos primeiros sistemas criados pelo homem para medir o
tempo.
Há também relatos sobre Heron de Alexandria, geômetra e engenheiro
grego contemporâneo a Cristo e aos apóstolos. Este construiu diversas
invenções na área da automação, dentre seus sistemas robóticos está a
primeira máquina de vender bebidas da história, na qual a pessoa colocava
uma moeda nela e recebia um jato de água. Também construiu um autômato
que possuía autonomia para andar para frente e para trás movido por
engrenagens em um sistema que utilizava a energia cinética de grãos de trigo
que caíam de um recipiente no topo do autômato. Criou também o primeiro
motor a vapor documentado na história (AZEVEDO et al., 2010).
O célebre artífice, Leonardo Da Vinci ganha importância no invento de
engenhocas robóticas. Da Vinci, cientista, matemático, engenheiro, inventor,
anatomista, pintor, escultor, arquiteto, botânico, poeta e músico é reverenciado
até os dias atuais por sua engenhosidade tecnológica. Concebeu ideias muito
à frente de seu tempo, como um helicóptero, um tanque de guerra, o uso da
energia solar, uma calculadora, dentre outros (AZEVEDO et al., 2010).
Influenciado pela obra do arquiteto e engenheiro romano Marcos
Vitrúvio Polião (século I a.C.), Leonardo debruçou-se sobre o que foi chamado
o Homem Vitruviano – um dos seus trabalhos mais famosos, tomado como
símbolo do espírito renascentista. O desenho reproduz a anatomia humana
conduzindo eventualmente ao desígnio do primeiro robô conhecido na história

12
que veio a ser chamado de O Robô de Leonardo. Como resultados deste
estudo surgiram diversos exemplares de bonecos que moviam as mãos, os
olhos e as pernas, e que conseguiam realizar ações simples como escrever
ou tocar alguns instrumentos. E ainda em sua homenagem encontramos
atualmente o Robô Da Vinci destinado a diagnosticar e até operar a distância,
pois é controlado por um médico ou um grupo de especialistas à distância do
local onde se encontra o paciente (MENZEL, 2000).
No mundo da robótica, Jacques de Vaucanson, inventor e artista
francês, também se destaca. Em 1738 ele criou o primeiro robô funcional, um
androide que tocava flauta, assim como um pato mecânico que se alimentava.
Após expor para sociedade as primeiras criações robóticas, a tecnologia
avançou a ponto das pessoas preverem o uso das criaturas mecânicas como
força de trabalho, as respostas literárias ao conceito dos autômatos (robôs)
refletiram o medo dos seres humanos, de serem substituídos por suas próprias
criações (AZEVEDO et al., 2010).
Enquanto na ficção apareciam obras com base na robótica ficcional, na
realidade começam a ser criados os primeiros robôs fabricados para
industrialização. Isso ocorreu na década de 1950. Joseph F. Engelberger,
engenheiro e empresário considerado o "pai da robótica”, foi o primeiro a
construir tal robô, chamado Unimate. Este robô foi vendido para General
Motors, passando a trabalhar na linha de montagem em Nova Jersey, em
1961. Alguns textos creditam a criação do Unimate também ao inventor
George DeVol, expondo que este e Joseph F. Engelberger trabalharam em
conjunto na estruturação do primeiro robô fabril (PATA, 2006).
A partir de então, dissemina-se a robótica industrial como mecanismo
capaz de proporcionar às indústrias o aumento da produtividade e melhorar a
qualidade dos produtos, possibilitando a redução de custos com o operariado.
Porém há um ponto negativo nisso tudo. Ao mesmo tempo em que a robótica
beneficia as empresas diminuindo gastos e agilizando processos, ele cria o
desemprego pela substituição do trabalho humano por máquinas (AZEVEDO
et al., 2010).
Há também alguns ramos da robótica que geram impacto social positivo.
Quando um robô é na realidade uma ferramenta para preservar o ser humano,
como robôs bombeiros, submarinos, cirurgiões, entre outros tipos. Neste caso,

13
o robô pode auxiliar profissionais na resolução de atividades específicas,
preservando sua vida.
Dentro deste contexto, é possível observar que na robótica há variados
tipos de robôs, com complexidades e utilidades distintas. Podemos ainda
classificar os robôs de acordo com suas gerações tecnológicas.

2.1 - Primeira Geração


São basicamente os braços robóticos industriais como o de Engelberg.
Seu movimento é programado previamente e realizam apenas a repetição de
uma sequência fixa de passos. Possuem sensores que adquirem dados
apenas do estado interno do robô. Para que sua programação seja bem
executada eles requerem um ambiente bem estruturado, com objetos bem
posicionados. Outro exemplo de robô desta geração eram os braços para
coleta de amostras submarinas.
Figura - Unimate, robô de primeira geração

Fonte: https://www.pinterest.nz/pin/366832332128690376/
Figura -Braço robótico, robô de primeira geração

Fonte: https://www.opovo.com.br/noticias/tecnologia/2015/08/cientistas-criam-
robo-capaz-de-construir-outros-sem-intervencao-humana.html

14
2.2 - Segunda Geração
São robôs dotados de sensores externos e internos, a programação
adotada permite que se adequem as situações nas quais tais dispositivos se
encontram. Nesta geração houve o advento do uso de câmeras que capturam
imagens as quais são comparadas com um banco de imagens, sensores de luz,
toque, peso, etc. Como exemplos temos os robôs do tipo houver e os robôs
montados com os kits mais comuns de robótica educacional.

Figura - Robô Hilare, primeiro robô de segunda geração produzido

Fonte:https://www.researchgate.net/figure/Le-robot-mobile-Hilare-2-muni-de-sa-
remorque-un-systeme-non-holonome_fig3_281416197
Figura - Robô HILARE, em mais detalhes.

Fonte: https://www.wikidata.org/wiki/Q55139668

2.3 - Terceira Geração


É composta por robôs dotados de Inteligência Artificial. Fazem uso de
mecanismos como visão computacional, síntese e reconhecimento de voz,
atualização de posicionamento, algoritmos de rotas, heurísticas, e simulação
de comportamento humano ou animal – entre outras características. Podem
ser dotados de componentes físicos, ou se apresentar apenas em mundos
virtuais, como jogos de computador. Em algumas aplicações, robôs podem
coexistir tanto no mundo real quanto possuir uma representação no mundo

15
virtual, através de uma plataforma conhecida como hiper presença. Os robôs
mais conhecidos desta geração são de aplicações militares e/ou biológicas,
ou ainda robôs que simulam seres vivos.
Figura - Robô AIBO

Fonte:https://spectrum.ieee.org/automaton/robotics/home-robots/sony-halts-support-for-
aibo-still-one-of-the-best-robot-toys-ever

Figura - Robô ASIMO.

Fonte:https://www.dailymail.co.uk/sciencetech/article-2797864/the-ultimate-
robo-pal-asimo-football-playing-disco-dancing-bartending-robot-arrives-uk.html

Sugestão de vídeos
https://www.youtube.com/watch?v=kFVB0mmzrvs
https://www.youtube.com/watch?v=FJ3dg5E_THw
https://www.youtube.com/watch?v=5lh3OtqkLMU

3- AS TRÊS LEIS DA ROBÓTICA

Fonte: https://www.admethics.com/br/the-three-or-four-laws-of-robotics/

16
Com o surgimento de robôs cada vez mais modernos e capazes de fazer
cada vez mais coisas, a ficção científica começou a criar máquinas inteligentes
e um universo em que máquinas tinham cada vez mais autonomia e controle
sobre as pessoas, fazendo parecer que os robôs se tornariam destruidores da
humanidade.
Assim, Isaac Asimov, a partir da década de 1940 lança inúmeras
publicações falando sobre esta temática, mas de forma contrária: segundo ele
os robôs surgiram para ajudar os homens em suas tarefas e não para substituí-
los, ele escreveu três leis simples para os robôs, que hoje são conhecidas como
“as três leis da robótica” (ASIMOV, 1981).
3.1 - 1ª Lei da Robótica
● Um robô não pode ferir um ser humano ou, por falta de ação, deixar que um
ser humano se fira;

3.2 - 2ª Lei da Robótica


● O robô deve obedecer às ordens dadas pelos seres humanos, exceto se tais
ordens estiverem em contradição com a primeira lei;

3.3 - 3ª Lei da Robótica


● Um robô deve proteger sua existência na medida em que essa proteção não
esteja em contradição com a primeira e a segunda lei.

Sugestão de leitura
https://www.tecmundo.com.br/ciencia/125150-funcionam-tres-leis-robotica-
escritor-isaac-asimov-2017.htm

4 - TIPOS DE ROBÔS
De forma simples vamos conhecer e agrupar os robôs em cinco grandes
grupos, para tornar nosso estudo mais fácil, sendo eles: autônomos, industriais,
humanoides e educacionais.

4.1 - Robôs autônomos


São robôs que podem realizar os objetivos desejados em ambientes
desestruturados sem a ajuda humana. O principal objetivo dos robôs autônomos

17
é realizar tarefas que são perigosas, repetitivas ou até mesmo inviáveis para o
ser humano. No chão de fábrica, os robôs podem ser utilizados na movimentação
e carregamento de produtos, na linha de produção e outros trabalhos pesados.

Figura - robô organizador de prateleiras

Fonte:https://www.terra.com.br/noticias/tecnologia/conheca-os-novos-robos-
trabalhadores-da-amazon,759895d2e060a410VgnCLD200000b1bf46d0RCRD.html

4.2 - Robôs industriais ou manipuladores


São aqueles normalmente empregados em construtoras de automóveis,
que devem garantir precisão, agilidade e rapidez. Normalmente são apenas
braços mecânicos como os de primeira geração citados acima, e dotados de
sensores, tudo controlado por computadores.
Figura - braço robótica industrial

Fonte: https://www.hubi40.com.br/robos-industriais-devem-chegar-a-3-milhoes-
ate-2020/

4.3 - Robôs humanoides


Quando se ouve a palavra “robô ‟, normalmente vem a nossas mentes:
seres de lata com muitos fios e circuitos organizados em um corpo com
cabeça e membros em forma quase humana. Isso acontece devido à grande

18
quantidade de filmes, animações e desenhos que “formatam” a mente
deixando a ideia de que um robô deve pensar e agir (além de se parecer)
como humano, mas com o avanço da robótica esses modelos estão cada vez
mais aperfeiçoados e bem definidos, mas ainda atendendo aos comandos
humanos.
Figura - robô NAO

Fonte:https://www.dw.com/pt-br/rob%C3%B4s-humanoides-saem-da-f%C3%A1brica-
prontos-para-aprender/a-16259862

4.4 - Robôs Educacionais


E por fim, temos os robôs mais elaborados que os manipuladores ou de
primeira geração, porém mais simples que os humanoides e de terceira
geração, que são os robôs educacionais. Eles são na verdade robôs pré-
montados que estão disponíveis em Kits de robótica. Estes kits servem para
facilitar e viabilizar o desenvolvimento, construção e programação de robôs
para o público iniciante. Dentre os kits mais comuns, podemos citar o Lego
Mindstorms e Arduino.
Figura - kit educacional de robótica

Fonte:https://ajornadadetchellita.wordpress.com/2017/02/28/robotica-
educacional-mais-uma-modinha-tecnologica/

4.5 Componentes de um Robô


Agora que já abordamos alguns dos conceitos básicos da robótica, e
temos uma visão mais geral desta área, vamos estudar como construir um

19
robô. A primeira coisa que deve se saber é identificar quais os componentes
um robô pode possuir, e são eles:

● Controlador – esta é a parte central de um robô, dotada de um


microprocessador e memória para execução de seu(s) programa(s).
● Sensores – componentes responsáveis por detectar sinais como tato,
imagens e sons; os sensores mais comuns são os de toque, rotação, som
(microfone), ultrassom, luz, cor, câmera (captura de imagens para
processamento).
● Atuadores – podem ser motores de diversos tipos, como mecânicos,
elétricos, hidráulicos ou pneumáticos; servem para mover o robô e seus
manipuladores.
● Manipuladores – são membros como braços e garras, a variedade de
movimentos que um manipulador pode realizar é medida em graus de
liberdade. Normalmente possuem um ou mais atuadores em sua estrutura.
● Engrenagens – elementos mecânicos compostos de rodas dentadas.
Quando duas engrenagens estão em contato, chamamos a engrenagem que
fornece a força e rotação para a outra é dita engrenagem motora, e a outra é
dita engrenagem movida. Quando desejamos aumentar a força transmitida
pelas engrenagens, a engrenagem motora deve ser a menor. Quando
desejamos aumentar a velocidade transmitida, a engrenagem motora deve ser
maior que a movida.
● Eixo – peça que liga um motor a engrenagens ou rodas.
● Fonte de energia – é preciso definir como o controlador e os demais
componentes eletrônicos serão alimentados, que tipo de bateria e/ou gerador
serão usados.
● Fiação – para transmitir sinais entre o controlador, os sensores e os
atuadores, e também para a alimentação desses componentes.
● Estrutura – a “carcaça” do robô, formado por um conjunto de peças de
tamanho, formato e cor diversas, e em alguns casos rodas, parafusos e placas.
Serve como base para sustentar o controlador, sensores, atuadores,
manipuladores, baterias, geradores, fiação, eixos e engrenagens.

20
Fonte: http://www.ece.ufrgs.br/~rventura/Aula2A_componentes.pdf

5 - KITS EDUCACIONAIS
A robótica educacional pode ser entendida como a utilização de meios
computacionais ou robóticos para fins pedagógicos. Compreendendo de uma
forma mais específica, a robótica educacional tem como principal ferramenta a
utilização de robôs para o aprimoramento de capacidades intelectuais
relacionadas ao raciocínio lógico, bem como trabalho em grupo, concentração,
imaginação e capacidade de resolução de problemas (ZILLI, 2004).
Atualmente nas aulas de robótica educacional do Instituto Estadual de
Educação, Ciência e Tecnologia do Maranhão - IEMA, utilizamos duas
plataformas:
● Lego Mindstorms EV3
● Arduíno

5.1 - Lego Mindstorm EV3


O LEGO MINDSTORMS Education EV3 é uma solução educacional de
robótica, que estimula o aprendizado de STEAM (sigla internacional para as
áreas de Ciências, Tecnologia, Engenharia e Matemática). É destinada a alunos
a partir dos 10 anos até o Ensino Médio e também para projetos de cursos do
Ensino Superior.
● Bloco EV3, um computador programável, compacto e poderoso, que torna
possível controlar motores e coletar feedback dos sensores utilizando o software
de programação e registro de dados;
● Motores e 5 Sensores (giroscópio, ultrassônico, de cor e dois de toque);
● Software de registro de dados e programação disponível para iPads, tablets,
Android e Chromebooks. Tudo isso em um ambiente intuitivo, baseado em
ícones, com usabilidade simples e natural.

21
5.1.1 - Benefícios do LEGO MINDSTORMS Education EV3 para o
aprendizado:
Segundo Antunes (2022), a utilização do LEGO na educação básica
proporciona diversos benefícios, como os citados abaixo:
● Auxilia no desenvolvimento do pensamento crítico e na criatividade dos alunos
nas disciplinas que envolvem STEM.
● Estimula a aprendizagem por meio da resolução de problemas baseados em
situações do cotidiano;
● Desperta o interesse dos seus alunos com uma abordagem investigativa, por
meio de uma solução de ensino abrangente e inspiradora;
● Motiva os alunos a desenvolver, construir e programar robôs usando motores,
sensores, engrenagens, rodas, eixos e outros componentes. Isso ajuda em uma
melhor compreensão de como a tecnologia funciona nas aplicações da vida real.
● Permite que os alunos entendam e interpretem desenhos bidimensionais para
a criação de modelos tridimensionais; construam, testem, resolvam problemas e
revejam projetos; apliquem conceitos de matemática e ciências em aplicações
da vida real; e dominem funções de programação e registro de dados.
● Essa plataforma (Lego) será ofertada nas Eletivas e também será
utilizada em Competições.

Fonte: https://legoeducation.mcassab.com.br/lego-mindstorms-education/

Sugestão de vídeo
https://www.youtube.com/watch?v=M47xixea-to
https://www.youtube.com/watch?v=TZX4r9lA-h0

5.2 - Arduíno
O projeto Arduíno, nasceu em 2005 na Itália, é constituído de uma
plataforma de hardware e de software. É uma plataforma de código aberto

22
usada para construir projetos de eletrônica. Consiste de uma placa de circuito
físico programável (geralmente chamada de microcontrolador) e um software,
ou IDE (Integrated Development Environment) que roda em seu computador,
usado para escrever e fazer upload de código de computador para a placa
física (ARDUINO, 2019).
A plataforma Arduíno tornou-se bastante popular entre as pessoas que
estão começando com a eletrônica e por um bom motivo. Ao contrário da
maioria das placas de circuito programáveis anteriores, o Arduíno não precisa
de um hardware separado (chamado programador) para carregar um novo
código na placa - você pode simplesmente usar um cabo USB. Além disso, o
Arduíno IDE usa uma versão simplificada do C++, facilitando o aprendizado do
programa. O Arduíno fornece um fator de forma padrão que divide as funções
do micro controlador em um pacote mais acessível (CAVALCANTE et. al.,
2014).
O hardware e software Arduíno foi projetado para artistas, designers,
amadores, hackers, novatos e qualquer pessoa interessada em criar objetos
ou ambientes interativos. O Arduino pode interagir com botões, LEDs,
motores, alto-falantes, unidades de GPS, câmeras, a internet e até mesmo seu
smartphone ou sua TV. Essa flexibilidade combinada com o fato de que o
software Arduino é gratuito, as placas de hardware são muito baratas e tanto
o software quanto o hardware são fáceis de aprender, levando a uma grande
comunidade de usuários que contribuíram com código e lançaram instruções
para uma enorme variedade de Projetos baseados em Arduíno
(ALBUQUERQUE, 2021).
Existem diversos modelos de placas Arduino no mercado, no entanto,
apesar de possuírem características diferentes, compartilham um conjunto de
circuitos eletrônicos semelhantes, cujo principal componente é um
microcontrolador.
Um microcontrolador pode ser entendido como um computador de chip
único, onde temos encapsulados num circuito integrado a unidade lógica
aritmética (ULA), memórias, barramentos de comunicação, além de periféricos
programáveis para entrada e saída de dados (I/O) (SOUSA JR et al., 2020).
Para que os microcontroladores operem corretamente, é necessário um
conjunto auxiliar de circuitos eletrônicos responsáveis por funções como

23
regulagem de tensão, geração de sinal de Clock, proteção térmica, entre
outras. Essa é a grande vantagem do projeto Arduino, pois integra na mesma
placa de circuito impresso todos os componentes necessários ao
funcionamento do microcontrolador. A maioria dos Arduínos tem alguns
componentes em comum como os apresentados na figura a seguir.

Fonte: ARDUINO (2019), modelo adaptado

Com base nas especificações técnicas contidas no portal ARDUINO


(2019), segue as explanações sobre os componentes relacionados a imagem
acima.
a) Potência (USB / Barrel Jack): toda placa Arduino precisa de uma
maneira de estar conectada a uma fonte de energia. O Arduino pode ser
alimentado por um cabo USB vindo do computador ou uma fonte de
alimentação de parede que é terminada em um conector de barril. Na imagem,
a conexão USB é rotulada (1) e o conector barril está rotulado (2). A conexão
USB também permite o carregamento do código (scripts) na sua placa
Arduino. Vale ressaltar que não se deve usar uma fonte de alimentação maior
que 20 Volts, pois assim irá destruir seu Arduino. A voltagem recomendada
para a maioria dos modelos Arduino é entre 6 e 12 Volts.
b) Pinos (5V, 3.3V, GND, analógico, digital, PWM, AREF): os pinos no
Arduino são os lugares onde se conecta os fios para construir um circuito
(provavelmente em conjunto com uma placa de montagem e algum fio). Eles
geralmente têm 'cabeçalhos' de plástico preto que permitem que se conecte
um fio direto na placa. Tem vários tipos diferentes de pinos, cada um deles
rotulado na placa e usado para diferentes funções. De acordo com a imagem
(4) temos: - GND (3): abreviação de "Ground". Existem vários pinos GND no
Arduino, qualquer um dos quais pode ser usado para aterrar seu circuito; - 5V

24
(4) e 3.3V (5): Como se pode imaginar, o pino de 5V fornece 5 volts de energia,
e o pino de 3,3V fornece 3,3 volts de energia. A maioria dos componentes
simples usados com o Arduino são executados com folga de 5 ou 3,3 volts; -
Analógico (6): A área dos pinos sob a etiqueta "Analog In" (A0 até A5) são
pinos Analog In (este exemplo é baseado em placas Arduino UNO). Esses
pinos podem ler o sinal de um sensor analógico (como um sensor de
temperatura) e convertê-lo em um valor digital que se pode ler; - Digital (7):
Em frente aos pinos analógicos estão os pinos digitais (0 a 13 na UNO). Esses
pinos podem ser usados tanto para entrada digital (como dizer se um botão é
pressionado) quanto para saída digital (como alimentar um LED); - PWM (8):
Deve se notar o til (~) ao lado de alguns dos pinos digitais (3, 5, 6, 9, 10 e 11
no UNO). Esses pinos funcionam como pinos digitais normais, mas também
podem ser usados para algo chamado PWM (Pulse Width Modulation,
modulação por largura de pulso). Esses pinos são capazes de simular a saída
analógica (como o desvanecimento de um LED para dentro e para fora); -
AREF (9): representa a referência analógica. Na maioria das vezes pode
deixar este pino sozinho. Às vezes, é usado para definir uma tensão de
referência externa (entre 0 e 5 Volts) como o limite superior para os pinos de
entrada analógica;
c) Botão de reset: o Arduino tem um botão de reset (10). Empurrar este
botão irá conectar temporariamente o pino de reset à terra e reiniciar qualquer
código que esteja carregado no Arduino;
d) LED indicador de energia: Logo abaixo e à direita da palavra "UNO"
(no caso da imagem 4) na placa de circuito, há um pequeno LED ao lado da
palavra "ON" (11). Este LED deve acender sempre que se conectar o Arduino
a uma fonte de energia. Se esta luz não acender, há uma boa chance de que
algo esteja errado;
e) LEDs TX RX: TX é a abreviação de transmitir, RX é curto para
receber. Essas marcações aparecem um pouco na eletrônica para indicar os
pinos responsáveis pela comunicação serial. No caso, existem dois lugares
no Arduino, onde TX e RX aparecem - uma vez pelos pinos digitais 0 e 1, e
uma segunda vez ao lado dos LEDs indicadores TX e RX (12). Esses LEDs
darão algumas indicações visuais agradáveis sempre que o Arduino estiver

25
recebendo ou transmitindo dados (como quando carregamos um novo
programa no quadro);
f) IC principal: A “coisa” preta com todas as pernas de metal é um IC,
ou Circuito Integrado (13). É o cérebro do Arduino. O IC principal no Arduino
é um pouco diferente entre as placas de Arduino (depende do modelo), mas
geralmente é da linha “ATmega” do IC da empresa ATMEL;
g) Regulador de voltagem: O regulador de tensão (14) não é realmente
algo que se possa (ou deveria) interagir com o Arduino. Mas é potencialmente
útil saber que está lá e para o que serve. O regulador de tensão faz
exatamente o que diz - controla a quantidade de tensão que é colocada na
placa do Arduino. Pense nisso como uma espécie de porteiro; ele irá afastar
uma voltagem extra que pode prejudicar o circuito.
O Arduino é constituído de uma série de placas denominadas “Família
Arduino”, onde cada uma delas possui um conjunto de características
próprias. Dentre elas (Arduino UNO R3, Arduino LilyPad, RedBoard, Arduino
Mega R3 e Arduino Leonardo). Esse material de estudo abordará
especificadamente sobre dois modelos sendo: Arduino UNO e ESP que estará
detalhado em um capítulo a parte mais adiante.

Sugestão de vídeo
https://www.youtube.com/watch?v=MqDtkc1QE7o&feature=emb_title
https://www.youtube.com/watch?v=sv9dDtYnE1g

6 - ROBÓTICA APLICADA NA EDUCAÇÃO


A Robótica Educacional ou Robótica Pedagógica, é uma metodologia
muito eficiente para auxiliar no processo de ensino-aprendizagem em todos os
componentes curriculares. Segundo Tajra (2008), a Robótica Educacional
consegue associar a teoria com a prática, além de desenvolver habilidades
essenciais como: raciocínio lógico, criatividade, responsabilidade e
cooperação.
Ao combinar teoria e prática, os alunos podem desenvolver alguns
conceitos que são menos atrativos em outras disciplinas. A robótica é um
conceito para estudantes porque é um campo interdisciplinar, como trabalho
em equipe, autodesenvolvimento, habilidades de resolução de problemas,

26
pensamento crítico, integração de disciplinas, divulgação de pensamentos,
criatividade, autonomia e responsabilidade e empreendedorismo para
soluções para integrar aplicativos de outras disciplinas relacionadas (SILVA e
OLIVEIRA, 2022).
Segundo Zilli (2004), o uso da Robótica Educacional como ferramenta
pedagógica é um recurso tecnológico bastante interessante e rico no processo
ensino e aprendizagem, pois contempla o desenvolvimento pleno do
estudante, e propicia o desenvolvimento de atividades dinâmicas, permitindo
a formação de um cidadão autônomo, independente e responsável pela sua
própria aprendizagem.
A robótica remete o aluno à essência do problema, promovendo o
estudo de conceitos multidisciplinares, provocando a criatividade e a
inteligência do aluno, sem contar que o mesmo estará motivado aos estudos.
Nesse sentido Almeida (2013) ressalta que o professor também deixa de ser
o único e exclusivo provedor de informações e passa a ser um parceiro no
processo de aprendizagem.

6.1 - Competências e habilidades adquiridas com a utilização da Robótica


Educacional
Quando nos referirmos à robótica educacional não estamos falando da
tecnologia ou dos itens técnicos/robóticos em si, nem do ambiente físico em
que as atividades são desenvolvidas. Estaremos nos referindo a proposta de
possibilidades metodológicas do uso da robótica no processo de
aprendizagem, incluindo conteúdos transversais.
Segundo Zilli (2004), as principais vantagens pedagógicas da robótica
são:
● Desenvolver o raciocínio e a lógica na construção de algoritmos e
programas para o controle de mecanismo;
● Favorecer a interdisciplinaridade, promovendo a integração de conceitos de
áreas como matemática, física, eletricidade, eletrônica e mecânica;
● Aprimorar a motricidade por meio da execução de trabalhos manuais;
● Permitir testar em um equipamento o que foi aprendido na teoria ou em
programas “modelo” que simulam o mundo real;
● Transformar a aprendizagem em algo positivo, tornando bastante acessível

27
os princípios de Ciência e Tecnologia aos estudantes;
● Estimular a leitura, exploração e a investigação;
● Preparar o aluno para o trabalho em grupo;
● Estimular o hábito do trabalho organizado, uma vez que desenvolve
aspectos ligados ao planejamento, execução e avaliação final de projetos;
● Ajudar na superação de limitações de comunicação, fazendo com que o
aluno verbalize seus conhecimentos e suas experiências e desenvolvam sua
capacidade de argumentar e contra argumentar;
● Desenvolver a concentração, disciplina, responsabilidade, persistência e
perseverança;
● Estimular a criatividade, tanto no momento de concepção das ideias, como
durante o processo de resolução dos problemas;
● Tornar o aluno consciente da ciência na sua vida cotidiana;
● Desenvolver a auto-suficiência na busca e obtenção de conhecimentos;
● Gerar habilidades para investigar e resolver problemas concretos.
Dentre as habilidades desenvolvidas com a prática da robótica
educacional, podemos citar também algumas competências a serem
estimuladas com essa metodologia, como citado abaixo:

Competência 1: Ter espírito investigativo

C1H1 Adquirir conhecimentos que expressem suas habilidades e anseios


intelectuais.

C1H2 Perceber as novas demandas e se integrar às mudanças.

C1H3 Aprender de forma lúdica e criativa, através da prática.

C1H4 Ter acesso a ferramentas fáceis de usar para concretizar o que planejam.

Competência 2: Fortalecer o trabalho em equipe

C2H1 Compartilhar suas criações, percebendo que podem contribuir para o


bem-estar do mundo.

28
C2H2 Serem participativos e colaborativos com todas as pessoas que se
relacionam.

Competência 3: Estar preparado para o mercado de trabalho

C3H1 Realizar-se pessoalmente e profissionalmente

C3H2 Adquirir autonomia de pensamento e ação

7 - ROBÓTICA NA BASE NACIONAL COMUM CURRICULAR (BNCC)


Sabemos que inovar na prática pedagógica é um requisito
importantíssimo para o professor que quer despertar a atenção e o
engajamento dos seus alunos. E esta inovação só é possível se os docentes
estiverem atentos aos avanços educacionais e aos tecnológicos de maneira
integrada.
Nos últimos anos, a tecnologia tem avançado a passos largos,
beneficiando inúmeros setores da sociedade, como o comércio, o meio
corporativo e até mesmo a educação. Pensando nesses avanços tecnológicos
e nas necessidades sócio pedagógicas do século XXI, a BNCC (Base Nacional
Comum Curricular) foi atualizada a fim de incluir competências e habilidades
que correspondam às demandas atuais.
A principal mudança na BNCC refere-se à necessidade de uma
educação inovadora, capaz de levar o aluno a desenvolver senso crítico e
raciocínio lógico, na qual podemos destacar algumas competências gerais a
serem desenvolvidas: (BRASIL, 2018, p 35).
● Competência 2 - “exercitar a curiosidade intelectual e recorrer à abordagem
própria das ciências, incluindo a investigação, a reflexão, a análise crítica, a
imaginação e a criatividade, para investigar causas, elaborar e testar
hipóteses, formular e resolver problemas e criar soluções (inclusive
tecnológicas) com base nos conhecimentos das diferentes áreas”.
● Competência 4 - “utilizar diferentes linguagens – verbal (oral ou visual-
motora, como Libras, e escrita), corporal, visual, sonora e digital –, bem como
conhecimentos das linguagens artística, matemática e científica, para se
expressar e partilhar informações, experiências, ideias e sentimentos em

29
diferentes contextos e produzir sentidos que levem ao entendimento mútuo.”
● Competência 5 - “compreender, utilizar e criar tecnologias digitais de
informação e comunicação de forma crítica, significativa, reflexiva e ética nas
diversas práticas sociais (incluindo as escolares) para se comunicar, acessar
e disseminar informações, produzir conhecimentos, resolver problemas e
exercer protagonismo e autoria na vida pessoal e coletiva”.
Podemos observar que as competências aqui citadas, perpassam por
um viés crítico, que estimula os estudantes a serem protagonistas de suas
ações e buscarem a autonomia no seu processo de ensino-aprendizagem.
Outra forma de introduzir a tecnologia no âmbito educacional é através
dos itinerários formativos, que foi aprovado pelo MEC, pela lei 13.415/2017,
mais conhecida como Reforma do Ensino Médio, que também traz mudanças
para o currículo. Com sua sanção em 2017, foram estipulados cinco itinerários
formativos que deverão ser oferecidos para os alunos. Eles são:
● Linguagens e suas tecnologias
● Matemática e suas tecnologias
● Ciências da Natureza e suas tecnologias
● Ciências Humanas e sociais aplicadas
● Formação técnica e profissional
Segundo Brasil (2018) os itinerários deverão ser organizados por meio
da oferta de diferentes arranjos curriculares, conforme a relevância para o
contexto local e a possibilidade dos sistemas de ensino. Assim, os currículos
e as propostas pedagógicas devem garantir as aprendizagens essenciais
definidas na BNCC. Essas aprendizagens expressam as finalidades do Ensino
Médio e as demandas de qualidade dessa formação na contemporaneidade,
bem como as expectativas presentes e futuras das juventudes.
Podemos identificar que a nova base curricular, além de almejar criar
uma educação que fomente o pensamento crítico, também requer que os
alunos aprendam a lidar com as novas tecnologias, seguindo desta forma as
tendências sociais e atualizando-se constantemente. Tanto a capacidade de
pensamento crítico (e seu decorrente uso em soluções criativas para
problemas cotidianos) quanto a aptidão no uso das novidades tecnológicas
são poderosos diferenciais no mercado de trabalho, o que justifica plenamente
as alterações feitas na BNCC.

30
O melhor caminho para levar esses conhecimentos para a sala de aula
é trabalhar com as metodologias ativas, que visam tirar o aluno da passividade
e trazê-lo para o centro do processo de aprendizagem por meio de vivências,
e trabalhar com as novas metodologias, a exemplo, a Robótica.
O ensino de Robótica nas escolas é uma variante da Cultura Maker, cujo
objetivo é levar pessoas comuns a construir, fabricar, consertar ou alterar
diferentes tipos de objetos com suas próprias mãos. Isso nos leva a um
aprendizado mão na massa, onde os alunos aprendem através de tentativa e
erro (ALEIXO, 2021).
Desta forma, os estudantes são levados a buscar soluções criativas para
problemas propostos pelo educador ou que possam ocorrer durante a
montagem dos Robôs na escola.
Através das aulas de Robótica Educacional, a Cultura Maker permite
que os professores trabalhem um dos grandes desafios da educação moderna,
a interdisciplinaridade, visto que o ensino de Robótica nas escolas trabalha
conceitos de diversas matérias relacionadas a STEAM (Ciências, Tecnologia,
Artes, Engenharia e Matemática), além do ensino de conceitos próprios à
Robótica, como Mecânica, Elétrica, Eletrônica e Programação (AZAMBUJA,
2022).
A Cultura Maker também trabalha e desenvolve competências
importantes como empatia, espírito de liderança, respeito às diferenças,
gerenciamento de tempo, recursos e emoções, colaboração e principalmente
a capacidade de pensar em soluções criativas para problemas cotidianos
(ALEIXO, 2021).
Tanto essas competências, quanto o ensino de conceitos de Mecânica,
Programação e afins (capacitando os jovens a lidar com as novidades
tecnológicas em uma sociedade onde a tecnologia avança a passos largos),
são altamente requisitadas no mercado de trabalho.

7.1 - Robótica na Linguagens


Segundo Zilli (2004), “A Robótica Educacional é um recurso tecnológico
bastante interessante e rico no processo de ensino-aprendizagem, ela
contempla o desenvolvimento pleno do aluno, pois propicia uma atividade
dinâmica, permitindo a construção cultural e, enquanto cidadão tornando-o

31
autônomo, independente e responsável.”
Acreditamos que, mais do que formar alunos capazes de criar, resolver
problemas e usar novas tecnologias, as aulas de robótica dão o apoio
necessário para transformar as aulas de língua portuguesa em um momento
de descontração e criação, partindo da necessidade que o aluno vê o conteúdo
para a vida dele e, não apenas, como mais um conteúdo a ser estudado. Além
disso, os estudantes adquirem conhecimento, habilidades e competências
necessárias para a formação (VARGAS, 2012).
Nas aulas de Língua Portuguesa, Inglesa e/ou Espanhola, aprende-se
várias estruturas gramaticais, bem como a construção e a interpretação
textual. A base do aprendizado se dá por meio da conceituação e de atividades
de aplicação, mas nem sempre é suficiente para um bom entendimento e
aplicação na vida do aluno. Ao considerar a informação, a robótica educacional
mostra-se fundamental na construção do conhecimento, pois é a partir dela
que a mediação entre o conceito e a aplicação é feita (OLIVEIRA, 2016).
Além de ajudar no desenvolvimento e construção da gramática
estudada, as aulas de robótica propiciam o trabalho em equipe, que engloba
três dimensões: afetiva, cognitiva e comportamental, que somadas resultam
na atitude do aluno. Desse modo, podemos ressaltar que, a tecnologia em sala
de aula torna o processo educativo mais dinâmico e consistente, capacitando
o educando ao uso de uma ferramenta que viabiliza um novo agir (OLIVEIRA,
2016).
Nas aulas de Educação Física, a robótica educacional pode colaborar
com os conceitos de anatomia, simulações do funcionamento muscular e
sistemas do corpo humano. Uma outra opção é o desenvolvimento de jogos,
brincadeiras e competições com a utilização das plataformas, seja ela física
ou remota. Na Arte não é diferente, as plataformas online e as estruturas
físicas da robótica promovem uma maior interação com os conteúdos
ministrados, podendo realizar montagem de estruturas artísticas e
monumentos históricos, bem como realizar visitações 3D nesses espaços.

7.2 - Robótica na Humanas


A robótica na escola pode ser assimilada como práticas educativas que
envolvam atividades de construção, manipulação e programação de robôs,

32
estimulando a construção de habilidades ligadas ao pensamento
computacional, raciocínio lógico, pensamento crítico, trabalho em equipe
numa perspectiva integrada e transversal (PERALTA e GUIMARÃES, 2018).
Nos trabalhos relacionados à disciplina de geografia podemos citar a
pesquisa de Sousa (2017), que utiliza kits de robótica como recurso
tecnológico nas aulas para apresentação e demonstração das fontes de
energia renováveis. Os resultados da montagem do robô movido à energia
solar demonstram acentuado engajamento dos estudantes e o forte trabalho
em equipe, identificado através do empenho coletivo na montagem do kit,
tornando as aulas mais dinâmicas e interativas; possibilitando na percepção
dos autores a construção inovadora de conceitos geográficos.
Um exemplo a ser trabalhado na disciplina de história, sociologia e
filosofia, é o desenvolvimento cronológico da robótica e como sua evolução
vem afetando a nossa sociedade e cultura. Para além disso, temos o
desenvolvimento do pensamento crítico, exploratório e elaboração de
hipóteses, o que evidencia as características da metodologia baseada em
projetos e problemas (PBL), que são temas basilares a serem trabalhados com
a robótica educacional.

7.3 - Robótica nas Ciências da Natureza


De acordo com dados baseados na Prova Brasil 2015 (IDEB, 2018),
apenas 14% dos alunos aprenderam o necessário na competência de
resolução de problemas até o 9° ano na rede pública de ensino no âmbito
nacional. Isto é, dos 2.097.630 alunos que realizaram a prova, apenas 291.218
demonstraram o aprendizado adequado.
O Instituto Estadual de Educação, Ciência e Tecnologia do Maranhão –
IEMA buscando a melhoria desses dados para o Maranhão inseriu a Robótica
Educacional no seu modelo pedagógico para potencializar as práticas das
Ciências da Natureza e Matemática.
Conforme Zilli (2004), a educação promove a sociedade, que está
sempre sujeita a mudanças, de acordo com as demandas sociais de cada
época. O homem está presente como sujeito principal, onde seu
desenvolvimento está diretamente associado à capacidade de conhecer os

33
elementos que o cercam, podendo ampliar sua liberdade, comunicação e
colaboração com a sociedade.
As tecnologias estão cada vez mais presentes em nosso dia a dia, e
através delas, o processo ensino-aprendizagem se dá de forma diferente do
que era anos atrás. Tais tecnologias são capazes de desenvolver habilidades
e auxiliar a compreensão de diversos conteúdos curriculares (ZILLI, 2004). De
acordo com Morine (2006, p.36) “O uso de diferentes linguagens, entre elas a
tecnológica, compõem o universo cultural das sociedades contemporâneas.
O empenho para que todos os grupos sociais possam fazer uso dela
contribui para uma educação e uma sociedade mais humana e justa.” Neste
contexto surge então a Robótica como ferramenta auxiliadora no processo de
ensino, proporcionando ao aluno, além de momentos de entretenimento,
momentos de aprendizado e desenvolvimento de habilidades e raciocínio
lógico. Pois os alunos são instigados a montar, desmontar, programar e
reprogramar um sistema robotizado (OLIVEIRA, 2007). Piaget e Vygotsky
(GOULART, 1997), pais da psicologia cognitiva contemporânea, propõem que
o conhecimento é construído através da capacidade intelectual ao interagir
com objetos do ambiente, e Morelato (2010) completa dizendo que a utilização
da robótica como método construtivista de ensino vem sendo bastante
explorada em todos os níveis de ensino (fundamental, médio e superior).
Ainda de acordo com os autores, empregando a lógica de forma eficaz,
o aluno pode desenvolver a sua capacidade de solucionar problemas e
aprender conceitos ligados a Matemática, Física, Química e Biologia
melhorando a qualidade do aprendizado, uma vez que coloca em prática
conceitos teóricos desenvolvidos em sala de aula.

7.3.1 - Robótica para Ensinar Plano Cartesiano e o Conceito de Graus


Movimentos simples como dobrar e esticar o braço são capazes de
explicar o conceito dos graus do plano cartesiano.
“Quando trabalhamos a construção de um braço robótico, ensinamos para eles
como os graus são usados. O movimento vai de zero a noventa graus e é a
programação que vai dizer ao robô como ele irá realizar esse movimento,
utilizando esse conceito da geometria analítica e da álgebra” (SILVA E
JAVARONI, 2018).

34
7.3.2 - Robótica e o Ensino de Algoritmos
De uma forma bem lúdica, os alunos que começam o curso de robótica
são apresentados ao conceito de algoritmos, que nada mais é do que uma
sequência lógica de comandos que faça sentido e que seja utilizada para
realizar algo.
“Começamos a mostrar para eles o que é essa sequência lógica através
do exemplo da troca de uma lâmpada. Como deve ser o algoritmo da troca da
lâmpada? Primeiro eu subo na escada e depois eu pego a lâmpada nova?
Não, o correto é pegar a lâmpada nova e depois subir na escada. Dessa forma
eles visualizam de um modo prático o que consiste em essa sequência lógica
que eles precisam criar dentro da programação da robótica” (SILVA E
JAVARONI, 2018).

7.3.3 - Robótica e o Pensamento Lógico


A sequência lógica que precisa ser pensada pelos alunos durante o
aprendizado de algoritmos nada mais é do que o início do ensino do
pensamento lógico.
“Trabalhar o pensamento lógico nas crianças, irá ajudá-las a organizar
as ideias e se saírem melhor na resolução de uma prova, de um problema da
lista de exercícios da escola, facilitando a estruturação e compreensão de
problemas e situações complexas” (SILVA E JAVARONI, 2018).

8 - PENSAMENTO COMPUTACIONAL
Segundo Wing (2006), é uma abordagem para solucionar problemas
baseada em conceitos da Ciência da Computação. No entanto, ensinar
Pensamento Computacional vai muito além de Ciência da Computação ou
computadores, trata-se de ensinar uma forma diferente de visualizar
problemas do dia a dia e solucioná-los da melhor forma possível por meio de
habilidades que há muito já são utilizadas em outras áreas:
De acordo com a BBC Learning (2019), o Pensamento Computacional
se organiza em quatro aptidões: a decomposição, o reconhecimento de
padrão, a abstração e o algoritmo. Dessa forma, essas quatro etapas devem
ser seguidas para atingir o objetivo de solucionar problemas, de maneira
eficiente (MEDEIROS, 2019).

35
● Decomposição: dividir um problema complexo em pequenas partes, a fim
de solucioná-las com mais facilidade;
● Reconhecimento de padrões: como a própria expressão define, ajuda na
identificação de aspectos comuns nos processos;
● Abstração: analisa elementos que têm relevância, diferenciando-os
daqueles que podem ser deixados de lado;
● Algoritmos: reúne todos os pilares já citados e envolve a criação de um
grupo de regras para a solução de problemas.
Basicamente, a ideia é reformular problemas que aparentam ser de difícil
resolução e transformá-los em algo capaz de ser compreendido, focando
assim, em cada uma de suas fases de execução, a fim de buscar as
resoluções.
Uma série de competências é obtida como resultado do processo de
desenvolvimento do pensamento computacional. As habilidades refletem
diretamente no aprendizado do indivíduo. Especialmente no caso das crianças
e jovens, o uso dessa metodologia ajuda em seu crescimento, melhorando
aspectos como o desenvolvimento cognitivo. Habilidades como:
desenvolvimento do pensamento lógico, autonomia e alfabetização digital, são
as principais habilidades adquiridas com a metodologia.

Sugestão de material de apoio


https://editorarealize.com.br/editora/anais/conapesc/2021/TRABALHO_EV161_MD4_SA
107_ID2080_14102021143739.pdf

8.1 - LÓGICA DE PROGRAMAÇÃO


Lógica de programação é o modo como se escreve um programa de
computador, um algoritmo. Um algoritmo é uma sequência de passos para se
executar uma função. Um exemplo de algoritmo, fora da computação, é uma
receita de bolo.
Na receita, devem-se seguir os passos para o bolo ficar pronto e sem
nenhum problema. Na informática, os programadores escrevem as “receitas
de bolo” (algoritmos) de modo que o computador leia e entenda o que deve
ser feito, ao executar o algoritmo. Para isto é necessário uma linguagem de
programação.

36
A linguagem de programação é como uma língua normal, um grupo de
palavras com significados. No caso da programação, a maioria das linguagens
é escrita em Inglês. Estas linguagens fazem o computador assimilar cada
comando e função de um algoritmo, depois executar cada função.
A linguagem de programação é somente como se escreve o algoritmo.
O grande problema para muitos é o que “dizer” para o computador fazer o que
é desejado. Para o aprendizado foi desenvolvido o Software Visual G, que
auxilia a programação totalmente em português. Com este software, não é
necessário pensar em linguagem de programação, pois todos os comandos
são em Português, ficando assim o foco na lógica.
Na hora de programar alguns passos são indispensáveis, como Declarar
Variáveis. Variáveis podem ser escritas por letras ou números, que
representam um valor que pode ser mudado a qualquer momento.
Cada variável tem um espaço na memória para armazenar seus dados.
Porém existem vários tipos de dados, sendo os mais comuns:
● Numérico: todo e qualquer tipo número, positivo ou negativo
● Reais: podem ser positivos ou negativos e decimais.
● Caractere: São os textos. Qualquer número pode entrar aqui, porém não
terá função matemática.
Saber lógica de programação é saber o melhor jeito de escrever um
código, para o computador interpretar corretamente. É saber se comunicar
com a máquina a partir de uma linguagem seja lá qual for.

Sugestão de atividade: HORA DO CÓDIGO


Plataforma PROGRAMAÊ
https://studio.code.org/s/starwarsblocks/lessons/1/levels/1?utm_campaign=HoraDoC
odigo&utm_source=programae&utm_term=StarWarsBlocos

9 - LINGUAGEM DE PROGRAMAÇÃO
É uma linguagem escrita e formal que especifica um conjunto de
instruções e regras usadas para gerar programas (software). Um software
pode ser desenvolvido para rodar em um computador, dispositivo móvel ou
em qualquer equipamento que permita sua execução (MONTEIRO, 2018).
Imaginemos o computador como uma super calculadora capaz de

37
fazer cálculos muito mais rápido que nós, mas para isso devemos dizer para
o computador o que deve ser calculado e como deve ser calculado. A função
das linguagens de programação é exatamente essa, ou seja, servir de um
meio de comunicação entre computadores e humanos, assim como os
humanos fazem com os humanos: usam da linguagem para poder conversar.
Quando programamos em uma linguagem de programação
primeiramente criamos um arquivo de texto comum contendo a lógica do que
deve ser feito, ou seja, é onde falamos ao computador, o que queremos. Este
arquivo de texto é chamado de programa, cada palavra de ordem dentro do
programa é chamada de instrução. Após criarmos o programa, este deve ser
traduzido para linguagem entendida pelo computador a partir da linguagem
que estamos utilizando. Um segundo arquivo que chamamos de executável
ou programa, será gerado e interpretado diretamente pelo computador
(MESQUITA et al., 2020).

Enfim, para que um robô seja capaz de realizar suas funções


precisamos programa-lo, criar rotinas, passos, algoritmos com lógica e
linguagem de programação. Existem uma série de linguagens de
programação (Java script, C++, Ruby, PHP, Python, Java, C e C#) e com
elas escrevemos os programas, aplicativos, sites, sistemas web, entre outros
(MONTEIRO, 2018).

Sugestão de vídeos:
1. Por que aprender a programar? Disponível em:
https://www.youtube.com/watch?v=90_onKsNw6g
2. Como funcionam as linguagens de programação. Disponível em:
https://www.youtube.com/watch?v=22nd99SLgNA

38
9.1 - Linguagem em Bloco

A programação em blocos é uma metodologia visualmente amigável e


com um objetivo prático para o ensino dos conceitos iniciais ligados à
programação, desenvolvimento de softwares/aplicativos e lógica de uma
forma geral. A interação mais comum de modelos em linguagem de
programação visual (VPL) são: arrastar blocos ao redor de uma tela; usar
diagramas de fluxo, diagramas de estado e outros componentes; usar ícones
ou representação sem texto. A codificação baseada em blocos pode ser
considerada como um modelo VPL. Ao invés da tradicional programação
baseada em texto, a codificação baseada em blocos envolve arrastar “blocos”
de instruções dentro de um ambiente apropriado sem a preocupação com
questões de sintaxe e qualidade do software (CHRIST e BEGOSSO, 2019).
Os blocos são então as ferramentas que substituem as linhas de códigos
escritas em uma linguagem de programação usual, passando a ter um formato
e cor específicos que remetem a função de cada bloco. É a combinação entre
esses blocos, através da formação de uma estrutura com início, processos e
resultados que formam o programa em blocos (VANNUZINI, 2021).
Com a programação em blocos, os conceitos da programação também
são transmitidos de forma visual e menos complexa do que um código em uma
linguagem de programação (como Python, Java, entre outras), mas a partir da
criação de programas reais, que podem ir desde apresentações a jogos, de
acordo com a imaginação da pessoa e com as habilidades que ela for
desenvolvendo (VANNUZINI, 2021).
Dentro do contexto de programação, os blocos são a unidade
fundamental e podem representar comandos, condições, objetos e muitas
outras variáveis que fazem parte da construção de um programa.
Através de uma interface gráfica, os alunos conseguem visualizar e
aprender com uma sequência lógica de blocos e ver o resultado acontecendo
na tela do computador, trazendo a sensação de ter programado de verdade,
afinal, a máquina vai seguir as instruções montadas nos blocos e fazer
exatamente aquilo que o aluno a programou para fazer (PORTO e KUSTER,
2021).

39
Exemplo de estrutura de um programa em bloco simples

Fonte: https://idocode.com.br/blog/programacao/programacao-em-blocos/

Com a programação em blocos é possível construir estruturas de


complexidades variadas, tudo vai depender do conhecimento e objetivo de quem
está por trás da ferramenta de construção. Pode-se iniciar com uma estrutura
extremamente simples (como a da imagem acima) e avançar para algo mais
complexo, como o código abaixo (PORTO e KUSTER, 2021).
Estrutura de código mais complexa

Fonte: https://idocode.com.br/blog/programacao/programacao-em-blocos/

Assim, programação em blocos é uma forma bastante completa de


iniciar o estudo da programação com a utilização dos blocos de “Início”, e ir
seguindo a sequência de complexidade: utilização de operações matemáticas,
operadores lógicos – verdadeiro, falso, maior ou menor que, estruturas
condicionais, estruturas de repetição e até mesmo funções. Todas essas
noções são essenciais a qualquer programador. Neste sentido, serão
apresentadas as linguagens de programação em blocos: Scratch, Open
Roberta, Microsoft MakeCode e ArduinoBlocks.
Sugestão de material de apoio
Linguagem em blocos:
https://www.youtube.com/watch?v=4WbmpOA8V94
https://www.youtube.com/watch?v=zKJmH7G0z34

40
9.1.1. ALGORÍTMO
O Algoritmo é uma sequência lógica de passos que levam a um
determinado objetivo. Apesar de a palavra algoritmo parecer estranha e
desconhecida, é claro que todos nós sabemos construir algoritmos. Se isto não
fosse verdade, não conseguiríamos sair de casa pela manhã, ir à escola, decidir
qual o melhor caminho para chegar a um lugar, voltar para casa, etc. Para que
tudo isto seja feito é necessário uma série de entradas do tipo: a que hora
acordar, a que horas sair de casa, qual o melhor meio de transporte, etc. Um
fator importante é que pode haver mais de um algoritmo para resolver um
problema. Por exemplo, para ir de casa até o colégio, podemos escolher diversos
meios de transportes em função do preço, conforto, rapidez, etc. A escolha será
feita em função do critério que melhor se adequar as nossas necessidades
(MESQUITA et al., 2020).
Ex: Analise a solução abaixo para o problema:

Retirado da apostila Introdução à lógica de programação - 2º encontro, disponível em:


https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/apostila---introducao-a-
logica-de-programacao.compressed.pdf

41
Os algoritmos podem ser divididos em partes:
• Início;
• Entrada: dados que devem ser lidos, ou fornecidos pelo usuário;
• Processamento: onde acontecem os cálculos em si, os dados de
entrada são manipulados a fim de se gerar uma resposta (um
resultado);
• Saída: são os resultados de seu processamento.;
• Fim.

Retirado da apostila Introdução à lógica de programação - 2º encontro, disponível em:


https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/apostila---introducao-
a-logica-de-programacao.compressed.pdf

Sugestão de vídeos:
1. Por que aprender a programar? Disponível em:
https://www.youtube.com/watch?v=90_onKsNw6g
2. Como funcionam as linguagens de programação. Disponível em:
https://www.youtube.com/watch?v=22nd99SLgNA

9.1.2 - Scratch

O Scratch é uma plataforma que foi criada em 2007 pelo Lifelong


Kindergarten Group, pertencente ao Media Lab do Massachusetts Institute of
Technology (MIT), de Boston, EUA. Utiliza-se da programação por blocos para

42
criação de objetos virtuais. Dentre as muitas aplicações possíveis, destacam-se
as animações, os jogos e as apresentações, além de muitas outras
possibilidades. É uma plataforma online, mas com possibilidade de
desenvolvimento off-line, além de ser gratuita e de código aberto (SOUZA e
COSTA, 2018).
Esta ferramenta está disponível em 40 linguagens e é utilizada em escolas
de mais de 150 países. Scratch é projetado para a faixa etária entre 8 e 16 anos,
visando a transversalidade do tema de pensamento computacional e podendo
ser aplicado para ensino STEAM (Science, technology, engineering, arts and
mathematics), Linguística, Estudos Sociais e diversas outras áreas de
conhecimento. A ferramenta Scratch é escrita em Squeak, implementação Open
Source da linguagem Smalltalk-80 (OLIVEIRA, 2022).
Atualmente o Scratch está em sua versão 3.0, que trouxe uma
reformulação na interface e algumas funcionalidades em relação à versão
anterior. Existem também as versões 2.0 e 1.4 disponíveis. Quando a utilização
é online, automaticamente a plataforma é carregada com a versão mais atual.
Se a opção for utilizar a editor off-line, é importante escolher entre as três versões
disponíveis de acordo com as configurações do seu computador ou laptop. Esta
nova versão é baseada em tecnologia web nativa (HTML 5). Os blocos antes
montados verticalmente agora serão montados horizontalmente, assim como já
ocorre no ScratchJr (PEREIRA e SOPRANO, 2019).
É possível fazer o upload das criações no editor off-line para a plataforma
online. Logo, essa plataforma proporciona, como compartilhar criações,
conversar com outros usuários, remixar suas criações, criar estúdios, etc.
Na versão Scratch 3.0, o editor possui três painéis principais que são
mostrados a seguir (OLIVEIRA, 2022).
Interface Scratch

Fonte: Scratch Wiki

43
Painel de Execução: localizado no topo direito da tela, o painel de
execução demonstra a cena atual. É importante salientar que programas Scratch
não são compilados. Deste modo, instruções são interpretadas e executadas no
ato. A execução inicia ao clicar na bandeira verde que fica no topo desse painel.
A execução pode ser abortada clicando no botão vermelho localizado à direita
da bandeira verde.
Painel de Sprites: está localizado abaixo do painel de execução. Os
personagens que estão executando papéis no programa Scratch são chamados
de ’sprites’ (pode ser traduzido como duende ou fada).
Painel de Programação: inclui todas as ferramentas necessárias para
codificar visualmente um programa Scratch através de ações "arrasta e larga".
Existem três tipos de edição possíveis a serem feitas através da seleção da
etiqueta correspondente no topo do painel (Code, Costumes, Sound). Code é
criado como uma mistura de blocos que representam diferentes tipos de
instruções de programação (if-then, loops, etc). Como citado anteriormente, o
usuário pode criar novos blocos combinando blocos anteriores, mas também
pode definir extensões para criar novos blocos além dos disponíveis.

9.1.2.1 Programar no Scratch


O Scratch foi pensado para permitir que programar se tornasse fácil a
ponto de uma criança conseguir fazer. Inspirados nos blocos Lego, foram criados
os blocos de programação. Para “escrever” um comando para ser executado não
é necessário escrever longas linhas de código numa linguagem enigmática para
o leitor leigo. Basta juntar os blocos certos e associá-los ao ator ou cenário que
se quer programar. No início pode parecer complicado para quem está
aprendendo, mas, depois de alguns experimentos torna-se um desafio até
divertido. Para começar, precisamos conhecer a área de programação, os blocos
e suas funções. Há nove categorias de blocos no editor do Scratch.

9.1.2.2 Área de programação


É o espaço logo à direita dos blocos de programação na mochila. Feita
a escolha dos blocos que se vai utilizar, basta clicar, segurar com o mouse e
arrastar cada um para essa área, “montando” a programação de acordo com o
seu interesse.

44
Se por acaso mudar de ideia e quiser excluir algum bloco, basta
arrastá-lo de volta para a área de blocos ou dar um clique nele e depois
apertar a tecla delete no teclado e: pronto. O bloco foi apagado! Outra opção
é clicar no bloco com o botão direito e escolher “apagar bloco” na caixa que
aparece.

9.1.2.3 Blocos de Movimento


Os blocos de movimento são relacionados ao posicionamento e
deslocamento dos componentes (atores, palcos) pelo espaço da tela. São no
total dezoito blocos:

Utilizando esses blocos, podemos determinar a velocidade do


movimento, para que parte da tela o componente deve se descolar, fazê-lo
girar e determinar o que acontece quando o mesmo tocar na borda da tela.
São informações muito importantes para se levar em consideração quando o
objeto virtual que estivermos programando exigir movimentos.

9.1.2.4 Blocos de Aparência


Os blocos de aparência são vinte e relacionam-se ao aspecto visual
dos componentes, como tamanho, cor, aparecer ou desaparecer, camada de
posicionamento, ações de fala escrita e mudanças de fantasia ou de cenário.

45
Observe-os:

Com esses blocos, determinamos se um ator fala ou pensa alguma


coisa de forma escrita e por quanto tempo o texto permanece na tela.
Podemos também determinar uma mudança de fantasia do ator ou da
imagem do cenário. É possível fazer o personagem aumentar ou diminuir de
tamanho ou mudar sua cor. Enfim, uma diversidade de ações possíveis, claro,
em associação com os demais blocos existentes.

9.1.2.5 Blocos de Som


É bem provável que ao ler o item anterior, muitos leitores já tendem a
se questionar se os atores só se expressam por meio escrito no Scratch. A
resposta para esse questionamento é não! Além da expressão escrita, é
possível também atribuir sons, tanto para simular a fala como para simular
efeitos sonoros das ações e interações dos atores e dos cenários. Os blocos
de som, num total de nove, são:

Com esses blocos podemos determinar que um ator ou cenário


execute um som. O Scratch já traz embutido na plataforma alguns efeitos
sonoros, mas também é possível importar um som externo, como, por

46
exemplo, uma gravação de voz. Com os blocos adequados, é possível
aumentar ou diminuir o volume e o tom dos efeitos sonoros. Além disso, a
plataforma também tem um editor de som que, apesar de relativamente
simples, permite modificar os sons. Por exemplo, podemos fazer o upload de
uma música e editá-la para utilizar apenas um trecho específico.

9.1.2.6 Blocos de Eventos


Os blocos de evento são oito e são de extrema importância na hora
de realizarmos a programação dos componentes das criações. Será utilizado
sempre um bloco de evento no início de um grupo de blocos para determinar
a condição para que a programação em questão comece a ser iniciada, por
exemplo. Utilizados em conjunto com os demais blocos, eles marcam a
situação específica que ativa o código. Conheça-os abaixo:

Se não utilizarmos um bloco de evento, por exemplo, uma ação pode


ocorrer de forma indefinida ou mesmo nem ocorrer.

9.1.2.7 Blocos de Controle


Esses blocos têm a função de organizar a execução das ações dos
componentes, por exemplo, determinando quantas vezes determinada ação
será realizada. É o caso do bloco denominado “repita ___ vezes”, o segundo
na coluna da direita abaixo. Todos os demais blocos que estiverem
englobados por ele repetirão suas ações tantas vezes quantas estiverem
estipuladas por você. Eles ajudam também, em associação com outras
categorias de blocos, a determinar o condicionante para que a ação aconteça.
Repare abaixo em sua aparência e nos comandos que representam:

47
Os três últimos blocos dessa categoria têm uma função especial. São
direcionados para lidar com os “clones”, que são as duplicatas de algum ator que
pode surgir devido a alguma condicionalidade ou mesmo à programação dos
blocos. Eles lembram os blocos de eventos, mas por uma determinação do
programador do Scratch, ficaram agrupados nessa categoria de controle.

9.1.2.8 Blocos de Sensores


Pelo uso dos dezoito blocos que compõe essa categoria podemos
estipular o tipo de interação que condiciona, associada com as demais
categorias de blocos, as ações dos atores e cenários. Essas interações podem
ser, por exemplo, um ator de um jogo se aproximar de outro ou tocá-lo. Também
poderia ser o usuário clicando com o mouse ou apertando determinada tecla e
isso ser o fator determinante para uma ação de algum componente. Confira os
blocos de sensores logo abaixo:

Os formatos dos blocos de sensores já denunciam que alguns têm locais


específicos para se encaixarem junto aos blocos de outras categorias. Por

48
exemplo: o bloco “tocando na cor? ” Necessariamente deve associar-se aos
blocos de controle para determinar o que ocorre se o ator em questão tocar na
cor escolhida por você. Alguns dos blocos de controle que têm formato
arredondado podem ser acoplados a outros blocos das categorias anteriores
para determinar um valor numérico específico, como por exemplo o ano atual.
Como já foi citado, na parte II, ao colocar a mão na massa e começar suas
criações próprias ou a partir dos exemplos que serão apresentados, você
compreenderá melhor as possibilidades que os blocos de sensores
proporcionam.

9.1.2.9 Blocos de Operadores


Os blocos de operadores têm função lógica e matemática, utilizada em
associação com os demais grupos de blocos. Essa utilização associada dos
grupos de blocos é importante quando se quer determinar números que
dependem de outros componentes, sua posição na tela, entre outros fatores.
São dezoito os blocos de operadores, que podemos conferir a seguir:

O uso de todos os grupos de blocos que vimos até aqui já permite


desenvolver muitas criações interessantes. Associando os diversos blocos,
podemos criar por exemplo objetos virtuais que interajam com o usuário. Mas
esse já é um passo além do usuário iniciante, que você poderá alcançar sem
problemas por meio de sua dedicação à prática.
Vamos ilustrar a seguir com o código pronto de um objeto interativo
que aprenderemos mais à frente como fazer, nos exemplos deste guia. Você
pode visualizar os diversos tipos de blocos trabalhando em conjunto para
executar algumas ações a partir da interação com o usuário.
Nesse objeto, criamos um código que faz o ator perguntar para o

49
usuário o ano em que nasceu e, a partir da resposta, executar mais duas
ações.

9.1.2.10 Blocos de Variáveis


Além dos sete grupos de blocos de programação que vimos
anteriormente, também existem os blocos de variáveis. Normalmente utilizamos
variáveis em projetos mais complexos e avançados. Elas servem para
armazenar números e sequência de letras na memória do computador, como o
resultado de um cálculo matemático, ou o nome do usuário, por exemplo. Pode
ser utilizada para um ator se referir ao usuário pelo nome, por exemplo.
Como esse guia tem um caráter introdutório e de conhecimentos básicos
sobre o Scratch, conforme vamos criando variáveis, surgem outros blocos como
o primeiro que vemos, mas com o nome que escolhemos para a variável. Dessa
forma, podemos utilizar a variável em conjunto com os demais blocos de
programação.

50
Sugestão de material complementar:
1. SCRATCH: Guia Prático para aplicação na Educação Básica. Disponível em:
https://www.cp2.g12.br/blog/mpcp2/files/2017/02/Produto-Michel-de-Souza-
20191.pdf
2. SCRATCH PARA PROFESSORES: proposta de construção de objetos de
aprendizagem. Disponível em:
http://repositorio.ufpa.br/jspui/bitstream/2011/12987/1/Dissertacao_ScratchProfessor
esProposta.pdf

9.1.3 - Open Roberta

Open Roberta é o nome de um projeto dentro da iniciativa educacional


alemã "Roberta - Aprendizagem com robôs", iniciada por Fraunhofer IAIS, que
é um instituto pertencente à Sociedade Fraunhofer. Com o Open Roberta
Fraunhofer, a IAIS busca incentivar as crianças a codificar usando robôs como
Lego Mindstorms e outros sistemas de hardware programáveis como Arduíno,
BBC micro: bit e o Calliope mini . A abordagem da nuvem do Open Roberta
Lab visa simplificar os conceitos de programação e tornar mais fácil para
professores e escolas ensinarem a programar. O Open Roberta é gratuito e
não requer instalação.
Figura - ambiente simulado da plataforma Open Roberta

Fonte: https://www.youtube.com/watch?v=rXXgRF5j86U

51
Sugestão de vídeos:
1. https://www.youtube.com/watch?v=PdzYSrPNqPk
2. https://www.youtube.com/watch?v=EirgTTjLCdk
3. https://eventos.ifg.edu.br/steam4girls/2021/03/23/como-utilizar-o-open-
roberta-mobile/

9.1.4 - Microsoft MakeCode

O Microsoft MakeCode é uma plataforma gratuita de software livre


para criar experiências envolventes de aprendizagem em ciência da
computação. A plataforma disponibiliza um Simulador Interativo fornece aos
alunos um feedback imediato sobre como seu programa está sendo
executado e facilita o teste e a depuração do código, Editor de Blocos que
ajuda os alunos iniciantes, na criação e desenvolvimento da programação
com blocos coloridos e de encaixe, facilitando assim a criação dos programas.
A plataforma também disponibiliza uma área de gamificação, na qual os
alunos podem criar seus jogos do zero, utilizando o Editor de Blocos, bem
como, aplicativos para celular, o que torna mais dinâmica a sua utilização.
Figura - ambiente de simulação e programação do MakeCode

Fonte: https://www.youtube.com/watch?v=ZuBOY0qdXHw

52
Sugestão de vídeo:
1. https://www.youtube.com/watch?v=gFaxRhia76s - Makecode EV3 -
utilização dos sensores.
2. https://www.youtube.com/watch?v=bvoAHzCFOyA&t=13s - Introdução parte
1
3. https://www.youtube.com/watch?v=QI8vFciZZGE - Introdução parte 2
Dentro da própria plataforma há diversas atividades e tutoriais disponíveis. Basta
selecionar de acordo com a demanda da aula.

9.1.5 - ArduinoBlocks
Uma vez que tenhamos definido o hardware necessário para um
projeto, o próximo passo é programar o microcontrolador da placa Arduino
para executar as tarefas necessárias para a operação desejada.
A programação da placa Arduino é normalmente feita em linguagem
C++ a partir do ambiente IDE Arduino. Para programar, devemos primeiro
conhecer essa linguagem.
ArduinoBlocks, da mesma forma, é um ambiente online que nos
permite programar Arduino (sem ter que conhecer a linguagem de
programação C ++) visualmente no estilo de programação de blocos.
ArduinoBlocks implementa blocos gerais comuns a qualquer ambiente
de programação e, por outro lado, blocos específicos para o Arduino, onde
podemos acessar dados de leitura / gravação dos pinos de entrada / saída,
acessar informações de sensores conectados, atuadores de manipulação,
periféricos como a tela LCD e muitas outras funcionalidades.
Programa de exemplo gerado automaticamente no modo "teste"

53
9.1.5.1 Lógica
Com esses blocos temos acesso às funções lógicas necessárias para
implementar em nosso programa Arduino.
As funções lógicas funcionam com valores ou expressões de
"verdadeiro" ou "falso"
• Condição / decisão: Avalia uma condição lógica, se ela for cumprida
executa o bloco "do" se não for cumprido executa o bloco "mas"
(opcional)

Exemplo de comparações:

• Avaliar condição (numérica): Devolve verdadeiro ou falso consoante


a condição indicada seja satisfeita entre os dois operandos
(numéricos).

54
Exemplo: Comparação numérica "maior ou igual a"

• Avaliar condição (booleana): Retorna verdadeiro ou


falso dependendo se a condição declarada é atendida entre os dois
operandos booleanos (verdadeiro ou falso).

• Conjunção/Disjunção (AND): Avalia duas expressões lógicas e


retorna verdadeiro ou falso dependendo da função lógica selecionada.

Exemplo: condição lógica "e" (AND)

• Negação: Permite negar (reverter) um valor lógico de verdadeiro ou falso.

Exemplo: negação de um detector para saber quando "não" há


movimento

• Constantes lógicas: Estes são valores booleanos que indicam um dos


dois estados possíveis

55
9.1.5.2 Control
As estruturas de controle nos permitem executar loops e iterações.
• Repetir: Repita (n) vezes os blocos dentro.

Exemplo:

• Repetir como condição: Repete enquanto ou até que uma condição


seja atendida.

Exemplo:

• Contagem: Loops com uma variável de índice. Você define um valor


inicial, um valor final e os incrementos que serão executados em cada
interação do loop. Dentro do loop podemos usar essa variável.

Exemplo:

56
9.1.5.3 Matemática
• Constante numérica: Permite especificar um valor numérico inteiro ou
decimal.

• Inteiro / Não assinado: Trata o valor como um inteiro. Se


especificarmos não assinado, ele tratará o valor como uma variável não
assinada internamente.
Para variáveis ArduinoBlocks usa o tipo de dados "Double" ao traduzir
o programa para a linguagem C++. Em caso de conversão, ele é tratado como
uma "transmissão" para um tipo de dados "longo" ou "longo não assinado"

• Ângulo: Define um valor de ângulo em graus. É um valor numérico


como é, mas com a vantagem de que permite definir o valor de forma
visual, olhando para o ângulo graficamente.

• Operações básicas:

Exemplo:

• Adicionar à variável: Aumenta ou diminui o valor de uma variável pelo


valor indicado (se for um valor positivo aumenta se for negativo
diminui).

57
• Funções matemáticas:

• Atan2: Calcula o arco tangente de y/x, onde y é o primeiro parâmetro


e x o segundo.

• Mapeamento: Permite modificar o intervalo de um valor ou variável de


um intervalo de origem para um intervalo de destino. Esta função é
especialmente útil para adaptar os valores lidos a partir de sensores ou
para adaptar valores a serem aplicados em um atuador.

Exemplo:
- Sensor de temperatura: 10ºC ... 50ºC
- Arduino leitura analógica: 0 ... 1023
Precisamos converter da faixa de 0-1023 lida para a faixa de 10ºC-
50ºC:

• Limite: Permite limitar o valor mínimo e máximo.

58
Exemplo:

• Número aleatório: Gera um valor aleatório entre os valores


especificados.

Exemplo:

• Resto: Obtém o resto da divisão dos dois operandos.

Exemplo

Exemplo: Usando vários blocos de operações matemáticas:

• NaN?: Permite detectar se o valor armazenado em uma variável ou


obtido de um sensor ou de qualquer outro bloco é NaN (Not a Number),
ou seja, se não é um número válido. Esse caso pode surgir em alguns
sensores que retornam esse valor em caso de erro ou em caso de
operação matemática inválida.

59
Exemplo de uso de "es NaN":

9.1.5.4 Texto
As funções de texto são especialmente úteis com o uso na porta serial
(console) e em outros periféricos, como telas LCD. Eles permitem que você
trabalhe com variáveis de texto de tipo ou com textos prefixados.
• Constante de texto: Define o texto estaticamente.

• Número de formato: Obtém em forma de texto o valor de uma variável


ou constante numérica no formato especificado.

Exemplo:

• Formatar número com decimais: Executa a conversão de uma


variável ou constante numérica em texto exatamente como o bloco
anterior, mas pode indicar o número de decimais a serem exibidos.

60
Exemplo: Enviar o valor de uma variável como texto através do
console formatado para 6 e 1 casas decimais, respectivamente:

• Criar texto com: Cria texto a partir da junção de outros textos ou


variáveis. As variáveis especificadas são convertidas em texto
formatado em decimal.

Exemplo:

• Comprimento: Obtém o número de caracteres no texto.

Exemplo de uso de blocos de texto:

• Comparação de texto: Permite comparar duas cadeias de texto. O


resultado é um valor lógico de verdadeiro ou falso.

61
Exemplo: Comparando variáveis de texto e tipo de texto

• Contém o texto: Verifica se há texto dentro do texto indicado. Retorna


true se existir e false caso contrário.

Exemplo:

• Pesquisar em texto: Procura a posição de um texto dentro de outro


texto. Se o texto pesquisado não for encontrado, ele retornará o valor
0, caso contrário, retornará a posição onde o texto começa.

Exemplo:

• Dividir texto: Obtém uma parte do texto, indicando a posição inicial e


final dentro do texto para criar a subcadeia de caracteres.

Exemplo:

62
• Substituir em texto: Substitui todas as ocorrências do texto indicado
pela nova dentro da variável de texto selecionada.

Exemplo:

• Valor ASCII: Obtém um valor numérico correspondente ao valor na


tabela ASCII do caractere correspondente. Este bloco é útil para
detectar pressionamentos de tecla que são enviados por comunicação
serial, bluetooth, etc. como bytes independentes.

Tabela ASCII de caracteres imprimíveis:

• Criar texto CSV: Permite criar um texto no formato CSV concatenando


os diferentes elementos e adicionando um separador entre eles

63
(selecionável entre "", ";" e tab). Este bloco é especialmente útil para
gerar texto com vários valores para armazenar em um arquivo em um
cartão microSD e, em seguida, abrir com uma planilha.

Exemplo:

9.1.5.5 Variáveis
Uma variável é um buraco na memória onde o programa pode
armazenar valores numéricos. O sistema nos permite atribuir-lhes um nome
simbólico como "temperatura externa", "velocidade", "servo posição 1",
"estado", para facilitar o uso.
Existem três tipos de variáveis no ArduinoBlocks: numérico, booleano e texto.

• Variáveis numéricas: permite valores numéricos inteiros ou com


decimais, internamente eles são representados com o tipo de dados
"doublé" ao gerar o código para Arduino. Esse tipo usa 4 bytes e
permite armazenar valores no intervalo: -3,4028235E+38 a
3,4028235E+38

64
Exemplo:

Exemplo:

• Variáveis de texto—Armazene valores de texto. Internamente, ele usa


o tipo de dados "String" ao gerar o código para Arduino.

Exemplo:

Exemplo:

• Variáveis booleanas: Permite armazenar valores lógicos booleanos


de dois estados (verdadeiro/falso, ON/OFF, HIGH/LOW, ...)

Exemplo:

Exemplo:

65
9.1.5.6 Listas
As listas de dados nos permitem armazenar uma lista de valores e
acessá-los por sua posição na lista. As listas podem ser numéricas ou de
texto.

• Listas numéricas:
Podemos criar uma lista nomeando a lista e atribuindo valores iniciais
a ela.

Exemplo:

Para saber o número de itens que temos em uma lista, podemos usar
o bloco:

Em uma lista, podemos obter o valor de uma posição (de 0 para


o número de elementos-1 na lista) com o bloco, por exemplo, se tivermos 10
elementos, podemos acessá-los de 0 a 9:

Ou altere o valor de um elemento indicando sua posição e o novo


valor:

66
Exemplo: Posicionamento de um motor (servo) em diferentes posições
(graus) prefixados em uma lista.

• Listas de texto:
Podemos criar uma lista nomeando a lista e atribuindo valores iniciais
a ela.

Exemplo:

Para saber o número de itens que temos em uma lista, podemos usar
o bloco:

Em uma lista, podemos obter o valor de uma posição (de 1 para o


número de itens na lista) com o bloco:

Ou altere o valor de um elemento indicando sua posição e o novo


valor:

67
Exemplo: exibindo saudações em idiomas diferentes de uma lista

9.1.5.7 Funções
As funções permitem agrupar blocos de código. Isso é útil quando um
bloco de código é repetido em várias partes do programa e, assim, evitar
escrevê-lo várias vezes ou quando queremos dividir o código do nosso
programa em blocos funcionais para tornar-se um programa mais
compreensível.
• Definição de uma função: A definição consiste em criar o grupo onde
podemos inserir o código de bloco que forma a função. Devemos dar-
lhe um nome representativo que usaremos para chamar essa função e
executá-la.

• Parâmetros: As funções podem ser adicionadas parâmetros para


especificar na chamada.

68
• Chamar uma função: Permite que você chame a execução da função,
os blocos internos da função serão executados e no final a execução
será seguida onde a chamada de função foi feita.

Exemplo: Função para calcular a área de um triângulo

Exemplo: Função para enviar informações através do console

Exemplo: Função para calcular o comprimento de uma circunferência

Exemplo: Divisão em partes funcionais de um programa real.

69
Chamada do loop principal do programa:

9.1.5.8 Blocos de Funções Arduino


Na próxima seção, veremos os blocos relacionados às funções da
placa Arduino. Esses blocos nos permitirão acessar funcionalidades do
próprio microcontrolador e outros serão orientados para sensores, atuadores
ou periféricos que podemos conectar à placa Arduino para desenvolver
nossos projetos.

9.1.5.8.1 Entrada/Saída
As funções genéricas de entrada/saída nos permitem ler ou gravar nos
pinos digitais e analógicos da placa Arduino.
• Ler Pino Digital: Obtém o valor do pino digital (0/1, ON/OFF,
true/false). (Lembre-se de ler um ON/1 devemos aplicar 5v na entrada
digital e 0v para ler um OFF/0)

70
Exemplo:

• Inserir pino digital: grava o valor em um pino digital (0/1, ON/OFF,


true/false). (Se ativado, a saída fornecerá 5v caso contrário, 0v)

Exemplo:

Versão equivalente:

• Ler pino analógico: Lê o valor de uma entrada analógica.


O conversor DAC (Digital Analógico Converter) interno é de 10 bits,
de modo que os valores lidos de uma entrada analógica variam de 0 a 1023.
(10 bits = 2^10 = 1024 valores possíveis)

71
Exemplo:

• Gravar Pino Analógico: Define o valor do ciclo de pulso ativo/inativo


de uma saída digital PWM. O valor deve estar no intervalo entre 0 e
255.

Exemplo: pino 3 a 25%, pino 5 a 50%, pino 6 a 100%

• Pulso de leitura: Lê um pulso em um pino até que o valor de entrada


mude para ON ou OFF. Ele mede a duração do pulso em
microssegundos. Se o tempo limite indicado for excedido sem alterar o
estado, ele retornará o valor 0.

• Interrupção externa: permite que você execute um bloco de código


quando ocorre uma interrupção externa indicando o tipo de "gatilho" que
produz o evento:

Blocos dentro de uma interrupção externa não devem usar muito


tempo do microcontrolador, devem executar tarefas simples e não

72
bloquear por um longo tempo (em nenhum caso use blocos "esperar",
...)
• Leitura/Gravação em E/S digital externa (extensor I2C): Se você
precisar de mais pinos de E/S digitais, podemos usar um extensor com
conexão I2C para expandir o número de E/S digitais de 8 para 8 (até
64).

• Escrever PWM analógico (PCA9685): Se precisarmos expandir


as saídas do tipo PWM para controle de intensidade, servos, etc ...
podemos usar o extensor PCA9695 expandindo o número de saídas
PWM disponíveis de 8 por 8. Uma opção interessante, por exemplo,
para projetos com um grande número de servos.

Placa de expansão de saída PWM:

Tempo
As funções de tempo ou atraso nos permitem pausar e obter
informações sobre o tempo decorrido dentro do microcontrolador.
• Esperar: Pausa (bloqueia a execução do programa) até a execução
do próximo bloco.

73
Exemplo: Levou 1 segundo ligado, 1 segundo fora

• Tempo decorrido: Obtém um valor com o tempo decorrido desde a


inicialização ou redefinição do microcontrolador da placa Arduino. O
valor pode ser em milissegundos ou microssegundos.

Exemplo: Execute Task1 a cada 3 segundos e Task2 a cada 7


segundos sem bloquear a execução do programa:

• Aguarde para sempre: Bloqueia a execução indefinidamente,


encerrando assim o programa.

74
Exemplo: a ativação da entrada do pino 6 conclui a execução.

Exemplo: Operação equivalente (aguarde para sempre):

• Run Every: Um bloco que implementa automaticamente a função de


tarefa explicada acima. IMPORTANTE: Este bloco NÃO bloqueia a
execução do programa

Exemplo: Executa blocos dentro deles se o tempo decorrido desde a


última execução for maior ou igual a 1000 ms.

Programa equivalente:

Quando precisamos executar diferentes tarefas periódicas e que


parecem correr em paralelo sem bloquear uns aos outros, usaremos esse tipo
de bloco "executar todos".

75
Se no programa usamos blocos como GPS devemos evitar os blocos
de "espera" se quisermos que o programa funcione corretamente. Ver nos
blocos incompatíveis com blocos de "espera".
Exemplo: Tarefas simultâneas com períodos de execução diferentes.

A precisão da execução de tarefas desta forma depende do tempo


gasto por cada tarefa, se uma tarefa "leva muito tempo" ela bloqueará e
"atrasará" o resto. Para o bom funcionamento cada tarefa deve ser executada
no menor tempo possível e nunca utilizar blocos do tipo esperar ou fazer loops
de duração indeterminada que possam permanecer em execução
indefinidamente.
Exemplos do que NÃO fazer dentro das tarefas:

• Cronômetro: Permite obter o tempo decorrido em ms ou s, e é


facilmente ajustado para 0 com a reinicialização do bloco.

76
Exemplo: Jogo em que eu tenho que pressionar um botão
periodicamente sem deixá-lo passar nunca mais de 10s entre as teclas
pressionadas, caso contrário, um LED acende indicando que perdemos.

• Suspensão: Este bloco coloca a placa Arduino no modo de baixa


potência por alguns milissegundos.

9.1.5.9 Multitarefa
ArduinoBlocks nos permite usar uma camada para implementar um
sistema multitarefa avançado baseado em FreeRTOS. Este sistema permite
criar tarefas que serão executadas em paralelo (virtualmente). Em
microcontroladores modestos como o Arduino UNO, Nano ou mesmo MEGA
multitarefa com FreeRTOS é bastante limitado e consome grande parte dos
recursos do nosso Arduino, em caso de necessidade de um sistema
multitarefa mais poderoso podemos optar por usá-lo em placas baseadas em
ESP8266 ou ESP32 com muito mais energia e recursos (especialmente o
ESP32 com dual core e grande poder de processamento e memória interna)

9.1.5.10 Blocos
Com todas essas informações, passamos a ver os blocos disponíveis
para colocar tudo isso em movimento e, em seguida, alguns exemplos:

77
78
Exemplo 1: Piscando vários LEDs em velocidades diferentes

Exemplo 2: LED intermitente + servo em movimento

79
Exemplo 3: Melodia RTTTL + Tela LCD + Sensor de Luz LDR
Tarefa 1: Exibe o valor do LDR no LCD e o nome da música
reproduzida.
Tarefa 2: Reproduza músicas diferentes e atualize o nome na variável.

9.1.5.11 Bluetooth
A comunicação com o módulo Bluetooth HC-06 é exatamente a
mesma que a da porta serial, na verdade, o que o módulo Bluetooth faz é
encapsular todas as informações seriais através de uma conexão serial virtual
através de um perfil Bluetooth de emulação de porta serial.
Podemos simular uma conexão serial com um dispositivo móvel (com
Bluetooth compatível com o perfil da porta serial), um PC ou outro módulo
Bluetooth semelhante em outro dispositivo.
O Arduino UNO possui apenas uma porta serial implementada em seu
hardware, de modo a não utilizar o módulo Bluetooth nos pinos 0 e 1
(correspondentes à porta serial do hardware) e interferir na comunicação
serial ou na programação do dispositivo (como outros ambientes fazem) os

80
blocos Bluetooth implementam uma porta serial de software que funciona
exatamente da mesma forma e pode ser configurada em qualquer outro pino
digital tanto para RX (receber) quanto TX (transmitir).
Exemplo de conexão do módulo Bluetooth HC-06

BlueTerm Android

Início: Permite configurar os pinos onde o módulo Bluetooth está


conectado e a velocidade com que vamos trabalhar.

No caso do microcontrolador ESP32 com bluetooth integrado, basta


indicar o nome do dispositivo Bluetooth para iniciar a comunicação:

Nome: O módulo Bluetooth HC-06 permite que você configure o nome


e o código PIN através de comandos. Com este bloco podemos fazê-lo
facilmente, o único requisito para que ele funcione é que nenhum dispositivo
Bluetooth esteja conectado naquele momento ao módulo HC-06. Por outro
lado, geralmente é necessário reiniciar o módulo para que a nova
configuração apareça (e desemparelhar o dispositivo móvel se já estiver).

Enviar: Digite um valor de texto ou o valor de uma variável na porta


serial. A opção "Line Break" permite que você adicione ou não uma devolução
de carrinho no final da remessa para sair da linha.

81
Enviar Byte: Envia um valor numérico como um byte (8 bits). Portanto,
o valor deve estar entre 0 e 255.

Dados Recebidos: Obtém um valor de true se houver dados recebidos


pendentes de processamento ou false se nada tiver sido recebido pela
conexão serial.

Receber Texto: Lê uma cadeia de caracteres de texto recebida pela


porta serial. Se a opção "até quebrar a linha" for indicada assim que uma
quebra de linha for encontrada, ela retornará o texto recebido. Caso contrário,
até que os dados não sejam mais recebidos.

Receber Byte: Leia um byte (8 bits) da porta serial.

Receber como Número: Leia uma cadeia de caracteres de texto


recebida pela porta serial e tente interpretá-la como um número. Funciona da
mesma forma que a porta serial boque (consulte os detalhes da operação na
porta serial)

Definir Tempo Limite: Define o tempo limite máximo para receber


dados através da conexão serial Bluetooth (valor em milissegundos).

Exemplo: Enviando uma variável de contador via Bluetooth.

82
9.1.5.12 Bluetooth HID 3.3.4.1 (ESP32 / ESP32 STEAMakers)
Nas placas baseadas em microcontroladores ESP32 temos a opção
de converter nosso dispositivo em um teclado ou mouse Bluetooth
(dispositivo HID: Dispositivo Interface Humano).
Desta forma, podemos emparelhar nossa placa com qualquer celular,
tablet, PC ou dispositivo compatível com o Bluetooth HID e enviar
simulações de pressionamentos de teclas ou movimentos do mouse, o que
nos permite criar interfaces para jogos, interfaces de controle
personalizadas e adaptadas ou enviar diretamente dados do sensor como
se estivéssemos digitando-os no dispositivo.

9.1.5.13 Sensores
No mercado existem inúmeros sensores e módulos para Arduino,
embora com os blocos genéricos (entrada / saída) podemos ler as
informações da maioria dos sensores digitais e analógicos
ArduinoBlocks implementa blocos específicos para os sensores mais comuns
no mercado. Esses blocos às vezes se limitam à leitura de informações digitais
ou analógicas, dependendo do tipo de sensor, e em outros casos eles
adaptam os dados lidos para ajustá-los à realidade (por exemplo, ao ler um
sensor de temperatura adapta a leitura a graus Celsius com um cálculo
interno).
ArduinoBlocks incorpora blocos para a maioria dos sensores
modulares que podemos encontrar no mercado, alguns muito populares como
sensores Keyestudio e similares.
ArduinoBlocks é uma plataforma online em contínua evolução.

83
Sensor potenciômetro: Permite obter a posição do controle rotativo.
Ângulo de operação de cerca de 270º. Varia o valor da tensão aplicada à
entrada dependendo da posição de sua resistência variável interna.
Tipo:
Fixo: A0-A5 Valor: 0-100 (%) / 0..1023
Analógico

Exemplo: Sensor potenciômetro conectado ao pino analógico A0 para


ajustar uma variável de temperatura a um valor entre 5 e 30 graus.

Sensor de botão de pressão: Botão para interagir por toque.


Valor: 0/1
Tipo: Digital Pino: 2-13/A0-A5
(F/V, Off/On)

Dependendo da conexão que fazemos do botão, ou no caso de usar


módulos de botão de diferentes fabricantes, a lógica de operação do botão
pode ser diferente:

84
Conexão:
Conexão:
Sem pressionar "on" / pressionado:
Sem pressionar "off" / pressionado: "on"
"off"

Alguns módulos de botão de pressão trabalham internamente


inversamente devido à sua conexão interna. Nesse caso, o botão recebe
sempre um sinal "On" e quando o pressionamos gera o sinal "Off". Nesse
caso, podemos reverter a condição para detectar quando ele é pressionado.
Exemplo: ligar um LED quando o botão é pressionado e desligar se
não estiver.

Exemplo com operação semelhante à anterior:

Botão filtrado: É um bloco semelhante ao anterior, mas que


internamente faz um processamento do sinal do botão evitando "saltos" e
também detectando o "pulsar" e a "liberação"

Como no anterior, se pela conexão interna do botão o sinal lógico


funciona ao contrário ("on" em repouso e "off" ao pressionar) podemos indicar

85
que eu trabalho com lógica invertida:

Sensor de movimento (PIR): É ativado quando detecta movimento em


torno dele, a partir de um momento sem detecção, o sensor é desativado
novamente.
Pino: 2-13/A0- Valor: 0/1
Tipo: Digital
A5 (F/V, Off/On)

Exemplo: Acender o LED no pino 13 quando o movimento é detectado.


Sensor PIR conectado ao pino 6:

Sensor de temperatura e umidade (DHT-11): O sensor DHT-11 é um


sensor que usa seu próprio protocolo de comunicação para nos fornece o
valor da temperatura e umidade. ArduinoBlocks usa internamente uma
biblioteca para obter as informações decodificadas do sensor. É um sensor de
baixa precisão, mas muito econômico e versátil. Em um único pino, ele nos
permite obter dois valores com precisão suficiente para muitas aplicações
simples.
Tipo: Pino de dados: 2-13/A0-A5
Valor: Temperatura: 0-50ºC ±2ºC / Umidade: 20-90% ±5%

86
Exemplo: Exiba o valor de temperatura e umidade no console a cada
5 segundos. Sensor conectado ao pino 10.

Sensor de temperatura (NTC): Obtém o valor da temperatura


ambiente. Ele usa um resistor NTC variável que varia seu valor dependendo
da temperatura ambiente. A relação resistência/temperatura não é linear, mas
internamente o valor é calculado em graus aplicando a seguinte fórmula para
obter o valor corrigido em ºC:

Tipo: Analógico Fixo: A0-A5 Valor: -40... 125ºC

87
Exemplo: Exibindo a temperatura pelo console serial a cada 5
segundos. Sensor conectado ao pino A3:

Sensor de distância (HC-SR04): O sensor gera uma série de tons


ultrassônicos (não audíveis), esses tons se eles retornarem de uma superfície
e forem capturados por um receptor ultrassônico que incorpora o próprio
sensor. Ao medir o tempo que leva para o ultrassom retornar, podemos
calcular a distância a que o objeto em que eles saltaram é.

✓ Tipo: Dados
✓ Gatilho do pino (transmissão): 2-13/A0-A5
✓ Eco do pino (recepção): 2-13/A0-A5
✓ Valor: 2 – 400 cm

88
Exemplo: Ativação do LED no pino 13 quando detectado um objeto
entre 10 e 80 cm de distância.

Sensor de detector de obstáculos (IR): Usando um diodo emissor


de IR e um foto transistor receptor IR, ele permite detectar quando há um
obstáculo nas proximidades pela reflexão da luz IR. Esse tipo de sensor
normalmente permite um ajuste para definir a distância na qual o sensor é
ativado.
Valor: 0/1
Tipo: Digital Pino: 2-13/A0-A5
(F/V, Off/On)

Sensor de Nível de Som: Detecta o nível de som ambiente.


Tipo: Analógico Pino: A0-A5/A0-A5 Valor: 0-100 (%) / 0..1023

89
Exemplo - Detector de alto nível sonoro. Sensor no pino A0

9.1.6 Tinkercad

O Tinkercad é uma ferramenta online de design de modelos 3D em CAD


e também de simulação de circuitos elétricos analógicos e digitais,
desenvolvida pela Autodesk. Por ser gratuito e fácil de usar, encontramos nele
uma oportunidade de ensino de Programação Embarcada, visto que a
primeira barreira encontrada pelos alunos é a de não possuir os componentes
e o microcontrolador em mãos. Estendendo a oportunidade de utilização, a
plataforma conta agora, com a criação de salas de aula, o que possibilita ao
professor um maior controle e monitoramento de acesso e participação dos
estudantes, podendo ter feedbacks e avaliações imediatas, tornando assim a
aprendizagem mais eficaz.
Figura - ambiente de simulação e programação do Tinkercad

Fonte:https://multilogica-shop.com/blog/conhe%C3%A7a-o-tinkercad

90
9.1.7 Linguagem C/C++

O C++ é uma linguagem de programação de nível médio, baseada na


linguagem C. O desenvolvimento da linguagem começou na década de 80,
por Bjarne Stroustrup. O objetivo do desenvolvimento desta linguagem era
melhorar uma versão do núcleo Unix. Para desenvolver a linguagem, foram
acrescentados elementos de outras linguagens de vários níveis, na tentativa
de criar uma linguagem com elementos novos, sem trazer problemas para a
programação. No início do desenvolvimento, a linguagem usava um pré-
processador, mas Stroustrup criou um compilador próprio, com novas
características.
A primeira versão oficial do C++ apareceu em 1985, juntamente com
o livro “The C++ Programming Language”, que esclareceu vários pontos sobre
o C++. Em 1989 foi lançada uma segunda versão da linguagem, com
acréscimo das características: Herança múltipla, classes abstratas, métodos
estáticos, métodos constantes e membros protegidos, incrementando também
um suporte de orientação a objeto. Um ano depois foi lançado o livro “The
Annotated C++ Reference Manual”, que se tornou uma base.
O C++ tem uma enorme variedade de códigos, pois além de seus
códigos, pode contar com vários da linguagem C. Esta variedade possibilita a
programação em alto e baixos níveis. O C++ apresenta grande flexibilidade,
embora seja bom, este fato faz com que a programação seja muito mais
cuidadosa para não terem erros.
Alguns fatos sobre o C++:
● O C++ é uma linguagem criada para ser tão eficiente quanto o C, porém
com novas funções.
● É uma linguagem que suporta múltiplos paradigmas
● A linguagem livre permite ao programador escolher as opções, mesmo
sendo a opção errada.
● Muitos códigos podem ser transferidos para C facilmente, pois o C++ foi
criado para ter compatibilidade com o C.

91
● A linguagem não tem privilégios para alguns grupos de programadores, os
comandos são feitos para todas as especialidades de programadores
● Não é necessário um ambiente de desenvolvimento muito potente para o
desenvolvimento de C++.
Alguns dos mais conhecidos programas são feitos em C++, ou parte
dos seus códigos são nessa linguagem. Alguns deles são: Adobe Photoshop,
MySQL, Mozilla Firefox, Internet Explorer, Microsoft Windows, entre vários
outros.
A linguagem C é mais complicada, e tem de se ter mais atenção a erros de
lógica, porém é mais fácil corrigir os erros que em C++, pois muitas das
sintaxes do C++ são sutis, e quando se erra alguma coisa mínima, o código
simplesmente não funciona, ou em caso de erros menores, o código passa a
apresentar problemas muito difíceis de identificar.

Figura - exemplo de programação em C/C++

Fonte:http://www.bitdaeducacao.com.br/2018/05/aula-11-c-estrutura-de-condicao-if-
else.html

10 - PLACA ARDUINO (HARDWARE)


O Arduíno é uma plataforma de desenvolvimento composta por dois
componentes: a placa que é o hardware e que será utilizada na construção
dos projetos (Arduíno uno, mega uno, duemilanove, etc) e uma IDE arduíno
(software de desenvolvimento integrado) onde você pode escrever o seu
código em linguagem C/C++ e a própria IDE fará todo o processo de
compilação e transferência do código (MOTA, 2015, p.6).

92
10.1 - Alimentação da placa Arduíno
A placa pode ser alimentada pela conexão USB ou por uma fonte de
alimentação externa, conforme exibido na figura abaixo:

Figura – Alimentação da placa Arduíno UNO

Fonte: https://www.embarcados.com.br/arduino-uno/

A alimentação externa é feita através do conector Jack com positivo no


centro, onde o valor de tensão da fonte externa deve estar entre os limites 6V.
a 20V., porém se alimentada com uma tensão abaixo de 7V., a tensão de
funcionamento da placa, que no Arduíno Uno é 5V, pode ficar instável e
quando alimentada com tensão acima de 12V, o regulador de tensão da placa
pode superaquecer e danificar a placa. Dessa forma, é recomendado para
tensões de fonte externa valores de 7V a 12V (SOUZA, 2013).
Quando o cabo USB é ligado a um PC, por exemplo, a tensão não
precisa ser estabilizada pelo regulador de tensão. O circuito da USB apresenta
alguns componentes que protegem a porta USB do computador em caso de
alguma anormalidade. Caso haja uma tensão no conector DC e a USB é
conectada, a tensão de 5V será proveniente da fonte externa e USB servirá
apenas para comunicação com o PC (SOUZA, 2013).
A seguir são exibidos os conectores de alimentação para conexão de
Shields e módulos na placa Arduíno UNO:
Figura – Conectores de alimentação Arduíno UNO R3

Fonte: https://www.embarcados.com.br/arduino-uno/

93
IOREF – Fornece uma tensão de referência para que Shields possam
selecionar o tipo de interface apropriada, dessa forma Shields que funcionam
com a placas Arduíno que são alimentadas com 3,3V. podem se adaptar para
ser utilizados em 5V. e vice-versa.
RESET – pino conectado a pino de RESET do microcontrolador. Pode ser
utilizado para um reset externo da placa Arduíno.
3,3 V. – Fornece tensão de 3,3V para alimentação de Shields e módulos
externos. Corrente máxima de 50 mA.
5 V – Fornece tensão de 5V para alimentação de Shields e circuitos externos.
GND – pino negativo (GROUND)
VIN – pino para alimentar a placa através de Shields ou bateria externa.
Quando a placa é alimentada através do conector Jack, a tensão da fonte
estará nesse pino.

10.2 - Comunicação USB da Placa Arduíno UNO


Como interface USB para comunicação com o computador, há na
placa um microcontrolador ATMEL ATMEGA16U2.

Figura – Conversor USB-serial com ATmega16u2

Fonte: https://www.embarcados.com.br/arduino-uno/

Este microcontrolador é o dispositivo programável que roda o código


que enviamos à placa UNO, possibilitando o upload do código binário gerado
após a compilação do programa feito pelo usuário. Possui um conector ICSP
para gravação de firmware através de um programador ATMEL, para
atualizações futuras (MOTA, 2015, p. 7).
Nesse microcontrolador também estão conectados dois leds (TX, RX),
controlados pelo software do microcontrolador, que indicam o envio e recepção
de dados da placa para o computador. É interessante notar a conexão entre
este microcontrolador com o ATMEL ATMEGA328, onde é feita pelo canal

94
serial desses microcontroladores. Outro ponto interessante que facilita o uso
da placa Arduíno é a conexão do pino 13 do ATMEGA16U2 ao circuito de
RESET do ATMEGA328, possibilitando a entrada no modo bootloader
automaticamente quando é pressionado o botão Upload na IDE. Essa
característica não acontecia nas primeiras placas Arduíno, onde era
necessário pressionar o botão de RESET antes de fazer o Upload na IDE
(SOUZA, 2013).

10.3 - Microcontrolador do Arduíno UNO


O componente principal da placa Arduíno UNO é o microcontrolador
ATMEL ATMEGA328, um dispositivo de 8 bits da família AVR com arquitetura
RISC avançada e com encapsulamento DIP28. Ele conta com 32 KB de Flash
(mas 512 Bytes são utilizados pro bootloader), 2 KB de RAM e 1 KB de
EEPROM. Pode operar a até 20 MHz, porém na placa Arduíno UNO opera em
16 MHz, valor do cristal externo que está conectado aos pinos 9 e 10 do
microcontrolador. Observe que, para o projeto dessa placa, os projetistas
escolheram um cristal com dimensões bem reduzidas (SOUZA JR et al., 2020).
Possui 28 pinos, sendo que 23 desses podem ser utilizados como I/O.
A imagem abaixo exibe a sua pinagem:
Figura 8 – Pinagem ATmega328 usado no Arduíno UNO

Fonte: https://www.embarcados.com.br/arduino-uno/

10.4 - Entradas e saídas do Arduíno


A placa Arduíno UNO possui pinos de entrada e saídas digitais, assim
como pinos de entradas e saídas analógicas, abaixo é exibido a pinagem
conhecida como o padrão Arduíno:

95
Figura – Pinos de entrada e saída no Arduíno UNO R3

Fonte: https://www.embarcados.com.br/arduino-uno/

Segundo Souza Jr et al. (2020), a placa Arduíno UNO possui 14 pinos


que podem ser usados como entrada ou saída digitais, como mostra a figura
acima. Estes Pinos operam em 5 V, onde cada pino pode fornecer ou receber
uma corrente máxima de 40 mA. Cada pino possui resistor de pull-up interno
que pode ser habilitado por software. Alguns desses pinos possuem funções
especiais:
PWM: 3,5,6,9,10 e 11 podem ser usados como saídas PWM de 8 bits através
da função analogWrite ();
Comunicação serial: 0 e 1 podem ser utilizados para comunicação
serial. Deve-se observar que estes pinos são ligados ao microcontrolador
responsável pela comunicação USB com o PC;
Interrupção externa: 2 e 3. Estes pinos podem ser configurados para
gerar uma interrupção externa, através da função attachInterrupt ().
Para interface com o mundo analógico, a placa Arduíno UNO possui 6
entradas, onde cada uma tem a resolução de 10 bits. Por padrão a referência
do conversor AD está ligada internamente a 5V, ou seja, quando a entrada
estiver com 5V o valor da conversão analógica digital será 1023.

10.4.1 - Grandezas Digitais e Analógicas


Antes de desenvolver aplicações práticas com o Arduíno, é necessário
saber diferenciar uma grandeza analógica de uma grandeza digital. Além
disso, é de grande importância aprender como o Arduíno funciona com essas
grandezas e os conceitos básicos envolvidos no processo de conversão entre
elas.

96
As grandezas digitais são aquelas que não variam continuamente no
tempo, mas sim em saltos entre valores bem definidos. Um exemplo são os
relógios digitais: apesar do tempo em si variar continuamente, o visor do
relógio mostra o tempo em saltos de um em um segundo. Um relógio desse
tipo nunca mostrará 12,5 segundos, pois, para ele, só existem 12 e 13
segundos. Qualquer valor intermediário não está definido (ARDUINO, 2019).
Já as grandezas analógicas são aquelas que, ao contrário das
grandezas digitais, variam continuamente dentro de uma faixa de valores. O
velocímetro de um carro, por exemplo, pode ser considerado analógico, pois
o ponteiro gira continuamente conforme o automóvel acelera ou trava. Se o
ponteiro girasse em saltos, o velocímetro seria considerado digital (ARDUINO,
2019).
Os circuitos e equipamentos elétricos ditos digitais trabalham com
apenas dois valores de tensão definidos:
● Um nível lógico alto, que no caso do Arduíno é 5V;
● Um nível lógico baixo, que no caso do Arduíno é 0V.
As placas Arduíno possuem uma nítida divisão entre os pinos de
entrada e saída digitais/analógicos, porém em algumas placas como o Arduíno
Uno qualquer pino pode ser utilizado como entrada ou saída digital, basta
configurá-lo (ARDUINO, 2019).

10.4.2 - Caraterísticas de uma Entrada Digital (pull-up e pull-down)


Quando configuramos um pino como entrada digital ele apresentará
uma caraterística chamada alta impedância. Isso significa que uma pequena
corrente consegue fazer com que seu estado mude. Podemos usar essa
configuração, por exemplo, para ler botões, foto resistências entre outros
componentes e a partir do estado lido ou das mudanças desses estados
concluir o que está a acontecer no mundo externo e então tomar ações
baseadas nessas medidas.
Segundo Arduinoportugal (2017) caso o pino seja configurado como
entrada, mas sem estar ligado a nada, poderá alterar o seu estado
aleatoriamente por ser afetado pelo ruído elétrico do ambiente. Para evitar
esse problema podemos utilizar uma resistência de pull up ou pull down. Essas
resistências irão fazer com que a tensão na entrada esteja definida quando o

97
mesmo não estiver ligado a nada. As figuras mostram três ligações de um
botão a um pino do microcontrolador configurado como entrada digital. Para
cada caso temos:
Figura abaixo: O estado do pino não está bem definido fazendo com que
este esteja suscetível a ruído.
Figura - sem definição do pino

Fonte: https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-pwm/

Figura abaixo: Neste caso, devido à presença da resistência de pull-


down seu estado está bem definido em GND consequentemente o estado
normal será como baixo.
Figura - definição de resistência pull down

Fonte: https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-pwm/

Figura abaixo: Neste caso, devido à presença da resistência de pull-up


seu estado está bem definido em +5 V consequentemente o estado normal
será como alto.
Figura - definição de resistência pull up

Fonte: https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-
pwm/

98
Os microcontroladores existentes nas placas Arduíno possuem
resistências de pull-up construídos internamente que podem ser acionados
pelo software.

10.4.3 - Caraterísticas de uma Saída Digital


Quando configurados nesse estado os pinos podem fornecer 0 ou 5 V
fazendo com que eles drenem ou forneçam corrente. O valor máximo dessa
corrente varia de placa para placa, mas, em geral, é de 30mA. Essa corrente
é mais do que suficiente para ligar um LED de alto-brilho e alguns sensores,
porém não é suficiente para ligar a maioria dos relés e motores. Caso uma
corrente maior que o limite passe por um pino, este poderá ser danificado
(SOUZA JR et al., 2020).

10.4.4 - Entradas e saídas analógicas


Se observarmos, o mundo é quase todo formado por variáveis
analógicas, tais como posição, temperatura e pressão, de forma que é
necessário saber trabalhar com esses tipos de grandezas. O Arduíno possui
um conjunto de pinos destinados a serem utilizados como entradas analógicas
e outros pinos que podem ser usados como saídas PWM (Simulam uma saída
analógica). Como tudo no Arduíno é processado de forma digital, é necessário
converter as grandezas analógicas em digitais e vice-versa. Esses
conversores já estão embutidos no Arduíno, de forma que é necessário
apenas que se compreenda o básico do processo de conversão para poder
utilizar essas portas analógicas (ARDUINOPORTUGAL, 2017).

10.4.5 - Entradas Analógicas


Como o conversor analógico-digital do Arduíno possui uma resolução
de 10 bits, o intervalo de tensão referência, que no nosso caso é 0 a 5 V, será
dividido em 1024 pedaços (2^10) e o valor discreto mais próximo da tensão no
pino será atribuído a essa tensão. Com 10 bits de resolução e um intervalo de
0 a 5V de tensão podemos representar tensões em degraus de (5-0) /1024
volts. Supondo uma tensão de 3,25 V o valor retornado pela conversão será:
3,25 x 1024 / 5 = 665,6

99
O resultado deve ser inteiro para que nosso conversor consiga
representá-lo, logo o valor 665,6 será escolhido por ser o degrau mais próximo.
Esse valor representa a tensão 3,251953125 inserindo um erro de
0,001953125 em nossa medida devido a limitação de nossa resolução.
Saídas PWM
O PWM (Pulse Width Modulation – Modulação por Largura de Pulso)
é uma técnica para obter resultados analógicos por meios digitais. Essa
técnica consiste na geração de uma onda quadrada em uma frequência muita
alta em que pode ser controlada a percentagem do tempo em que a onda
permanece em nível lógico alto.
Esse tempo é chamado de Duty Cycle e sua alteração provoca
mudança no valor médio da onda, indo desde 0V (0% de Duty Cycle) a 5V
(100% de Duty Cycle) no caso do Arduíno.

Fonte: https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-pwm/

O Duty Cycle é a razão do tempo em que o sinal permanece na tensão


máxima (5V no Arduíno) sobre o tempo total de oscilação, como está ilustrado
na figura abaixo:
Figura - Duty Cycle

Fonte: https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-pwm/

Duty Cycle (%) = (x/x+y)*100% = (x/T)*100%


Vmédio = Vmax*Duty Cycle(%)

100
O valor do Duty Cycle usado pelo Arduíno é um inteiro armazenado em
8 bits, de forma que seu valor vai de 0 (0%) a 255 (100%).
Quem manipula a placa e projeta o circuito que será conectado aos
seus I/Os deve ter muito cuidado pois, entre os pinos do microcontrolador e a
barra de pinos, não há nenhum resistor, que limite a corrente, além disso,
dependendo do local onde está trabalhando pode-se provocar curto circuito
nos pinos já que a placa não possui isolação na sua parte inferior, como
mostrada na figura a seguir (ARDUINOPORTUGAL, 2017).
Figura 11 – Parte traseira do Arduino UNO – Sem isolamento

Fonte: https://www.embarcados.com.br/arduino-uno/

A placa não conta com botão liga/desliga – Se quiser desligar a


alimentação, tem que “puxar” o cabo. O cabo USB tipo B não é tão comum
quanto o mini USB, utilizado bastante em celulares. Isso pode ser um
problema, caso perca o cabo que veio com a placa.

10.5 - Programação da placa


A placa Arduino UNO é programada através da comunicação serial,
pois o microcontrolador vem programado com o bootloader. Dessa forma não
há a necessidade de um programador para fazer a gravação (ou upload) do
binário na placa. A comunicação é feita através do protocolo STK500.
A programação do microcontrolador também pode ser feita através do
conector ICSP (in – circuit serial programming) utilizando um programador
ATMEL.

101
10.6 - Resumo da placa Arduíno UNO
Figura – Resumo de recursos da Arduíno

Fonte: https://www.embarcados.com.br/arduino-uno/

11 - ARDUINO IDE (SOFTWARE)


O Arduíno é uma plataforma de hardware livre, projetado com um
microcontrolador Atmel AVR. É uma placa de código aberto baseada em um
circuito de entradas/saídas simples, microcontrolador é desenvolvida sobre
uma biblioteca que simplifica a escrita da programação em C/C++.
O microcontrolador pode ser programado com a linguagem de
programação Arduíno, que é baseada na linguagem Wiring e seu ambiente de
desenvolvimento é baseado no Processing. A estrutura de programação é
constituída por duas funções principais, a “setup” e o “loop”. No setup iremos
dá indicações ao Arduíno de onde estão ligados os componentes. No loop
iremos escrever as instruções. Um detalhe importante, é que as funções
escritas no loop irão estar em ciclo constante, ou seja, o loop quando acaba,
volta a reiniciar, infinitamente.

11.1 - Void
O “void” declara uma função, tal como dissemos acima o código tem
que obrigatoriamente ter o “setup” e o “loop”.

102
11.2 - PinMode
O “pinMode” declara o modo do pin em que vamos ligar os
componentes, sendo que só é necessário declarar os digitais. Os analógicos só
têm de ser declarados quando é para funcionarem como saída. Sendo que
dentro de parênteses temos, em primeiro lugar o número do pin, e a seguir a
vírgula como queremos que a porta funcione (entrada, “INPUT” ou saída
“OUTPUT”).
Figura - Imagem do Arduíno IDE

Fonte:https://support.microsoft.com/pt-br/office/carregando-c%C3%B3digo-de-quadro-e-
arduino-ide-a9723765-1314-49e0-a69b-bb5c3e1f628d

Sugestão de atividade:
1. http://arduino.labdegaragem.com/Guia_preview/basicos.html -
Experimentos básicos com Arduíno
2. https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/cader
no-de-atividades-1-3-versaofinal.compressed.pdf - Caderno de experimentações
básicas.
3. https://www.tinkercad.com/things/5M6aYXIOhUm - Atividade utilizando o
tinkercad.

12 - TIPOS DE PLACAS DE ARDUINO


12.1 - Arduíno UNO R3
É uma placa remodelada se comparando com as placas anteriores do
Arduíno, ele tem alguns recursos adicionais. O Arduíno UNO R3 usa o
Atmega16U2 ao invés do 8U2 e permite uma taxa de transferência mais rápida

103
e mais memória, nele foi adicionado pinos SDA e SCL que estão ao lado do
AREF e, além disso, existem dois pinos que são colocados perto do pino
RESET.
Figura - Arduíno UNO R3

Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html

Especificações do Arduíno Uno R3


● Microcontrolador ATmega328
● Voltagem de entrada 6-20V, recomendada 7-12V
● Pinos E/S digitais 14 (dos quais 6 podem ser saídas PWM)
● Pinos de entrada analógica 6
● 32 KB de memória flash (ATmega328) dos quais 0,5KB são utilizados pelo
bootloader
● SRAM 2 KB
● EEPROM 1 KB
● Velocidade de Clock 16 MHz

12.2 - Arduino Mega (R3)

O Arduíno Mega é um tipo de microcontrolador baseado no


ATmega2560. Ele consiste de 54 pinos de entrada / saída digitais e, do total de
pinos, 14 pinos são usados para a saída PWM, 16 pinos são usados para as
entradas analógicas, 4 pinos são usados para a porta serial do hardware do
UART. Há pinos como o oscilador de cristal de 16MHz, conexão USB, pino
RESET, conector ICSP e um conector de energia. A placa também possui pinos
SDA e SCL que estão ao lado do AREF. Existem dois pinos novos perto do pino
RESET que são IOREF que permitem que as Shields se adaptem à tensão
fornecida pela placa.

104
Figura -Arduino Mega R3

Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html

Especificações do Arduino Mega (R3)


● Microcontrolador ATmega2560
● Tensão de entrada - 7-12V
● 54 pinos digitais I / O (14 saídas PWM)
● 16 entradas analógicas
● 256k de memória flash
● Velocidade do pulso de disparo de 16Mhz

12.3 - Arduino Leonardo


A placa Arduino Leonardo é uma placa microcontroladora e é baseada
no microcontrolador ATmega32u4. Esta placa tem 20 pinos digitais de entrada
/ saída e do número total de pinos, 7 pinos são usados para a saída de
modulação de largura de pulso PWM e 12 pinos são usados como uma
entrada analógica e há o oscilador de cristal de 16MHz, uma conexão micro
USB, RESET pino e tomada de energia.
O Arduino Leonardo difere de todas as placas anteriores, devido ao
ATmega32u4 ter comunicação USB integrada, eliminando a necessidade de
um processador secundário.
Especificações do Arduino Leonardo
● Microcontrolador ATmega328
● Voltagem de entrada 6-20V, recomendada 7-12V
● Pinos E/S digitais 20 (dos quais 7 podem ser saídas PWM)
● Pinos de entrada analógica 12
● 32 KB de memória dos quais 4KB são utilizados pelo boot-loader
● Velocidade de Clock 16 MHz

105
12.4 - Arduíno Nano
A placa Arduíno Nano é uma placa que utiliza o microcontrolador
ATmega328, projetada para se adaptar em pequenos espaços de montagens,
sua estrutura é a mesma baseada no ATmega32, tem comunicação Micro
USB integrada, composta por 14 pinos digitais IO, sendo 8 pinos para entradas
com 10 bits de resolução.
Figura - Arduino Nano 3.0

Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html

Especificações do Arduino Nano 3.0


● CPU: Microcontrolador Atmel Atmega328
● Tensão mínima de Alimentação: 3.3V e máxima de 20V
● Tensão Ideal para Alimentação: 7V – 12V
● Pinos Digitais I/O: 14 pinos, no qual 6 destes também servem para
saídas PWM
● Pinos de Entrada Analógica: 8 entradas com 10 bits de resolução
● Corrente DC Por Pino I/O: 40mA
● Memória Flash: 16 Kb, sendo que 2 Kb são utilizados pelo bootloader
● SRAM: 2 Kb
● EEPROM: 1Kb
● Velocidade de Clock: 16 MHz

12.5 - Arduino Pro Mini


A placa Arduino Pro Mini é uma das placas menores da categoria de
microcontroladora Arduino, projetada para se adaptar a espaços minúsculos
de montagens, sua estrutura também segue a mesma baseada no
ATmega328, ele não tem comunicação USB integrada, o que deverá fazer
essa comunicação com um conversor USB Serial, FTDI.

106
Figura - Arduino Pro Mini

Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html

Especificações do Arduino Pro Mini


● Microcontrolador: ATmega328p
● Tensão de Operação: 5v
● Tensão de Entrada: 5-12v
● Entradas e Saídas digitais: 14 (das quais 6 podem ser usadas como saídas
PWM)
● Entradas Analógicas: 8
● Corrente DC de Operação: 40mA
● Memória Flash: 32KB
● SRAM: 1KB
● EEPROM: 1KB
● Velocidade de Clock: 16MHz

12.6 - Arduino LilyPad


Esta placa é um Microcontrolador Programável Arduíno e foi projetada
para se integrar facilmente em projetos de e-textiles & wearable. As outras
placas Arduino têm a mesma funcionalidade, como um pacote leve e redondo,
projetado para minimizar o entalamento e o perfil, com abas largas que podem
ser costuradas e conectadas com roscas condutoras.
Figura - Arduino LilyPad

Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html

107
Esta placa consiste em um Atmega328 com o boot-loader Arduino e
para mantê-lo como um pequeno componente externo mínimo são
necessários. A fonte de alimentação desta placa é de 2 a 5 V e oferece
grandes orifícios de fixação que facilitam a costura e a conexão. Cada pino é
conectado a terminais positivos e negativos e para controlar os dispositivos de
entrada e saída, como luz, motor e interruptor.

13 - Tabela Comparativa de Placas Arduíno


Nesta tabela temos a comparação entre as placas Arduino e suas
características de memória, processamento, IO, Conexões entre outros.
Figura: tabela comparativa das placas Arduino

Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.htm

14 - MOTORES ARDUINO
14.1 - MOTOR DE CORRENTE CONTÍNUA (motor DC)
O princípio básico de funcionamento do motor CC é o seguinte:
“Sempre que um condutor conduz uma corrente elétrica é colocado em um
campo magnético, este condutor experimenta uma força mecânica gerando o
torque e o giro do eixo do motor”.
Os motores são separados pela sua potência, tensão de
funcionamento, rotação e tamanho. Por conta da sua alta compatibilidade o
Arduíno pode utilizar quase todas as especificações de motores de corrente

108
contínua e alternada, os motores mais utilizados são de corrente contínua por
conta do custo benefício.
Figura - imagem do motor para Arduino

Fonte: https://howtomechatronics.com/tutorials/arduino

Sugestão de material de apoio:


1. https://www.youtube.com/watch?v=yyCX9oP2cso
Aprenda a controlar motores com o arduino
2. https://www.youtube.com/watch?v=C2jWtdoR9gc
Usando motores DC com Arduino P1

14.2 - SERVO MOTOR


Servo motores são pequenos motores que já possuem um driver
embutido e de uma forma simples você pode fazer seu controle. Controle o
ângulo que desejar em seus eixos. São mais utilizados para movimento de
garras e braços mecânicos.
As ligações desse motor com a placa Arduino são bastante simples.
Tudo o que é preciso fazer é conectar a alimentação do Micro Servo 9g ao
Arduino: Fio Marrom com GND, depois do fio Vermelho no pino 5v da placa.
Por fim, conecte o Fio Laranja na Porta Digital PWM.
Figura - imagem do servo motor para Arduino

Fonte: https://howtomechatronics.com/tutorials/arduino

Sugestão de material de apoio:


1. https://www.youtube.com/watch?v=PRyR8DN7qEk
Servo motor o que é? Como usar no Arduino?
2. https://www.youtube.com/watch?v=VitG0Sq6kNY
Como usar um servo motor

109
15 - SENSORES ARDUINO
15.1 - Sensor de Distância Ultrassônico HC-SR04
O Sensor ultrassônico HC-SR04 é capaz de medir distâncias de 2cm
a 4m com ótima precisão e baixo preço. Este módulo possui um circuito pronto
com emissor e receptor acoplados e 4 pinos (VCC, Trigger, ECHO, GND) para
medição.
Figura - imagem sensor ultrassônico para Arduino

Fonte:https://howtomechatronics.com/tutorials/arduino

Sugestão de material de apoio:


1. https://www.youtube.com/watch?v=O3DioJ8f638
Como usar sensor ultrassônico hc-sr04

15.2 - Sensor de Umidade e Temperatura


É um sensor de temperatura e umidade que permite fazer leituras de
temperaturas entre -40 a +80 graus Celsius e umidade entre 0 a 100%, sendo
muito fácil de usar com Arduino, Raspberry e outros microcontroladores pois
possui apenas 1 pino com saída digital.
Figura - imagem do sensor de temperatura para Arduino

Fonte:https://howtomechatronics.com/tutorials/arduino

Sugestão de material de apoio:


https://www.youtube.com/watch?v=-bVEFiogrBc
Sensor de umidade e temperatura DHT11

110
15.3 - Sensor de Obstáculo Infravermelho IR
O sensor de obstáculo é um circuito composto por um emissor e um
receptor IR, mais o CI comparador LM393, que facilita sua conexão com
Arduino, PIC e Raspberry Pi, visto que sua tensão é de 3,3-5V.
Figura - imagem do sensor infravermelho para Arduino

Fonte:https://howtomechatronics.com/tutorials/Arduino

Sugestão de material de apoio:


https://www.youtube.com/watch?v=DT1eynbgu8k
Como usar um sensor de refletância para identificar uma faixa - arduino

15.4 - Sensor de Cor


Detecte a cor dos objetos de forma rápida e precisa com o sensor de
reconhecimento de cor TCS3200. O sensor TCS3200 reconhece níveis de luz
RGB (Red, Green e Blue, ou vermelho, verde e azul) e envia esses dados
para um microcontrolador como Arduino, Raspberry, PIC e outros modelos,
permitindo que você crie eficientes sistemas de detecção de cor.
Figura - imagem do sensor de cor para Arduino

Fonte: https://howtomechatronics.com/tutorials/Arduino

Sugestão de material de apoio:


https://www.youtube.com/watch?v=ZJpQ3tjyhOY
Arduino – sensor de cores – TCS230

111
16. CÓDIGO DE CORES PARA RESISTORES
O código de cores é a convenção utilizada para identificação de
resistores de uso geral. Compreende as séries E6, E12 e E24 da norma
internacional IEC.

Procedimento para Determinar o Valor do Resistor: Identificar a cor


do primeiro anel, e verificar através da tabela de cores o algarismo
correspondente à cor. Este algarismo será o primeiro dígito do valor do
resistor. Identificar a cor do segundo anel. Determinar o algarismo
correspondente ao segundo dígito do valor da resistência. Identificar a cor do
terceiro anel. Determinar o valor para multiplicar o número formado pelos itens
1 e 2. Efetuar a operação e obter o valor da resistência. Identificar a cor do
quarto anel e verificar a porcentagem de tolerância do valor nominal da
resistência do resistor. OBS.: A primeira faixa será a faixa que estiver mais
perto de qualquer um dos terminais do resistor.

112
17 EXPERIÊNCIA COM KIT ARDUÍNO E PRÁTICA LABORATORIAL
17. 1 Prática experimental 1 – Projeto led
Objetivo: fazer um botão acender um led quando pressionado e,
quando solto, o led deverá apagar.
Componentes: 1 Led Vermelho, 1 Resistor de 300k, 1 PushButton, 1
Resistor de 10k e cabos diversos.
Procedimento: 1. Colocar os componentes como está sendo
mostrado na imagem abaixo, bem como suas ligações:

Código:
int ledPin = 13; //led no pino 13
int Botao = 2; //botão no pino 2
int EstadoBotao = 0; //Variável para ler o status do PushButton
void setup(){
pinMode(ledPin, OUTPUT); //Pino do led será saída
pinMode(Botao, INPUT); //Pino com botão será entrada
}
void loop(){
EstadoBotao = digitalRead(Botao); /*novo estado do botão vai ser igual ao que Arduino
ler no pino onde está o botão.
Poderá ser ALTO (HIGH) se o botão estiver
Pressionado, ou BAIXO (LOW), se o botão
estiver solto */
if (EstadoBotao == HIGH){ //Se botão estiver pressionado (HIGH)
digitalWrite(ledPin, HIGH);// acende o led do pino 13.
}
else{ //se não estiver pressionado
digitalWrite(ledPin, LOW); //deixa o led do pino 13 apagado
}
}

113
2. Após compilar o código e fazer o upload na sua placa, você já deve
poder apertar o botão e o led da protoboard acender e, quando soltar, o led deve
apagar.
OBS: Recomenda-se que você tente entender passo a passo o
programa anterior, para não ter problemas quando os códigos começarem a ficar
mais complexos.

17.2 Prática experimental 2 – Projeto led com expansão


Este experimento é uma expansão do experimento anterior. A diferença
deste com o experimento 1, é que neste teremos mais 2 botões e mais 2 leds de
cores diferentes. Você pode tentar montar sozinho o novo circuito, ou utilizar o
modelo de ligações abaixo:
Componentes: 1 Led Verde, 1 Led Amarelo, 1 Led Vermelho, 3 Resistores de
300k 3 Resistores de 10k, 3 Pushbutton e cabos diversos.

Código:
int ledPin1 = 13;
int ledPin2 = 12;
int ledPin3 = 11;
int Botao1 = 2;
int Botao2 = 3;
int Botao3 = 4;
int EstadoBotao1 = 0;
int EstadoBotao2 = 0;
int EstadoBotao3 = 0;
void setup(){
pinMode(ledPin1, OUTPUT);
pinMode(Botao1, INPUT);
pinMode(ledPin2, OUTPUT);
pinMode(Botao2, INPUT);
pinMode(ledPin3, OUTPUT);

114
pinMode(Botao3, INPUT);
}
void loop(){
EstadoBotao1 = digitalRead(Botao1);
EstadoBotao2 = digitalRead(Botao2);
EstadoBotao3 = digitalRead(Botao3);
if (EstadoBotao1 == HIGH){
digitalWrite(ledPin1, HIGH);
}
else{
digitalWrite(ledPin1, LOW);
}
if (EstadoBotao2 == HIGH){
digitalWrite(ledPin2, HIGH);
}
else{
digitalWrite(ledPin2, LOW);
}
if (EstadoBotao3 == HIGH){
digitalWrite(ledPin3, HIGH);
}
else{
digitalWrite(ledPin3, LOW);
}
}

Lembrete: Nunca se esqueça dos pontos e vírgula (;) no final dos


comandos em seu programa em C.

17.3 Prática experimental 3 - Projeto Piano


Objetivo: Fazer com que cada botão toque uma nota musical diferente
e acende um led.
Componentes: 1 Led Verde, 1 Led Amarelo, 1 Led Vermelho, 3
Resistores de 300k, 3 Resistores de 10k, 3 Pushbutton, cabos diversos e 1
Buzzer 5V.
Procedimento: Neste experimento cada um dos 3 botões tocará uma
nota musical diferente. Para montar o projeto usa-se um novo componente: o
Buzzer, que nada mais é do que um pequeno alto-falante. Ele não consegue
tocar músicas, mas consegue fazer apitos soarem, como sirenes ou alarmes. A
maioria dos alarmes de pequenos equipamentos eletrônicos é feito através de
um Buzzer. Ele funciona da seguinte maneira: quando alimentado por uma fonte,

115
componentes metálicos internos vibram da frequência da fonte, produzindo
assim um som. Para este experimento, também poderá ser utilizado um pequeno
alto-falante (o som sai mais puro e a diferença entre as notas musicais é mais
nítida). O Buzzer tem polaridade.
Retirando-se o adesivo superior do Buzzer poderá ser visto um sinal de
positivo (+), o qual mostra onde está o pino positivo do componente. Sempre
ligue este a uma saída digital do Arduino e o outro em GND. Para fazer a
montagem, o modelo a seguir pode ser seguido:

Código:
const int ledPin1 = 13;
const int ledPin2 = 12;
const int ledPin3 = 11;
const int Botao1 = 2;
const int Botao2 = 3;
const int Botao3 = 4;
const int Buzzer = 10; //O Buzzer está colocado no pino 10
int EstadoBotao1 = 0;
int EstadoBotao2 = 0;
int EstadoBotao3 = 0;
int Tom = 0; //Variável para armazenar a nota musical
void setup() {
pinMode(Buzzer, OUTPUT);
pinMode(ledPin1, OUTPUT);
pinMode(Botao1, INPUT);
pinMode(ledPin2, OUTPUT);
pinMode(Botao2, INPUT);
pinMode(ledPin3, OUTPUT);
pinMode(Botao3, INPUT);
}
void loop(){
EstadoBotao1 = digitalRead(Botao1);
EstadoBotao2 = digitalRead(Botao2);

116
EstadoBotao3 = digitalRead(Botao3);
if(EstadoBotao1 && !EstadoBotao2 && !EstadoBotao3) {
Tom = 100;
digitalWrite(ledPin1, HIGH);
}
if(EstadoBotao2 && !EstadoBotao1 && !EstadoBotao3) {
Tom = 200;
digitalWrite(ledPin2, HIGH);
}
if(EstadoBotao3 && !EstadoBotao2 && !EstadoBotao1) {
Tom = 500;
digitalWrite(ledPin3, HIGH);
}
while(Tom > 0) { //enquanto Tom for maior que zero faça o que está descrito baixo:
digitalWrite(Buzzer, HIGH); // Liga Buzzer
delayMicroseconds(Tom); // Espera o tempo proporcional ao comprimento de onda da nota
musical em milissegundos
digitalWrite(Buzzer, LOW); // Desliga Buzzer
delayMicroseconds(Tom); // Espera o tempo proporcional ao comprimento de onda da nota
musical em milissegundos
Tom = 0; // Resetar o Tom para zero, para sair do loop while e não tocar o som
constantemente
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
}
}

17.4 Prática experimental 4 – Projeto registro de temperatura


Objetivo: Registrar temperatura ambiente.
Componentes: 1 NTC (sensor de temperatura), 1 Resistor de 10k e
cabos diversos.
Procedimento: fazer a primeira aquisição de dados do mundo externo
para dentro do Arduino. Será usado um sensor de temperatura ligado a uma das
entradas analógicas da placa. O circuito a ser montado é o seguinte:

117
Código:
const int PinoSensor = 0;//pino Analógico de Entrada 0
int ValorSensor = 0;
void setup(){
Serial.begin(9600);
}
void loop(){
ValorSensor = analogRead(PinoSensor);
Serial.print("Valor do Sensor = ");
Serial.println(ValorSensor);
delay(500);
}

17.5 Prática experimental 5 – Projeto Alarme


Objetivo: Montar um alarme que, se a temperatura de onde o sensor
estiver localizado for maior, ou menor, ele soará a partir dos valores colhidos no
experimento 3.
Componentes: 1 NTC (sensor de temperatura), 1Resistor de 10k, cabos
diversos e1 Buzzer 5V.
OBS: Quando a temperatura for maior que um valor, escolhido por você,
o Buzzer começará a soar até que a temperatura volte ao estado perfeito.
O circuito é o seguinte

118
Código:
const int PinoSensor = 0;
const int Buzzer = 6;
int ValorSensor = 0;
void setup(){
pinMode(Buzzer, OUTPUT);
Serial.begin(9600);
}
void loop(){
ValorSensor = analogRead(PinoSensor);
Serial.print("Valor do Sensor = ");
Serial.println(ValorSensor);
if (ValorSensor > 912){
digitalWrite(Buzzer, HIGH);
}
else{
digitalWrite(Buzzer, LOW);
}
}

17.6 Prática experimental 6 – Projeto Termômetro


Objetivo: Acender leds coloridos conforme a temperatura do ambiente
aumenta ou diminui.
Componentes: 1 NTC (sensor de temperatura), 1 Resistor de 10k,
cabos diversos, 1 Buzzer 5V, 2 Leds Verdes, 2x Leds Amarelos, 2 Leds
Vermelhos e 6 Resistores de 300k.
Procedimento: Conforme a temperatura do ambiente onde o sensor
NTC está localizado aumenta, os leds coloridos acendem, como um termômetro.
Se por algum motivo todos os 6 Leds forem acesos, um alarme deverá soar.

119
OBS: Implícito neste experimento está o conceito de um bargraf, que
nada mais é do que uma barra de leds que acendem conforme algum parâmetro.
Bargrafs muito conhecidos são os de equipamentos de som. Quando o som está
alto, ou com os graves altos, as luzes acendem do verde até o vermelho, como
na figura a seguir:

Código:
const int PinoSensor = 0;
const int Buzzer = 6;
const int led1 = 8;
const int led2 = 9;
const int led3 = 10;
const int led4 = 11;
const int led5 = 12;
const int led6 = 13;
int ValorSensor = 0;
void setup(){
pinMode(Buzzer, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
Serial.begin(9600);
}
void loop(){
ValorSensor = analogRead(PinoSensor);

120
Serial.print("Valor do Sensor = ");
Serial.println(ValorSensor);
if (ValorSensor > 0){
digitalWrite(led1, HIGH);
}
else{
digitalWrite(led1, LOW);
}
if (ValorSensor > 915){
digitalWrite(led2, HIGH);
}
else{
digitalWrite(led2, LOW);
}
if (ValorSensor > 920){
digitalWrite(led3, HIGH);
}
else{
digitalWrite(led3, LOW);
}
if (ValorSensor > 930){
digitalWrite(led4, HIGH);
}
else{
digitalWrite(led4, LOW);
}
if (ValorSensor > 935){
digitalWrite(led5, HIGH);
}
else{
digitalWrite(led5, LOW);
}
if (ValorSensor > 940){
digitalWrite(led6, HIGH);
digitalWrite(Buzzer, HIGH);
}
else{
digitalWrite(led6, LOW);
digitalWrite(Buzzer, LOW);
}
}

121
17.7 Prática experimental 7 - Potenciômetro
Objetivo: Fazer um led piscar de forma mais rápida ou mais lenta
conforme os parâmetros de um potenciômetro.
Componentes: 1 Potenciômetro de 10k, 1 Led de Alto Brilho, 01
Resistor de 300k e cabos diversos.
Procedimento: Conforme o valor do potenciômetro é alterado, o led
pisca de forma mais rápida ou mais lenta. Veja a figura a seguir:

Código:
const int PinoPotenciometro = 0;
const int Led = 13;
int ValorPot = 0;
void setup() {
pinMode(Led, OUTPUT);
}
void loop() {
ValorPot = analogRead(PinoPotenciometro);
digitalWrite(Led, HIGH);
delay(ValorPot);
digitalWrite(Led, LOW);
delay(ValorPot);
}

Este código deve ser de fácil entendimento. Primeiro declara-se que o


pino do potenciômetro será o Analógico 0 e será constante:
const int PinoPotenciometro = 0;

122
Depois tem-se um led no pino13 que também será constante:
const int Led = 13;
Então declara-se uma variável do tipo inteira para armazenar os valores
do potenciômetro. Esta variável irá de 0 a 1023, pois estes são os valores que a
entrada analógica pode variar por termos uma resolução de 10 bits.
Declara-se o pino do Led como saída no setup, como já feito na maioria
dos programas e então vem o loop principal:
void loop() {
ValorPot = analogRead(PinoPotenciometro);
digitalWrite(Led, HIGH);
delay(ValorPot);
digitalWrite(Led, LOW);
delay(ValorPot);
}
Primeiramente, assimila-se o valor lido no Pino do Potenciômetro à
variável ValorPot, ou seja, ao valor do potenciômetro. Então liga-se o Led.
Espera-se um tempo, que varia de 0 a 1023 porque são esses valores que o
potenciômetro pode ter, e desliga-se o led. Novamente espera-se o tempo e
volta-se para a primeira instrução do loop para fazer a nova leitura de uma nova
posição do potenciômetro.

17.8 Prática experimental 8 - Projeto Sensor de Estacionamento


Fundamentação teórica: O Sensor Ultrassônico HC-SR04 registra a
posição dos objetos, realiza a medição de distâncias, mede níveis e conta
objetos. É capaz de medir distâncias de 2cm a 4m com ótima precisão.
Objetivo: conhecer o Sensor Ultrassônico e desenvolver um projeto
semelhante aos sensores de estacionamento utilizados nos carros.
Componentes: Sensor Ultrassônico HC-SR04, 4 pinos (VCC, Trigger,
ECHO, GND), Protoboard, Leds: verde, amarelo, vermelho, resistores de 300K.
Procedimento: Este possui um circuito pronto com emissor e receptor
acoplados e 4 pinos (VCC, Trigger, ECHO, GND) para realizar a medição.
3. Para começar a medição é necessário alimentar o módulo e colocar o
pino Trigger em nível alto por mais de 10s. Assim o sensor emitirá uma onda
sonora que ao encontrar um obstáculo rebaterá de volta em direção ao módulo,

123
sendo que neste tempo de emissão e recebimento do sinal o pino ECHO ficará
em nível alto. Logo o cálculo da distância pode ser feito de acordo com o tempo
em que o pino ECHO permaneceu em nível alto após o pino Trigger ter sido
colocado em nível alto.
4. Alimentando o Circuito: o primeiro passo para montar o circuito é
alimentar a Protoboard com os pinos 5V e GND do Arduino.

5. LEDs e Resistores:
Agora, coloca-se os LEDs e os Resistores na Protoboard.

6. Lembrando:
A maior perna do LED é o positivo e a menor o negativo!!
OBS: Não faz diferença se conectar os resistores no positivo ou
negativo dos LEDs, caso conectado no negativo, basta ligar o positivo do
LED no 5V, o resistor no negativo e na porta digital.

7. Conectando os LEDs:
Conectar os Resistores que estão no positivo dos LEDs nas portas
digitais do Arduino.

124
Assim temos:
LED Verde: Porta 2
LED Amarelo: Porta 3
LED Vermelho: Porta 4

8. Conectando os LEDs:
Conectar os Resistores que estão no positivo dos LEDs nas portas digitais
do Arduino.
9. Alimentação Ultrassônico:
Conectar o Sensor Ultrassônico na Protoboard e ligar o pino VCC nos 5V e
o pino GND no negativo.

10. Conectando no Arduino:


Conectar o Sensor Ultrassônico na Protoboard e ligar o pino VCC nos 5V e
o pino GND no negativo.
Dessa forma tem-se:
Trig: Porta 5
Echo: Porta 6

125
11. Conectando Buzzer:
Adicionar o Buzzer ao circuito para se ter efeitos sonoros.

Código:
#include <Ultrasonic.h>

#define TRIGGER_PIN 12
#define ECHO_PIN 13

Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);

void setup()
{
Serial.begin(9600);
}

void loop()
{
float cmMsec, inMsec;
long microsec = ultrasonic.timing();
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);
Serial.print("MS: ");
Serial.print(microsec);
Serial.print(", CM: ");
Serial.print(cmMsec);
Serial.print(", IN: ");
Serial.println(inMsec);

126
delay(1000);
}

Incluindo Biblioteca
Para programar o sensor, é necessário adicionar-se a biblioteca
“Ultrasonic.h”. Pode ser baixada pelo link. http://portaldoarduino.com.br/wp-
content/uploads/2019/03/Ultrasonic.zip

12. Para adicionar a biblioteca no Arduino, seguir o passo a passo abaixo:

1- Abra a IDE do Arduino


2- Clique em Sketch
3- Selecione Incluir Biblioteca
4- Clique em Adicionar Biblioteca.zip

Selecione o arquivo .zip e clique em abrir.


Pronto, a biblioteca necessária já está instalada.
Código:
#include "Ultrasonic.h" // Esse comando é para incluir a biblioteca no programa

Ultrasonic ultrasonic (8,9); // são as portas do sensor, Trigger na porta 5 e Echo na


porta 6

127
// declarando os LEDs e o Buzzer e suas portas onde estão conectados

int ledVerde = 2;
int ledAmarelo = 3;
int ledVermelho =4;
int buzzer = 5;

// Variáveis de controle

long microsec = 0;
float distanciaCM = 0;

void setup() {

Serial.begin(9600); // iniciando o monitor serial na velocidade 9600

// Declarando os LEDs e o Buzzer com saídas

pinMode(ledVerde,OUTPUT);
pinMode(ledAmarelo,OUTPUT);
pinMode(ledVermelho,OUTPUT);
pinMode(buzzer,OUTPUT);
}

void loop() {

// lendo o sensor
microsec = ultrasonic.timing();

// convertendo a distância para centímetros

distanciaCM = ultrasonic.convert(microsec, Ultrasonic::CM);

ledDistancia();

// mostrar a distância no monitor serial


Serial.print(distanciaCM);

// unidade de medida

Serial.println(" cm");
delay(500);
}

128
void ledDistancia() {

// se inicia com todos os LEDs apagados


digitalWrite(ledVerde,LOW);
digitalWrite(ledAmarelo,LOW);
digitalWrite(ledVermelho,LOW);

// Se a distância for menor ou igual a 30cm e maior ou igual 20

if (distanciaCM <=30 and distanciaCM >= 20) {


digitalWrite(ledVerde,HIGH); // LED Verde liga
}

// Se a distância for menor ou igual a 20 cm e maior ou igual 10

if (distanciaCM <=20 and distanciaCM >= 10) {

digitalWrite(ledAmarelo,HIGH); // LED amarelo acende


tone (buzzer, 2500, 100); // buzzer começa a emitir som
}

// se a distância for menor que 10cm


if (distanciaCM < 10) {
digitalWrite(ledVermelho,HIGH); // LED Vermelho acende
tone (buzzer, 2500, 1000); // Buzzer emite som mais intenso
}
}

17.9 Prática experimental 9 - Sistema de Alarme Codificado com Arduino,


Display 16×2 e Sensor de Vibração SW-420
Objetivo: Montar um sistema de monitoramento de segurança por
alarme sonoro com desarme mediante senha, utilizando um Arduino UNO, um
Sensor de Vibração SW-420 e um Display 16×2.
Componentes: 1 placa Arduino Uno, Módulo Sensor de Vibração SW-
420, Teclado Matricial 4×4, Display LCD 16×2 BackLight Azul, Buzzer, Resistor
480 ohms, Led Vermelho 5mm e 1 um potenciômetro de 10k.
Procedimento: 1. Inicialmente liga-se o display LCD aos pinos do
Arduino conforme imagem abaixo. Os pinos digitais de 2 ao 7 são de controle do
LCD (demonstrados com fios de cor amarela), Alimentação 5V e GND são

129
ligados em comum ao Arduino. O display também necessita de um
potenciômetro de 10k para ajuste de contraste conforme demonstrado acima.
2. O teclado matricial deve ser conectado como demonstra a ilustração
(fios de cor laranja), como se trata de apenas contatos, o teclado não necessita
de alimentação.
3. O sensor de vibração é alimentado por 5V e o pino que envia o
sinal D0 é conectado na entrada analógica A3 do Arduino. O Buzzer e LED são
ligados respectivamente no pino 9 e A4, a saída de sinal para o Buzzer é
modulada por PWM, por isso o pino 9 foi o escolhido por ser um pino com saída
PWM no Arduino UNO.
4. Quando necessária a senha, o programa mapeará os botões
pressionados no teclado e apresentará ao usuário através do display LCD. Para
este protótipo o alarme sonoro é realizado por um Buzzer, mas para cada
aplicação este dispositivo sonoro pode ser alterado, adaptando buzinas ou
sirenes (nestes casos realizando os acionamentos por relé).
A montagem do protótipo pode ser observada pela figura abaixo:

Abaixo tem-se na prática a montagem do protótipo:


Código:
#include //inclui a biblioteca do teclado matricial 4x4
#include //inclui a biblioteca para o display Lcd 16x2
#define buzzer 9 // define o pino 9 para o buzzer
#define sinal_sensor A2 // define o pino A2 para a entrada de sinal
#define led_alarme A4 // define o pino A4 para o led rgb de alarme
#define button_desativador A1 // define o pino A1 como desativador
alternativo
int ativa_alarme; // Cria uma variavel int de nome ativa_alarme
int desliga_alarme; // cria uma variavel int de nome desliga_alarme
int leitura_sensor; // cria uma variavel int de nome leitura_sensor
byte pinosLinhas[] = {8,A3,10,11}; // cria um vetor de 4 colunas

130
byte pinosColunas[] = {A0,A5,12,13}; // cria um vetor de 4 colunas
char senha[4] = {'5','9','3','8'}; // cria um vetor char de nome senha de
4 colunas com caracteres definidos
char vetor[4]; // cria um vetor char para armazenar os digitos do teclado
int i; // cria uma variavel de nome i
char teclas[4][4] = {{'1','2','3','A'}, // matriz 4x4 com caracteres
definidos
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}};
Keypad teclado1 = Keypad( makeKeymap(teclas), pinosLinhas, pinosColunas,
4, 4); // cria a variavel de nome teclado1 para armazenar os caracteres
LiquidCrystal lcd ( 7, 6, 5, 4, 3, 2); // define os pinos para
comunicação com o display lcd
void setup() {
pinMode(buzzer, OUTPUT); // define o pino buzzer como saída
pinMode(sinal_sensor,INPUT); // define o pino de sinal do sensor de
vibrações como entrada
pinMode(led_alarme, OUTPUT); // define o pino do led como saída
pinMode(button_desativador,INPUT); //define o desativador alternativo
como entrada
lcd.begin(16,2); // inicia a comunicação com o display lcd
lcd.setCursor(0,0); lcd.print("ALARME");} // escreve ALARME no display na
posição (0,0)
void loop() {
lcd.setCursor(8,0);
lcd.print("OFF"); // indica que o alarme está desabiitado no display
digitalWrite (led_alarme ,LOW); // deixa o led de alarme desligado
char tecla_pressionada = teclado1.getKey(); // verifica se alguma tecla
foi pressionada
if (tecla_pressionada == '#' ) { // se # for pressionado executa o
codigo abaixo
lcd.setCursor(8,0); lcd.print("ON "); // indica no display que o alarme
está ativo
digitalWrite (buzzer, HIGH); delay(50); // sonorização
while ( tecla_pressionada != '*') { // enquanto * não for
pressionado o programa executa no laço abaixo

131
leitura_sensor = digitalRead(sinal_sensor); // realiza a leitura de sinal
advindo do sensor de vibrações
tecla_pressionada = teclado1.getKey(); // verifica se alguma tecla foi
pressionada
//******************************************ALARME
if (leitura_sensor == HIGH) { // se receber sinais do sensor de
vibração, executa o codigo abaixo
analogWrite (buzzer, 130); delay(100); // sonorizaão alarme inicial
analogWrite (buzzer, 150); delay(200); // sonorização alarme inicial
analogWrite (buzzer, 255); delay(100); // sonorização alarme inicial
analogWrite (buzzer, 100); delay(300); // sonorização alarme inicial
while ( desliga_alarme != HIGH){ // enquanto o botão de
desativador alternativo não for ativo, executa o laço abaixo
desliga_alarme = digitalRead(button_desativador); // realiza a leitura do
botao alternativo
digitalWrite (led_alarme ,HIGH); // liga o led rgb de alarme
digitalWrite (buzzer, HIGH); delay(100); // Alarme
digitalWrite (buzzer, LOW); delay(100); // Alarme
tecla_pressionada = teclado1.getKey(); // verifica se alguma tecla foi
pressionada
//******************************************SENHA
if (tecla_pressionada){ // se alguma tecla for pressionada executa
abaixo
vetor[i] = tecla_pressionada; // armazena no vetor[4] as teclas
pressionadas
lcd.setCursor(i,1); lcd.print(tecla_pressionada); // indica no display a
tecla pressionada
i++; // contador para definir que a senha seja de 4 digitos
if(i==4){ // se o ultimo digito da senha for pressionado, executa
abaixo
if(vetor[0] == senha[0] &&
vetor[1] == senha[1] &&
vetor[2] == senha[2] &&
vetor[3] == senha[3]){ // compara o vetor das teclas
pressionadas com a senha pré definida
lcd.setCursor(7,1); lcd.print("OK"); delay(1000); // indica que a senha
digitada foi correta
lcd.setCursor(0,1); lcd.print(" "); // limpa o display

132
lcd.setCursor(6,0); lcd.print(" "); // limpa o display
i=0; // zera o contador
return 0;} // desativa o alarme retornando o codigo para o inicio
else { // se a senha não for correta, executa abaixo
lcd.setCursor(0,1); lcd.print("SENHA INVALIDA "); digitalWrite (buzzer,
HIGH); delay(1000); // indica no display que a senha digitada não é
correta
lcd.setCursor(0,1); lcd.print(" "); //limpa o display
i=0;} //zera o contador
}}}}
//******************************************FIM DO ALARME
else { analogWrite(buzzer,0); // caso o alarme não estiver ativo, garante
o buzzer desativado
}}}}
Mergulhando no projeto - Software
5. Inicialmente instala-se a biblioteca KEYPAD, que pode ser encontrada
facilmente na web para download. Já no sketch incluímos a biblioteca
posteriormente instalada e do LCD.
6. Logo após, são nomeados os pinos do LED, Buzzer, entrada de sinal
e botão desativador. Variáveis do tipo ‘’int’’ são criadas para controle e
recebimento de dados do sensor e vetores ‘’Byte’’ para mapeamento dos pinos
do teclado byte pinosLinhas[], byte pinosColunas[]. Um vetor ‘’Char’’ criado para
pré-definir a senha e outro para armazenar os dígitos no momento de alarme
para comparação entre eles no programa, char teclas [4][4] indica os caracteres
de cada tecla.
7. Uma variável de nome teclado1 é criada na biblioteca Keypad para
armazenar o caractere pressionado no teclado. Essa série de definições e
inclusões termina com o mapeamento dos pinos utilizados no display LCD
LiquidCrystal lcd (7, 6, 5, 4, 3, 2).
Função Setup
8. Na função setup define-se as portas onde conectados o Buzzer e LED
de alarme como saídas digitais:
pinMode (led_alarme, OUTPUT)
E os sinais do sensor de vibração e o botão desativador como entradas:
PinMode(sinal_sensor, INPUT)

133
Em
lcd.begin(16,2)
Inicia-se a comunicação com o display LCD e escreve na linha 1 do
display a palavra “ALARME” com:
lcd.print("ALARME")

Função Loop
Alarme
A função Loop se inicia escrevendo no display a palavra OFF:
lcd.setCursor(8,0); lcd.print("OFF")
Indicando que o alarme está no momento desativado. A variável char
tecla_pressionada monitora e armazena as teclas pressionadas no teclado:
tecla_pressionada = teclado1.getKey()
Caso a tecla ‘’#’’ for pressionada, o programa entra para realizar os
comandos do bloco IF que ativando o alarme escrevendo ON no display. Neste
estágio do programa, o sistema monitora o sensor de vibrações constantemente
mas esta ação ainda pode ser revertida ao pressionar a tecla‘’*’’.
Enquanto a tecla ‘’*’’ não for pressionada ou o sensor de vibrações if
(leitura_sensor == HIGH) não enviar o comando para o Arduino, o programa roda
dentro do laço while:
while( tecla_pressionada != '*')
No momento que o Arduino recebe o sinal HIGH do sensor, ele interpreta
que uma vibração foi detectada e que o alarme deve ser disparado:
if (leitura_sensor == HIGH)
Com o alarme ativo o programa desce uma sequência de sonorização e
cai no laço while:
while ( desliga_alarme != HIGH)
que dispara o aviso sonoro do Buzzer intermitente. Para desativar o
alarme e sair deste laço o programa tem duas opções, ou o botão desativador
de emergência seja acionado levando a variável desliga_alarme para nível LOW
ou por senha.
O botão desativador no nosso protótipo está diretamente ligado ao nível
alto HIGH, deixando assim a opção de desativar o alarme somente por senha.
Já com o alarme ativo e o aviso sonoro intermitente o programa e o display

134
aguardam a senha correta ser digitada para a desativação do sistema. A senha
foi definida inicialmente mas pode ser alterada de acordo com a
preferência do usuário em:
char senha[4] = {'5', '9', '3', '8'} //um vetor de 4 posições
Senha
Se alguma tecla for pressionada if (tecla_pressionada), o programa
armazena está tecla em:
vetor[i] = tecla_pressionada;
O contador i++ auxilia até o preenchimento por completo da senha de 4
dígitos. Após o preenchimento da senha digitada por completo ele é comparado
com a senha pré-definida:
if(vetor[0] == senha[0] && vetor[1] == senha[1] && vetor[2] ==
senha[2] && vetor[3] == senha[3])
O programa interpreta que a senha é correta quando está comparação
acima seja verdadeira. Caso a comparação for verdadeira o alarme é desativado
desabilitando o Buzzer, e escreve OK no display e por fim zera o contador i++ .
Caso a senha for esteja incorreta escreve no display :
lcd.print("SENHA INVALIDA")
e retorna o programa para o laço de alarme com o Buzzer emitindo som
intermitente zerando também o contador i++ para uma nova tentativa de senha.
Hardware
Módulo Sensor de Vibração SW-420

9. O módulo SW-420 foi desenvolvido para detecção de vibrações,


através do trimpot na PCI é possível ajustar a sua sensibilidade de acordo
com sua aplicação.
Quando houverem vibrações na superfície onde instalado o sensor,
um nível alto HIGH será aplicado no pino D0 no mesmo instante também
ascenderá o LED verde na PCI sinalizando a captação de vibração. As
aplicações para este tipo de sensor são inúmeras.

135
Pinagem:
– VCC: 3,3 – 5V
– GND: GND
– D0: Saída Digital
Teclado Matricial 4×4

10. O teclado matricial 4×4 como o nome diz é uma matriz de contatos
que quando algum digito é pressionando o contato se fecha de um pino para
outro. O esquema de contatos pode ser observado abaixo, linhas e colunas com
8 pinos. Exemplo: Quando a tecla 1 é pressionada os pinos 1 e 5 se fecham
(Linha 1, Coluna 1).

Display LCD 16×2 BackLight Azul

11. O Display LCD 16×2 possibilita e interação do programa com o


usuário. As mensagens podem ser enviadas simultaneamente com o
processamento no programa possibilitando assim o envio de dados, texto e
sinais lidos nas entradas do microprocessador. O LCD possui 16 colunas e 2
linhas com luz de fundo azul e escrita branca.

136
17.10 Prática experimental 10 - Sensor de Luz
Fundamentação teórica: Fotoresistor LDR é um componente eletrônico
muito utilizado, sua função é semelhante ao resistor comum de limitar a corrente
elétrica que passa sobre ele, porém sua resistência varia de acordo com a
intensidade da luz. Quanto mais luz incidir sobre o componente, menor a
resistência. Este sensor de luminosidade pode ser utilizado em projetos com
Arduino e outros microcontroladores para alarmes, automação residencial,
sensores de presença e etc.
Objetivo: Utilizar um Fotoresistor LDR para criar um sistema de
iluminação muito semelhante aos utilizado nos postes de iluminação de cidades,
onde sempre que o LDR detectar baixa luminosidade um LED é acesso.
Componentes: 1 placa a protoboard, sensor LDR, 1 resistor de 10KΩ,
1 resistor de 1KΩ e 1 LED azul.

Procedimento: 1. Primeiro é preciso alimentar a protoboard com o GND


e o 5V do Arduino. Depois, encaixe o Sensor LDR na protoboard, um dos
terminais deve ser ligado aos 5V e outro ao GND, a um resistor de 10KΩ e na
Porta Analógica A0. Por fim, o menor terminal do LED deve estar conectado ao
GND e o maior a um resistor de 1KΩ e na Porta Digital 4.
2. Conhecer as novas funções que a serem utilizadas: Serial.begin
Essa é a primeira função utilizada quando faz-se a comunicação serial,
ela configura a taxa de comunicação em bits por segundo. Deve ser escrita
dessa forma: Serial.begin(velocidade);

137
3. Serial.println
Essa função imprime dados no monitor serial como texto. Deve ser
escrita da seguinte maneira: Serial.println(valor);
Código:
int led = 4; // Definindo que o LED está na porta digital 4
int sensor = A0; // Definindo que o Sensor está na porta analógica A0
int valorsensor = 0;// Variável que armazena o valor da leitura do sensor
void setup() { // inicia o void setup
Serial.begin(9600); // Inicia a comunicação serial na velocidade de 9600
pinMode (led, OUTPUT); //Define LED como saída
pinMode (sensor, INPUT); //Define sensor como entrada
}
void loop() { // Inicia o void loop
Serial.println(valorsensor); // Imprimi o valor do sensor no monitor serial
valorsensor = analogRead (sensor);// Faz a leitura analógica da porta em que o Sensor
esta conectado
if((valorsensor) < 300){ //Se o valor de valor do sensor for menor que 300
digitalWrite(led, HIGH);// O LED acende
} else{ // Se não
digitalWrite(led, LOW);//O LED fica apagado
}
}

5. Para ver o valor que o sensor está lendo em tempo real, pressione a
tecla Ctrl + shift + m e irá abrir o monitor serial.

A velocidade deve estar em 9600 para se conseguir ver os dados do


sensor.

17.11 Prática experimental 11 – Incrementando Sensor de Luz no Módulo


Relé
Objetivo: Acender uma lâmpada utilizando o Módulo Relé.

138
Componentes: 1 placa a protoboard, 1 sensor LDR, 1 resistor de 10KΩ,
1 módulo relé e 1 lâmpada.
Procedimento: Primeiro é preciso alimentar a protoboard com o GND e
o 5V do Arduino. Depois, encaixe o Sensor LDR na protoboard, um dos terminais
deve ser ligado aos 5V e outro ao GND, a um resistor de 10KΩ e na Porta
Analógica A0. O pino IN do relé deve estar conectado à Porta Digital 4. O pino
GND do relé precisa estar no GND do circuito. O pino VCC do relé deve estar
conectado ao 5V do circuito. Um fio deve ser conectado a lâmpada e no contato
COM do relé, outro na rede elétrica. Um fio da rede elétrica precisa estar
conectado ao contato NO (normalmente aberto) do relé.
Atenção: A lâmpada deve ficar o mais longe do sensor possível, caso
contrário ela ficará piscando sem parar.
OBS 1: A única alteração que é preciso fazer na programação é inverter
o digitalWrite para LOW, uma vez que o relé funciona de forma invertida e sua
programação é igual a de um LED. Este Módulo Relé permite uma integração
com uma ampla gama de microcontroladores como o Arduino. A partir das saídas
digitais pode-se, através do relé, controlar cargas maiores e dispositivos como
motores AC ou DC, eletroímãs, solenoides e lâmpadas incandescentes.

OBS 2: Este módulo tem um canal sendo assim concebido para ser
integrado para controlar até 1 relé. O módulo é equipado com um relé de alta
qualidade, com carga nominal 10A/250VAC, 10A/125VAC, 10A/30VDC. Cada
canal possui um LED para indicar o estado da saída do relé.

Código:
int rele= 4; // Definindo que o Relé está na porta digital 4
int sensor = A0; // Definindo que o Sensor está na porta analógica A0

139
int valorsensor = 0; // Variável que armazena o valor da leitura do sensor
void setup() { // inicia o void setup
Serial.begin(9600); // Inicia a comunicação serial na velocidade de 9600
pinMode (rele, OUTPUT); //Define Relé como saída
pinMode (sensor, INPUT); //Define sensor como entrada
}
void loop() { // Inicia o void loop
Serial.println(valorsensor); // Imprimi o valor do sensor no monitor serial
valorsensor = analogRead (sensor);// Faz a leitura analógica da porta em que o Sensor
esta conectado
if((valorsensor) < 300){ //Se o valor de valor do sensor for menor que 300
digitalWrite(rele, LOW);// O relé é acionado
} else { // Se não
digitalWrite(rele, HIGH);// O relé é desligado
}
}

17.12 Prática experimental 12 – Controlando Servo Motor


Fundamentação teórica: Os servos motores são dispositivos
eletromecânicos utilizados para movimentar com precisão determinados objetos,
permitindo-o girar em ângulos ou distâncias específicas, com garantia do
posicionamento e velocidade. Ele nada mais é que um motor elétrico rotativo
acoplado a um sensor que passa a condição de seu posicionamento, permitindo
o controle preciso da velocidade, aceleração e da posição angular.

Objetivo: Fazer o movimento do servo motor através do


potenciômetro.
Componentes: 1 Micro Servo 9g SG90, 1 placa protoboard, 1
potenciômetro, fios: preto ou marron, vermelho e amarelo.
Procedimento: Primeiro é necessário alimentar a protoboard com o
GND e os 5V do Arduino para fornecer energia ao servo motor e o potenciômetro.
O primeiro terminal deve estar conectado ao negativo, o segundo na Porta
Analógica A0 do Arduino e o ultimo terminal precisa ser conectado no 5V. O fio
de cor preta ou marrom do servo motor, deve ser conectado ao GND, o fio de
cor vermelha nos 5V e o de cor amarela na Porta Digital 3.

140
Na programação, será utilizado uma biblioteca.
Resumidamente, uma biblioteca nada mais é que um trecho de software
que fornece funcionalidade específica a um programa.
Baixar a biblioteca do servo motor em .zip:
Link: https://downloads.arduino.cc/libraries/github.com/arduino-libraries/Servo-
1.1.8.zip?_gl=1*1v87im2*_ga*NjY0NDQ1NDQ1LjE2MjY1NTgxNTM.*_ga_NEXN8H46L5*MT
YzMTIxNzkxNC4zMy4xLjE2MzEyMTgwNzAuMA..

Código:
#include <Servo.h> // Incluindo a biblioteca
Servo servo; // Objeto do tipo Servo

int pot = A0; // Definindo que o Potenciômetro está na porta analógica A0


int servomotor = 3; // Definindo que o Servo Motor está na porta digital 3
int valorpot; // Variável que armazena o valor da leitura do potenciômetro
void setup(){ // Inicia o void setup

servo.attach(servomotor); // Associando o pino digital ao objeto servo


pinMode(pot, INPUT); // Defininindo o Potenciômetro como Entrada
}

void loop(){ // Inicia o void loop

valorpot = analogRead(pot); //Lê o valor do potenciômetro


valorpot = map(valorpot, 0, 1023, 0, 180); // transformando uma escala de 0-1023 em
uma escala 0 a 180
servo.write(valorpot); //Faz com que o servo se movimente de acordo com o valor do
potenciômetro

delay(1);

141
17. 13 Prática experimental 13 - Sensor de Som
Objetivo: Acionar um LED quando batermos palmas.
Componentes: 1 protoboard, 1 sensor de som, 1 resistor de 1KΩ e 1
LED azul.
Fundamentação teórica: O Módulo Sensor de Som, possibilita a
detecções de sons, variando o estado de sua saída digital caso detectado um
sinal sonoro. Possui um microfone de condensador elétrico e pode ser usado em
sistemas de alarme por exemplo.

O limite de detecção pode ser ajustado através do trimpot presente no


sensor que regulará a que nível de sinal sonoro a saída digital vai alterar seu
estado.

OBS: Esse tipo de sistema é muito utilizado na automação residencial.


Procedimento: Primeiro é preciso alimentar a protoboard com o GND e
o 5V do Arduino. Depois, encaixe o Sensor de Som na protoboard, o pino VCC
deve ser conectado aos 5V, o GND ao GND e o pino OUT na Porta Digital 2 do
Arduino. O menor terminal do LED deve ser conectado ao GND e o maior a um
resistor de 1KΩ e na Porta Digital 3 do Arduino.

142
Código:
int led = 3; // Definindo que o LED está na porta digital 3
int sensor = 2; // Definindo que o Sensor está na porta digital 2
int estadoSensor; // Variável que armazena o valor da leitura do sensor
void setup () { // inicia o void setup
pinMode(led, OUTPUT); // Define LED como saída
pinMode(sensor, INPUT); // Define Sensor como entrada
}
void loop () { // incia o void loop
if (digitalRead(sensor) == HIGH){ // Se a leitura do Sensor for igual a HIGH (alto)
estadoSensor = digitalRead(led); // Lê o estado atual do LED e armazena
digitalWrite(led, !estadoSensor); // Muda o estado do LED, ou seja, o LED acende
delay(500); // Tempo de 500 milissegundos
}
}

17.14 Prática experimental 14 – Incrementando Sensor de Som


Objetivo: Acionar uma Lâmpada quando batermos palmas.
Componentes: 1 protoboard, 1 sensor de som, 1 resistor de 1KΩ,1
lâmpada e 1 módulo relé.
OBS: Ao invés de se utilizar o LED, pode-se fazer uma alteração no
circuito e se utilizar uma lâmpada, logo será necessário usar o Módulo Relé.
Procedimento: 1. Primeiro é preciso alimentar a protoboard com o GND
e o 5V do Arduino. Depois, encaixe o Sensor de Som na protoboard, o pino VCC
deve ser conectado aos 5V, o GND ao GND e o pino OUT na Porta Digital 2 do
Arduino.
2. O pino IN do relé deve ser conectado na Porta Digital 3, o pino GND
no GND e o pino VCC no 5V.
3. Um fio deve ser conectado a lâmpada e no contato COM do relé, outro
na rede elétrica.
4. Um fio da rede elétrica precisa estar conectado ao contato NO
(normalmente aberto) do relé.
Atenção: Caso você não tenha experiência com circuitos elétricos, para
evitar o risco de choques peça ajuda a uma pessoa capacitada.

143
Código:
int rele = 3; // Definindo que o Relé está na porta digital 3
int sensor = 2; // Definindo que o Sensor está na porta digital 2
int estadoSensor; // Variável que armazena o valor da leitura do sensor
void setup () { // inicia o void setup
pinMode(rele, OUTPUT); // Define o Relé como saída
pinMode(sensor, INPUT); // Define Sensor como entrada
digitalWrite(rele, HIGH); // O relé inicia desligado
}
void loop () { // incia o void loop
if (digitalRead(sensor) == HIGH){ // Se a leitura do Sensor for igual a HIGH (alto)
estadoSensor = digitalRead(rele); // Lê o estado atual do Relé e armazena
digitalWrite(rele, !estadoSensor); // Muda o estado do Relé, ou seja, o Relé é
acionado
delay(500); // Tempo de 500 milissegundos
}
}

17.15 Prática experimental 15 - Monitoramento de Temperatura


Objetivo: Criar um sistema de monitoramento de temperatura utilizando
o Display LCD e o sensor de temperatura LM35.
OBS: O Sensor de Temperatura LM35DZ pode ser uma ótima opção se
você busca precisão, além de ter uma fácil comunicação com microcontroladores
como o Arduino. Esse sensor é muito usado para projetos de automação
residencial ou até mesmo industrial, ele possui faixa de leitura de 0°C a 100°C.
Componentes: 1 placa protoboard, display LCD e sensor de
temperatura.

144
Procedimento: Primeiro é necessário se alimentar a protoboard com o
GND e os 5V do Arduíno. O primeiro terminal do sensor de temperatura deve
estar conectado ao 5V do circuito. O segundo terminal do sensor deve ser
conectado à Porta Analógica A0. O terceiro terminal do sensor precisa ser ligado
ao GND do circuito. O pino GND do display precisa estar conectado ao GND do
circuito. O pino VCC do display deve ser conectado ao 5V. O pino SDA
conectado na Porta Digital A4. O pino SCL conectado na Porta Digital A5.

Código:
// Incluindo bibliotecas necessárias

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

int sensor = A0; // O pino do sensor está na porta analógica A0


float temperatura = 0; // Variável do tipo float
void setup() {

pinMode(sensor, INPUT); // Definindo o sensor como saida


lcd.begin(16, 2); // Dimensão da tela
lcd.setBacklight(HIGH); //Liga a luz de fundo
}

void loop() {

145
temperatura = (analogRead(sensor) * 0.0048828125 * 100); // Lendo sensor
lcd.setCursor(6, 0);
lcd.print(temperatura); // imprime na tela o valor da temperatura
lcd.setCursor(0, 0);
lcd.print("TEMP:"); // imprime o texto
lcd.setCursor(11, 0);
delay(2000); //INTERVALO DE 2 SEGUNDOS
}

17.16 Prática experimental 16 - Sensor de Movimento e Presença


Fundamentação teórica: Também conhecido como Sensor PIR, seu
funcionamento se baseia a partir detecção de calor emitido pelo corpo humano.
O Sensor PIR consegue detectar o movimento de objetos que estejam em uma
área de até 7 metros, caso algo ou alguém emitindo calor acima de 0 graus se
movimentar nessa área o pino de alarme é ativado. É possível ajustar a duração
do tempo de espera para estabilização do PIR através do potenciômetro amarelo
embaixo do sensor assim como sua sensibilidade. A estabilização pode variar
entre 5-200 seg.

O Buzzer 5V é um componente para adicionar efeitos sonoros em


projetos eletrônicos como por exemplo, alarmes, sistemas de sinalização, jogos,
brinquedos, etc. O Buzzer do tipo Ativo contém um circuito oscilador embutido,
dessa forma basta você energizar o componente para que o mesmo comece a
emitir som.

OBS: O maior pino do Buzzer é positiva.


Objetivo: Identificar um objeto próximo ao sensor de movimento e em
seguida emitir um som de alerta.
Componentes: 1 LED vermelho, 1 Buzzer, 1 potenciômetro amarelo e
1 resistor de 1K Ω.

146
Procedimento: 1. Conectar o menor pino do Buzzer ao GND (negativo)
do circuito e o maior no Pino Digital D0 do NodeMCU.
2. O menor terminal do LED precisa ser ligado ao GND, e o maior em
um resistor de 1K Ω e no Pino Digital D1 da placa.
3. O Pino VCC do sensor deve ser conectado ao Vin do circuito.
4. O Pino OUT do sensor é conectado ao Pino Digital D2.
5. O Pino GND do sensor precisa ser ligado ao GND do circuito.

Código:
//Declaração das variáveis dos pinos digitais.

int Buzzer = 2; // Buzzer no pino D4 (GPIO 2)


int Led = 5; // Led no pino D1 (GPIO 5)
int SensorPIR = 4; //Sensor no pino D2 (GPIO 4)
int valorSensor = 0;
void setup() {

Serial.begin(115200); //Inicializando o serial monitor

//Definido pinos como saídas


pinMode(Buzzer,OUTPUT);
pinMode(Led,OUTPUT);
pinMode(SensorPIR,INPUT);

void loop() {
valorSensor = digitalRead(SensorPIR); // Faz a leitura do sensor
Serial.print("Valor do Sensor: "); // imprime no monitor serial
Serial.println(valorSensor); // imprime o valor do sensor no monitor.

// Se o sensor detectar movimentos

147
if (valorSensor == 1) {

// Alarme Ligado
tone(Buzzer,1000);
digitalWrite(Led, HIGH);
delay(5000); // tempo de 5 segundos para desligar o Alarme
noTone(Buzzer);
digitalWrite(Led, LOW);
} else {

// Alarme Desligado

noTone(Buzzer);
digitalWrite(Led, LOW);

}
}

17.17 Prática experimental 17 - Controle de acesso por RFID com Arduino


Objetivo: Desenvolver um sistema de controle de acesso usando
um Arduino Nano, um Módulo RFID, um Buzzer ou Módulo Buzzer, um Led
Vermelho, um Led Verde, uma Protoboard (Opcional) e Jumpers.
Componentes: Arduino Nano, Módulo RFID, Led verde, LED vermelho,
Buzzer ou Módulo Buzzer, Jumpers, Protoboard (Opcional).

Fundamentação teórica: O Módulo RFID contém 2 pinos de


alimentação, sendo 1 positivo (3.3 V) e 1 negativo (GND -); 1 pino SDA; 1 pino
SCK; 1 pino MOSI; 1 pino MISO; 1 pino IRQ; e 1 pino RST. A configuração dos
pinos nas entradas do Arduino segue conforme a tabela abaixo:

148
A biblioteca SPI.h é responsável pela manipulação das portas do módulo
e do Arduino.
O Arduino Nano pode ser substituído por um Arduino Uno, um Arduino
Mega ou um Arduino de qualquer outra versão compatível.

Software
Procedimento: Para programar o sistema A IDE do Arduino foi utilizada.
1. Primeiramente foram incluídas as bibliotecas responsáveis pela
manipulação das entradas e do Módulo RFID, que tem sua própria biblioteca.
2. Incluiu-se a biblioteca SPI.h e a MFRC522.h que pode ser incluída
navegando através do menu Sketch→Incluir Biblioteca → Adicionar Biblioteca
.ZIP e selecione o arquivo .ZIP que pode ser baixado em:
https://www.arduinolibraries.info/libraries/mfrc522

149
3. Feito a inclusão das bibliotecas corretas, definiu-se constantes para os
leds, o buzzer e os pinos SDA (ou SS) e RST. Para se armazenar a identificação
(ID) das tags do chaveiro e do cartão que acompanham o Módulo RFID, criou-
se a variável tagID (Armazena o ID da Tag) e o vetor tagsPermitidas[] contendo
as tags que se fará a leitura na primeira vez que inicializar o programa.
4. Como será feita uma verificação através de uma estrutura de repetição
foi usada uma variável booleana para liberar ou não dependendo do seu valor.
Criou-se então uma nova instância da biblioteca MFRC522 e passou-se como
parâmetro as constantes dos pinos SDA e RST.
5. A partir de agora entra-se na função de inicialização do Arduino, a
função setup. Na função setup inicializa-se a comunicação serial através do
comando Serial.begin(9600), assim como a comunicação SPI com o comando
SPI.begin(); e, por último, inicializou-se o leitor pela variável usada na instância
da biblioteca. Declarou-se os pinos dos leds e do buzzer como saída (Output) e
então pode-se programar a função de leitura dentro do loop.
6. As funções PICC_IsNewCardPresent() e PICC_ReadCardSerial()
verificam se há uma tag presente no sensor. Para a leitura das tags criou-se uma
função e inicializar a tagID como vazia (“”) e para armazenar os valores das tags
usamos a função uid e armazenamos então na variável tagID. Comparamos a
tag lida com os valores do vetor através da estrutura de repetição “for” e
atribuímos true a variável caso a tag esteja no vetor. A última verificação executa
as funções de acesso liberado e acesso negado dependendo do valor da variável
booleana de liberação.
7. As funções acessoLiberado() e acessoNegado() simplesmente
escrevem nos pinos dos leds e do buzzer(na frequência 1500hz) os valores de
ligado ou desligado. Abaixo segue o código deste tutorial:
Código:
#include <SPI.h>
#include <MFRC522.h>

#define verde 6
#define vermelho 7
#define buzzer 8
#define sda 10
#define rst 9

150
String tagID = "";
bool liberado = false;
//Vetor de ID's cadastrados
String tagsPermitidas[] = {"3d7f7d63","75f8375f"};
MFRC522 RFID(sda, rst);

void setup() {
Serial.begin(9600); // Comunicação Serial
SPI.begin(); // Comunicacao SPI
RFID.PCD_Init(); // Leitor RFID
pinMode(verde, OUTPUT);
pinMode(vermelho, OUTPUT);
pinMode(buzzer, OUTPUT);
}
void loop() {
// Verificação de existência de tag
if ( !RFID.PICC_IsNewCardPresent() || !RFID.PICC_ReadCardSerial() ) {
delay(50);
return;
}

tagID = "";
// Estrutura de repetição padrão para coleta dos valores das tags pela função uid
for (byte i = 0; i < RFID.uid.size; i++) {
tagID.concat(String(RFID.uid.uidByte[i], HEX));
}

// Estrutura de repetição para comparação com as tags que permitimos no vetor


for (int i = 0; i < (sizeof(tagsPermitidas)/sizeof(String)); i++) {
if( tagID.equalsIgnoreCase(tagsPermitidas[i]) ){
liberado = true; //Libera tag
}
}
if(liberado == true){
acessoLiberado();
Serial.println("Tag Cadastrada: " + tagID); //Exibe a mensagem "Tag Cadastrada"
e o ID da tag não cadastrada
} else{
acessoNegado();
Serial.println("Tag Não Cadastrada: " + tagID); //Exibe a mensagem "Tag
Cadastrada" e o ID da tag não cadastrada
}
delay(1000); //1 seg até a próxima leitura
}

151
void acessoLiberado(){
int bips = 1; //quantidade de bips
for(int j=0; j < bips; j++){
tone(buzzer,1500); //Liga buzzer
digitalWrite(verde, HIGH);
delay(100);
noTone(buzzer); //Desliga buzzer
digitalWrite(verde, LOW);
delay(500);
}
liberado = false;
}
void acessoNegado(){
int bips = 2; //quantidade de bips
for(int j=0; j < bips; j++){
tone(buzzer,500); //Liga buzzer
digitalWrite(vermelho, HIGH);
delay(100);
noTone(buzzer); //Desliga buzzer
digitalWrite(vermelho, LOW);
delay(100);
}
}

Hardware
OBS: A leitura das tag deve ser próxima o suficiente (máx 3cm) do Módulo
RFID. No sistema uso-se o Arduino Nano que pode ser substituído por
um Arduino Uno, um Arduino Mega ou um Arduino de qualquer outra versão
compatível. O buzzer pode ser substituído por um Módulo Buzzer ligando-o nos
5v.

17.18 Prática experimental 18 – Robô autônomo


Objetivo: Desenvolver um Robô Autônomo que desvia de objetos.
Componentes: Arduino Uno, ponte H, motores DC, sensor ultrassônico,
placa Protoboard, bateria de 9V, adaptador e chave on/off.
Procedimento: Montagem do Chassi

152
1. O primeiro passo é montar o Kit Chassi 2WD, seguindo o manual de
montagem que vem no Kit de Robótica.
OBS 1: O Kit acompanha um suporte para pilhas, como o robô consome
bastante energia, não é recomendado utilizar pilhas, e o Arduino Uno, irá ocupar
certo espaço, assim sendo, é sugerido que não coloque o suporte.

OBS 2: Lembre-se que os fios dos motores devem estar ligados iguais,
na mesma ordem, para que robô ande no sentido correto.

2. Conecte o VCC da Ponte H no pino Vin do Arduino e o GND no GND


do Arduino.

3. Realizar as conexões dos pinos da Ponte H no Arduino.

153
Desse modo tem-se:
ENA: Porta 10
ENB: Porta 11
IN1: Porta 7
IN2: Porta 6
IN3: Porta 5
IN4: Porta 4

4. Retire a proteção do adesivo e cole a Protoboard na parte da frente do


chassi. Será utilizada para conectar o Sensor Ultrassônico.

5.Primeiro, alimenta-se a Protoboard com o GND e os 5V do Arduino.


6. Conecte o pino VCC do Sensor no 5V da Protoboard e o pino GND no
GND da Protoboard.
7. Conecte o Pino Trig na Porta 3 do Arduino.
8. Conecte o Pino Echo na Porta 2 do Arduino.
OBS 3: Será utilizada uma bateria de 9V, o adaptador e a chave on/off.

154
Esquema completo da montagem do circuito do robô autônimo.

Código:
#include <Ultrasonic.h>; // incluindo a biblioteca para o Sensor Ultrassônico

#define TRIGGER_PIN 3 // Pino Trigger do sensor na porta 3


#define ECHO_PIN 2 // Pino Trigger do sensor na porta 2

Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);

// definindo as portas onde estão conectados os motores

#define IN1 7 //Pinos motor A (Direita)


#define IN2 6 //Pinos motor A (Direita)
#define IN3 5 //Pinos motor B (Esquerda)
#define IN4 4 //Pinos motor B (Esquerda)
#define ENA 10 //Pino velocidade motor A (Enable A)
#define ENB 11 //Pino velocidade motor B (Enable B)

void setup()
{

155
//Definindo os motores como saídas

pinMode(IN1,OUTPUT); //Saída para motor A


pinMode(IN2,OUTPUT); //Saída para motor A
pinMode(IN3,OUTPUT); //Saída para motor B
pinMode(IN4,OUTPUT); //Saída para motor B
pinMode(ENA,OUTPUT); //Controle velocidade motor A
pinMode(ENB,OUTPUT); //Controle velocidade motor B

//velocidades dos motores, caso note que seu robô está muito lento, altere os
valores.

analogWrite(ENA,120); //Controle PWM do motor A (0 a 255)


analogWrite(ENB,120); //Controle PWM do motor B (0 a 255)
delay(1000); //Aguarda 1 segundo antes de iniciar
} //end setup
void loop() //loop principal
{

//Robô inicia andando para frente

robo_frente();

float dist_cm = distancia(); //Declara variável que armazena a distância do


obstáculo

if(dist_cm < 20) //distância menor que 20cm?


{
decisao();
}

delay(100);
}

float distancia() //função que mede a distância em cm


{

float cmMsec; //declara a variável tipo float cmMsec

//Associa à variável tipo long microsec o tempo em microsegundos

long microsec = ultrasonic.timing();

//função da biblioteca para converter a distância em cm e associá-la a cmMsec

156
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
return(cmMsec); // retorna o valor em cm para a função delay(10);
delay(10);
}

void robo_frente() //função para mover o robô para frente lembre-se da tabela da
Ponte H
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}

void robo_esquerda() //função para mover o robô para esquerda


{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}

void robo_parado() //função para parar o robô


{

digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}

void decisao() //função para decidir a ação do robô


{
robo_parado();
delay(500);
robo_esquerda();
//esse tempo precisa ser avaliado para que o robô vire por volta de 90 graus
delay(400);
robo_parado();
delay(500);
}

Possíveis Problemas
1- O robô não anda ou está muito lento

157
Esse problema também é causado pela bateria.
OBS: Para evitar outros tipos de problemas, siga o passo a passo para
montar o circuito.
Esse problema acontece por conta da bateria. O robô consome muita
energia e as baterias comuns não suportam muito tempo, é aconselhável utilizar
baterias recarregáveis e fontes de 9V para realização dos testes.
Caso a bateria seja nova e o robô continuar lento, modifique o código na
seguinte parte:
analogWrite(ENA,120);
analogWrite(ENB,120);
Escolha uma valor entre 0 a 255 e teste.
2- O robô anda, mas começa a rodar e não para.
Esse problema também é causado pela bateria.
OBS: Para evitar outros tipos de problemas, siga o passo a passo para
montar o circuito.

17.19 Prática experimental 19 – Bobô autônomo via bluetooth


Fundamentação teórica: O Módulo Bluetooth HC-06 é feito para
comunicação sem fio em pequeno alcance, capaz de enviar dados para outro
dispositivo via Bluetooth com segurança e agilidade. Ele trabalha apenas como
Slave, ou seja, apenas recebe informações.

Aqui será possível controlar servos, motores, LEDs e outras diversas


aplicações.
Objetivo: Transformar o robô autônomo em um robô controlado Por App
via Bluetooth utilizando Smartphone.
Componentes: Smartphone, protoboard e resistores de 1KΩ.
Procedimento: Será realizada pequenas alterações no circuito anterior.
2. Primeiro remove-se o sensor ultrassônico e adiciona-se o Módulo
Bluetooth.

158
3. Sabe-se que apesar dele aceitar 5V para sua alimentação, o módulo
opera com a tensão máxima de 3.3V, e o Arduino fornece em suas portas 5V.
Assim, é necessário se fazer um divisor de tensão. Para isso será utilizado
os resistores de 1KΩ, dessa forma a tensão ficará em 2,5V.

4. O pino VCC do Módulo deve estar conectado nos 5V da protoboard, o pino


GND no GND, o pino TXD na porta RXD e o pino RXD deve estar conectado a
dois resistores de 1KΩ e na porta TXD do Arduino.
OBS: um dos resistores deve estar no GND da Protoboard.
VCC ---- 5V
GND ---- GND
TXD ---- RXD
RXD ---- TXD
Será conectado dois LEDs para simularmos um farol no robô.

159
4. As menores pernas dos LEDs são negativas, devem ser conectadas no
GND da Protoboard.
5. As pernas positivas devem ser conectadas aos resistores de 1KΩ e nas
portas 3 e 4 do Arduino.

Código:
//Definição dos pinos de saída para os dois motores e os LEDs
#define IN1 7
#define IN2 6
#define IN3 5
#define IN4 4
int led1 = 2;
int led2 = 3;

//Definindo pinos para o controle de velocidade dos motores


#define ENA 10
#define ENB 11
void setup() {

Serial.begin(9600); // inicia a porta serial, configura a taxa de dados para 9600


bps

// Declarando os motores e os LEDs como Saídas


pinMode(IN1,OUTPUT);
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
pinMode(ENA,OUTPUT);
pinMode(ENB,OUTPUT);

// Velocidade dos Motores, Caso esteja muito lento ou muito rápido altere os números
entre 0 a 255

160
analogWrite(ENA,110);
analogWrite(ENB,110);
}
char cha;
void loop() {
if (Serial.available() > 0) {
cha = Serial.read();
delay(2);
//Movimenta para frente
if(cha == 'F'){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
//Movimenta para trás
if(cha == 'B'){
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
//movimenta para direita
if(cha == 'R'){
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,LOW);
}
//movimenta para esquerda
if(cha == 'L'){
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
//Sem movimento
if(cha == '0'){
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
// Liga os LEDs

161
if(cha == '3'){
digitalWrite(led1,HIGH);
digitalWrite(led2,HIGH);
}
//Desliga LEDs
if(cha == '4'){
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
}
}
}

6. Ative o Bluetooth do celular e procure na lista o nome HC-06.


7. Ao clicar sobre o nome HC-06 é necessário inserir uma senha para
parear o celular com o módulo. A senha é 1234.
OBS: Caso essa senha não funcione tente 0000.
8. O robô será controlado baixando o aplicativo Arduino Bluetooth
Controller na Play Store.
Link:
https://play.google.com/store/apps/details?id=com.giumig.apps.bluetoothserial
monitor&hl=pt_BR&gl=US&pli=1

17.20 Prática experimental 20 – Carregar uma Sequência de LED usando o


ArduinoBlocks
Objetivo: Carregar uma sequência de LED usando o ArduinoBlocks
Componentes: LEDs, placa Arduino, resistor de 220 Ω.
Procedimento: 1. Conectar 5 LEDs à placa Arduino nos pinos 2, 3, 4, 5,
6 conectando um resistor de 220 Ω antes do led led anode (pin longo) e todos os
cátodos dos LEDs (short pin) serão unidos diretamente para GND:

3. Programação 1 para Sequência de Leds Pares e depois ímpares:


4. Ligue os Leds Pares e depois ímpares.

162
Código:

5. Programação 2 para Desligar o LED:


6. Ligue um led consecutivamente um atrás do outro da esquerda para a
direita (apenas um LED aceso). Quando chegar ao último, inicie a sequência
novamente.

Código:

7. Ligue os leds consecutivamente um após o outro da esquerda para a


direita até que todos continuem, então eles desligam consecutivamente na
ordem inversa em que foram ligados até que todos estão desligados e começam
de novo. Sequências.
8. Programação 3 para Leds Ligado / Apagado progressivo:

163
Código:

9. Programação 4 para de Leds Carro Fantasma:

Código:

10. Programação 5 para Leds de dentro para fora:


11. Faça uma sequência de LEDs que os LEDs iluminem de fora para
dentro e vice-versa, a velocidade, pode-se ajustá-la simplesmente mudando o
valor de uma variável.

164
Código:

17.21 Prática experimental 21 – LCD usando o ArduinoBlocks


Fundamentação teórica: Os LCDs permitem que você exiba caracteres
enviados de um controlador. Eles têm um baixo consumo para que possa ser
alimentado a partir da placa Arduino. Com ArduinoBlocks você pode se
comunicar com a tela através do protocolo de comunicação I2C, graças a
isso, a fiação é reduzida a apenas dois cabos de dados (mais dois cabos de
alimentação).
No protocolo de comunicação I2C, os cabos de dados são chamados de
SCL e SDA. O conector SCL se conecta ao pino Arduino A5 e o SDA ao pino
A4. Isso porque, no Arduino UNO, os pinos A4 e A5, além de atuarem como
entradas analógicas, funcionam como conectores para comunicação I2C.
Objetivo: Digitar um texto para que o dispositivo LCD informe na tela
essa informação.
Componentes: LCD, placa Arduino UNO,

165
Procedimento:
OBS: Os blocos de programação são encontrados na seção de
tela LCD. Os blocos mais proeminentes são os seguintes:
2. Início do LCD (I2C). Primeiro defini-se o tipo de tela que se tem,
adicionando o seguinte bloco na seção Inicializar:

Vários elementos podem ser instalados na comunicação I2C. Cada


componente tem um endereço individual a ser identificado. Na lista suspensa ao
lado de ADDR, selecionamos esse endereço individual. Os mais comuns por
padrão são 0x27 ou 0x3F, que são marcados com um asterisco.
2. Impressão LCD: Este é o bloco principal para imprimir dados na tela.
Na caixa entre aspas, inseri-se o texto ou os dados que se quer enviar. Na coluna
e na linha, seleciona-se a posição em que se quer que ela apareça.

3. LCD limpo: Toda vez que se quiser causar uma nova impressão,
terá que remover os personagens anteriores.

4. Símbolo de definição do LCD: Este é o bloco que permite criar


personagens personalizados.

5. Para fazer isso, clica-se com o botão direito do mouse no bloco e em


seguida clica-se na ajuda:

Isso abrirá uma nova guia no navegador na qual um editor aparece para
criar caracteres clicando na caixa dividida em pixels:

166
6. Copia-se os dados gerados e colaca-se no bloco LCD. Define Symbol.

7. Finalmente, com o seguinte bloco, escolhe-se onde na tela imprimir o


caractere definido:

8. Com os dois blocos a seguir, pode-se inserir a posição de cada


elemento, tanto em linha quanto em coluna, usando variáveis. Desta forma,
pode-se automatizar os movimentos dos personagens:

9. Programação 1 para Exemplo: LCD imprimir palavras


alternadamente usando ArduinoBlocks. O esquema a seguir será usado, embora
para o primeiro programa proposto não seja necessário usar o botão.

10. Programação 2 para Exemplo: LCD imprimir o status de um botão


usando ArduinoBlocks. Se o botão conectado à porta 2 estiver acionado, ele será

167
impresso na primeira linha da tela "Entrada ativa". Quando não estiver ativado,
ele será impresso, também na primeira linha "Entrada desligada".

17.22 Prática experimental 22 – Comunicação Arduino e Bluetooth usando


o ArduinoBlocks
Objetivo: Controlar uma saída Arduino com o celular via Bluetooth.
Componentes: placa Arduino UNO, placa Bluethooth
Procedimento: Será criado um pequeno aplicativo móvel para gerenciar
o Arduino, através do Bluetooth Electronics App.

O programa pode ser aberto diretamente em:


http://www.arduinoblocks.com/web/project/17808

17.23 Prática experimental 23 – Programe o ESP8266 com ArduinoBlocks:


NodeMCU Board
Objetivo: Programar o ESP8266 com ArduinoBlocks.

168
Fundamentação teórica: Os módulos ESP8266 como periféricos
fornecem conectividade Wi-Fi às placas Arduino. No entanto, esses dispositivos
têm seu próprio microcontrolador interno, o que permite que eles sejam
programados sem ter que ser associado a outros microcontroladores, como o
Arduino. Com a atualização para a versão 4 do conector ArduinoBlocks, já se
pode programar com blocos muitas das placas baseadas no chip ESP8266. Mais
um passo gigante na programação de blocos e IOT.
O chip ESP8266 é, portanto, realmente um SoC (System on Chip), que integra
todos os elementos descritos no parágrafo anterior. Por sua vez, este sistema
pode ser encontrado como parte de uma infinidade de "módulos" comerciais,
surgindo assim diferentes soluções com diferentes funções, pinos, tamanhos e
preços. O mais simples é o ESP-01, que possui apenas 2 portas digitais e precisa
de um adaptador USB para ser programado.

Neste post utilizaremos a placa de desenvolvimento NodeMCU, também


baseada no ESP-12E.

O NodeMCU possui 9 pinos digitais que podem atuar como entradas e


saídas (digitais e PWM), pinos Rx e Tx para comunicação serial e uma entrada
analógica. Além disso, inclui uma porta micro USB e suporta comunicação I2C e
SPI.

169
Da mesma forma, possui 2 Leds integrados conectados ao pino D0 e D4
que podemos usar para testar programas sem ter que fazer nenhuma conexão.
Você simplesmente tem que ter em mente que, nesses Led, um estado baixo faz
com que a luz se ilumine, e um estado alto, que se desliga. Ou seja, trabalham
com lógica reversa.
Finalmente, é importante notar que sua tensão de operação é de
3,3VDC, o que faz com que tenha um baixo consumo, mas, ao mesmo tempo,
obriga você a tomar certas precauções ao conectar a placa NodeMCU com
sensores que funcionam a 5VDC.
Sua programação é muito semelhante à de qualquer placa Arduino no
ArduinoBlocks, com a facilidade adicional de que para a comunicação Wifi não
precisamos indicar a quais pinos o ESP8266 está conectado, já que este é o
núcleo da placa e não um periférico.
Componentes: LEDs e placa de desenvolvimento NodeMCU
Procedimento: Será conectado um Led ao pino D1, conforme mostrado
na imagem a seguir:

170
A comunicação Wi-Fi pela MQTT será feita através da
plataformaio.adafruit em sua versão gratuita. Pode-se encontrar informações
sobre seu uso no artigo: Painel MQTT com Adafruit IO e ArduinoBlocks.
Receba pedidos para ligar e desligar uma saída digital. No programa
seguinte, a placa subscreve o tema "IgnitionLights". Se um 1 for recebido nesse
tópico, a saída D1 será ativada, que com um 0 será desativada.

171
18 - REFERÊNCIAS
ALBUQUERQUE, T. L. Q. Desenvolvimento de uma ferramenta
computacional com acesso remoto para monitoramento de biorreatores
anaeróbios. 2021. 127p. Tese (Doutorado em Engenharia Ambiental) –
Universidade Estadual da Paraíba, Campina Grande.

ALEIXO, A. A. Cultura Maker em contextos educativos: um estudo de caso


em escolas municipais do Recife. 2021. 248p. Tese (Doutorado em Ciências
da Educação) – Universidade do Minho, Portugal.

ALMEIDA, M. A. Possibilidades da robótica educacional para a educação


matemática. 2013. Disponível em
http://www.diaadiaeducacao.pr.gov.br/portals/pde/arquivos/363-4.pdf. Acesso
em 26 nov., 2022.

ANTUNES, J. Lego mindstorms education EV3: o que é isso? 2022.


Tecnologia Educacional. Disponível em:
<https://tecnologia.educacional.com.br/blog-robotica-e-stem/o-que-e-lego-
mindstorm-education-ev3/>. Acesso em: 12 de nov de 2022.

ARDUINO PORTUGAL. Qual a diferença entre entradas Digitais,


Analógicas e PWM, 2017. Disponível em:
<https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-pwm/>.
Acesso em: 12 de nov de 2022.

ARDUINO, CC. What is Arduino? 2019. Disponível em:


https://www.arduino.cc/en/Guide/Introduction#. Acesso em: 5 dez de 2022.

ASIMOV, I. Eu, Robô. 9ª Edição. Expressão Cultural: Rio de Janeiro, 1981.

AZAMBUJA, K. V. F. Metodologias ativas para inovação no aprendizado:


Um estudo de caso STEAM na educação brasileira para motivação à
engenharia. 2022. 93p. Dissertação (Mestrado Acadêmico em Gestão da

172
Inovação Tecnológica) – Universidade Federal de Minas Gerais, Belo
Horizonte.

AZEVEDO, S. Minicurso: Introdução à Robótica Educacional. SBPC.


2010. Disponível
em:<https://d1wqtxts1xzle7.cloudfront.net/45571846/MC_Samuel_Azevedo_
original.pdf?1463060692=&response-content
disposition=inline%3B+filename%3DMinicurso_Introducao_a_Robotica_Edu
cacio.pdf&Expires=1610049489&Signature=Sb~Pqq9XtkDc6roF4nlZH00sJ6
P0lge4JR~xdzG8Lz~4JxOb~RBSIaeI58wtNgdQ3RP4hXGJfdfpc0Tt65yQ~0J
rvh~IxRBrtj5~GViMs8OdDF1zxuxuumDzjhElPOLkPZtg70~8ZKLe1msoyNVni
TfKuAoH5-XqqLUw5YvGDwKeApqnqC~-cl5X2JFGu9OoVROIU3BaKq4y-
IxiKpChfa2EEsHRr4mfOJgw6O2VLEemWfAQweWNhNrQs0oXk-
KIYUHoakQLUaqtmjocFpWzqiYET6es5VVfk9U1E6aRvr9aReDTAqf1RjMOb
TY5Sk6mTRLAhaK7K0oZogWH10d83g__&Key-Pair-
Id=APKAJLOHF5GGSLRBV4ZA> - Acesso em 17 de nov de 2022.

BARBOSA, E.; SILVA, R.; BLIKSTEIN, P. Robótica educacional:


experiências inovadoras na educação brasileira/organizadores. Porto
Alegre, 2020.

BBC LEARNING, B. What is computational thinking? 2015. Disponível em:


<http://www.bbc.co.uk/education/guides/zp92mp3/revision>. Acesso em 6 dez
de 2022.

BENITTI, F. B. V.; VAHLDICK, A.; URBAN, D.L.; KRUEGER, M. L.; HALMA,


A. Experimentação com Robótica Educativa no Ensino Médio: ambiente,
atividades e resultados. In: Workshop de Informática na Escola (WIE), v. 15.
Anais WIE. p. 1811-1820. 2009.

BRASIL. Ministério da Educação. Base Nacional Comum Curricular.


Brasília, 2018.

173
BRASIL. Ministério da Educação. Base Nacional Comum Curricular.
Educação é a base. Brasília: MEC, 2017. Disponível em:
http://portal.mec.gov.br/index.php?option=com_docman&view=download&ali
as=79601- anexo-texto-bncc-reexportado-pdf-2&category_slug=dezembro-
2017-pdf&Itemid=30192. Acesso em: 21 nov de 2022.

CARRARA, V. Introdução à Robótica Industrial. Instituto Nacional de


Pesquisas Espaciais – INPE. São josé dos Campos, 2015.

CAVALCANTE, M. M.; SILVA, J. L.; VIANA, E. C.; DANTAS, J. R. A


plataforma arduino para fins didáticos: estudo de caso com
recolhimento de dados a partir do PLX-DAQ. Instituto Federal de
Educação, Ciências e Tecnologia – Paulo Afonso-BA, 2014. Disponível em:
http://www.lbd.dcc.ufmg.br/colecoes/wei/2014/0037.pdf. Acesso em: 6 dez.
2022.

CHRIST, N. A.; BEGOSSO, C. Um estudo sobre a programação baseada


em blocos. P. 1–14. 2019.

CRUZ, T.S. O Ensino de robótica educacional e a base nacional comum


curricular: a relação entre a cultura maker e as competências gerais. VI
Congresso Nacional de Educação (CONEDU). Fortaleza – CE, 2019.

GOULART, I. B. Psicologia da educação. Vozes, São Paulo, 1987.

MEDEIROS, I.; RABELO, H. Relato de Experiência: O Pensamento


Computacional por meio da aplicação de Atividades Desplugadas em uma
turma de 5º Ano – Natal - RN. VI Conedu, 2019.

MENZEL, P.; D’ALUISIO, F. Robô Sapiens: evolution of the new species.


Cambridge: Massachusetts Institute of Technology – MIT Press, 2000.

MESQUITA, L.; SENA, G. J; MONTEIRO, M. A. A.; WENDLING, J. M. A.


Introdução à Lógica de Programação. 2020. Universidade Estadual Paulista

174
“Júlio de Mesquita filho”. Disponível em:
https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/apostila
---introducao-a-logica-de-programacao.compressed.pdf. Acesso em: 7 dez de
2022.

MONTEIRO, L. M. Linguagem de programação. 2018. Disponível em:


https://universidadedatecnologia.com.br/o-que-e-linguagem-de
programacao/#:~:text=Linguagem%20de%20Programa%C3%A7%C3%A3o
%20%C3%A9%20uma,equipamento%20que%20permita%20sua%20execu
%C3%A7%C3%A3o. Acesso em: 20 de dez 2022.

MORELATO, L. A. Avaliando diferentes possibilidades de uso da robótica


na educação. Revista de Ensino de Ciências e Matemática (REnCiMa), v. 1,
n. 2, p. 80–96, 2010.

MORINI, A. M. Um estudo sobre o perfil do aluno do ensino à distância.


2006. 43p. Monografia (Especialização em Metodologia do Ensino Superior à
Distância da UnisulVirtual) - Universidade Sul de Santa Catarina, Palhoça.

MOTA, A. D. Apostila Arduino Básico: Vol. 1. 40p. Serra – ES: Vida de


Silício, 2015.

OLIVEIRA, J. S. Introdução à cinemática com suporte de animações em


Scratch. 2022. 122p. Dissertação (Mestrado em Ensino de Física) -
Universidade Tecnológica Federal do Paraná, Medianeira.

OLIVEIRA, R. A robótica na aprendizagem da matemática: um estudo


com alunos do 8º ano de escolaridade. 2007. 98p. Dissertação (Mestrado
em Matemática e Engenharias) - Universidade da Madeira, Portugal.

OLIVEIRA, R. Robótica educacional na transformação do ensino de


Língua Portuguesa, 10 /08/ 2016. Disponível em:
<https://blog.redecaminhodosaber.com.br/robotica-educacional-transforma-
o-ensino-de-lingua-portuguesa/>. Acesso em: 28 nov de 2022.

175
PATA, A.S.O. Sistemas Tecnológicos: robô ambiental híbrido. 2006. 101p.
Tese – Universidade Católica Portuguesa, Porto.

PERALTA, D.A.; GUIMARÃES, E.C. A robótica na escola como postura


interdisciplinar: o futuro chegou para a Educação Básica? Revista
Brasileira de Informática na Educação - RBIE, v. 26, n. 1, p. 30-50, 2018.

PEREIRA, K.; SOPRANO, G. Construção de histórias com Scratch


(Oficina) - Maker Day Brasil. 26/09/2019. Disponível em:
https://www.sympla.com.br/evento/construcao-de-historias-com-scratch-
oficina-maker-day-brasil/645600. Acesso em: 20 de dez 2022.

PORTO, L. V. A.; KUSTER, R. S. Capacitação em programação básica e


robótica na seleção de alunos bolsistas do projeto programar para
avançar – letramento e robótica para alunos da rede pública. 2021. 74p.
TCC (Graduação em Bacharelado em Sistemas de Informação) - Instituto
Federal de Educação, Ciência e Tecnologia do Espírito Santo, Colatina.

REIS, N.S.; SOUZA, L.H.R. Robótica no Brasil: relatos de pesquisa e


desenvolvimento. 17º Seminário Nacional de História da Ciência e da
Tecnologia. ANAIS ELETRÔNICOS. UNIRIO, nov. 2020.

SILVA, L. S.; OLIVEIRA, R. N. Robótica Educacional: perspectivas e


desafios no ensino de ciências e matemática. 2022. 52p. TCC. (Bacharelado
em Engenharia Elétrica) - Instituto Federal de Educação, Ciência e Tecnologia
de Goiás, Jataí.

SILVA. E.; JAVARONI, S. L. Pensamento computacional e atividades com


robótica para a promoção da aprendizagem sobre o significado do resto
da divisão euclidiana. In Anais do SimpósioBrasileiro de Informática na
Educação – SBIE. 2018.

176
SOUSA JR, I. V.; MIRANDA, J. O. S.; NASCIMENTO, A.C. S.; ARAÚJO, F. R.
V. Física experimental com Arduino: ondas em uma corda tensionada.
Rev. Bras. Ensino Fís. n. 42, São Paulo. 2020

SOUSA, J. M. F. Estratégias utilizadas nas aulas de geografia em turmas


de nível médio a partir do subprojeto GEOGRAFIA/PIBID/UEPB. TCC
(Graduação em Geografia) - Universidade Estadual da Paraíba, Centro de
Educação, 2017.

SOUZA, F. Arduino UNO. 15 fev, 2013. Disponível em:


<https://www.embarcados.com.br/arduino-uno/>. Acesso em 15 de nov de
2022.

SOUZA, M. F.; COSTA, C. S. Scratch: Guia Prático para aplicação na


educação básica. - 1. ed. Imperial Editora. Rio de Janeiro, 78 p. 2019.

TAJRA, S. F. Informática na Educação: novas ferramentas pedagógicas


para o professor na atualidade. 8 ed. São Paulo, 2008.

VANNUZINI, G. Informática – programação em blocos. 24/06/2021.


Disponível em: https://microcamp.com.br/programacao-por-blocos/. Acesso
em: 20 de dez 2022.

VARGAS, M. N., MENEZES, Andromeda G. C., MASSARO, Cláudio M.,


GONÇALVES, Thiago M. Utilização da robótica educacional como
ferramenta lúdica de aprendizagem na engenharia de produção:
introdução à produção automatizada. IFES – Instituto Federal de
Educação, Ciência e Tecnologia do Espírito Santo – 2012. Disponível em:
<http://www.abenge.org.br/CobengeAnteriores/2012/artigos/104401.pdf>.
Acesso em 08 de dez. de 2022.

WING, J. M. Computational thinking. communications of the acm. V. 49, n.


3, p. 33, 2006.

177
ZILLI, S. do R. A robótica educacional no Ensino Fundamental:
perspectivas e prática. 2004. 89 p. Dissertação (Mestrado em Engenharia
de Produção) -Universidade Federal de Santa Catarina, Florianópolis, 2004.

178

Você também pode gostar