Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

details

Libere esse material sem enrolação!

Craque NetoCraque Neto

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

<p>Carlos Brandão</p><p>GOVERNADOR DO ESTADO</p><p>Felipe Costa Camarão</p><p>SECRETÁRIO DE ESTADO DA EDUCAÇÃO</p><p>Cricielle Aguiar Muniz</p><p>DIRETORA-GERAL DO IEMA</p><p>Abenaias Almeida Silva</p><p>DIRETOR-ADJUNTO PEDAGÓGICO DO IEMA</p><p>Jofran da Conceição da Silva Filho</p><p>DIRETOR-ADJUNTO ADMINISTRATIVO-FINANCEIRO DO IEMA</p><p>EQUIPE DE ELABORAÇÃO</p><p>Prof. Me. Fábio Aurélio do Nascimento Costa</p><p>COORDENADOR DE ROBÓTICA EDUCACIONAL DO IEMA</p><p>Profa. Dra. Ildenice Nogueira Monteiro</p><p>ASSESSORA TÉCNICA DE ROBÓTICA EDUCACIONAL DO IEMA</p><p>Prof. Dr. Marcelino Mendes Soares</p><p>ASSESSOR TÉCNICO DE ROBÓTICA EDUCACIONAL DO IEMA</p><p>Prof. Me. Jorge Emanuel de Oliveira Irineu</p><p>ASSESSOR TÉCNICO DE ROBÓTICA EDUCACIONAL DO IEMA</p><p>Prof. Me. Aleksandro Costa Nogueira</p><p>ASSESSOR TÉCNICO DE ROBÓTICA EDUCACIONAL DO IEMA</p><p>Profa. Esp. Silvana Damasceno Lavra Ribeiro</p><p>ASSESSORA TÉCNICA DE ROBÓTICA EDUCACIONAL DO IEMA</p><p>Prof. George Allem Corrêa Amorim</p><p>ASSESSOR TÉCNICO DE ROBÓTICA EDUCACIONAL DO IEMA</p><p>SUMÁRIO</p><p>APRESENTAÇÃO..................................................................................................................................10</p><p>1 INTRODUÇÃO.....................................................................................................................................11</p><p>2 HISTÓRICO DA ROBÓTICA...............................................................................................................13</p><p>2.1Primeira geração..............................................................................................................................16</p><p>2.2 Segunda geração............................................................................................................................17</p><p>2.3 Terceira geração..............................................................................................................................17</p><p>3 AS TRÊS LEIS DA ROBÓTICA..........................................................................................................19</p><p>3.1 1ª lei da Robótica.............................................................................................................................19</p><p>3.2 2ª lei da Robótica............................................................................................................................19</p><p>3.3 3ª lei da Robótica............................................................................................................................19</p><p>4 TIPOS DE ROBÔS..............................................................................................................................20</p><p>4.1 Robôs autônomos...........................................................................................................................20</p><p>4.2 Robôs industriais ou manipuladores............................................................................................20</p><p>4.3 Robôs humanoides.........................................................................................................................21</p><p>4.4 Robôs educacionais.......................................................................................................................21</p><p>4.5 Componentes de um robô..............................................................................................................22</p><p>5 KITS EDUCACIONAIS........................................................................................................................23</p><p>5.1 Lego Mindstorm EV3......................................................................................................................23</p><p>5.1.1 Benefícios do LEGO MINDSTORMS Education EV3 para o aprendizado.............................24</p><p>5.2 Arduino............................................................................................................................................25</p><p>6 PENSAMENTO COMPUTACIONAL...................................................................................................29</p><p>6.1 Linguagens de Programação.........................................................................................................30</p><p>6.1.1 Linguagem em bloco....................................................................................................................31</p><p>6.2 Lógica de Programação..................................................................................................................33</p><p>6.3 A necessidade do uso da Lógica...................................................................................................34</p><p>6.4 Algorítmo.........................................................................................................................................35</p><p>6.4.1Algoritmos: Aplicabilidade da lógica no desenvolvimento de programas .............................35</p><p>6.4.2 Programas de computador .........................................................................................................40</p><p>6.4.3 Formas de representação de algoritmos...................................................................................41</p><p>6.4.4 Descrição narrativa .....................................................................................................................41</p><p>6.4.5 Fluxograma ..................................................................................................................................42</p><p>6.4.6 Construindo um fluxograma........................................................................................................43</p><p>6.5 Estrutura básica de um programa desenvolvido na IDE Arduino .............................................47</p><p>6.5.1 Variável.........................................................................................................................................48</p><p>6.5.2 Operador.......................................................................................................................................50</p><p>6.5.3 Função..........................................................................................................................................50</p><p>6.5.3.1 Chamada de Função....................................................................................................51</p><p>5.5.3.2 Valor de Retorno..........................................................................................................51</p><p>6.5.3.3 Comentários.................................................................................................................53</p><p>6.5.4 Scratch..........................................................................................................................................56</p><p>6.5.4.1 Programar no Scratch...............................................................................................................58</p><p>6.5.4.2 Área de programação................................................................................................................58</p><p>6.5.4.3 Blocos de movimento...............................................................................................................58</p><p>6.5.4.4 Blocos de aparência..................................................................................................................59</p><p>6.5.4.5 Blocos de som...........................................................................................................................60</p><p>6.5.4.6 Blocos de evento.......................................................................................................................60</p><p>6.5.4.7 Blocos de controle....................................................................................................................61</p><p>6.5.4.8 Blocos de sensores...................................................................................................................62</p><p>deverá ser retomado para a fase de estudo para descobrir onde está a</p><p>falha. A fim de entender como um algoritmo é construído, vamos analisar a</p><p>construção de um algoritmo para o seguinte problema clássico, discutido por</p><p>vários autores, inclusive em Forbellone e Eberspacher (2005, p. 4), por ser um</p><p>problema cotidiano e que não exige conhecimentos específicos: “trocar uma</p><p>38</p><p>lâmpada queimada”. A partir desse exemplo, será possível evidenciar o processo</p><p>de encadeamento de ideias até a solução final do problema. Inicialmente,</p><p>poderíamos construir o seguinte algoritmo básico para solucionar o problema</p><p>proposto: 1. Pegue uma escada; 2. Posicione-a embaixo da lâmpada; 3. Busque</p><p>uma lâmpada nova; 4. Suba na escada; 5. Retire a lâmpada velha; 6. Coloque a</p><p>lâmpada nova. Se examinarmos esse algoritmo, veremos que ele permite</p><p>solucionar o problema da troca de uma lâmpada queimada. Entretanto, se</p><p>considerarmos as situações nas quais o algoritmo poderá ser aplicado,</p><p>perceberemos que o mesmo não irá tratar a situação em que a lâmpada não</p><p>esteja queimada. Na verdade, mesmo que a lâmpada esteja funcionando, esse</p><p>algoritmo irá trocá-la por uma nova. Para solucionar esse problema, é necessário</p><p>alterar o algoritmo de modo que a lâmpada seja testada antes de efetuar a troca.</p><p>Para isso, basta ligar o interruptor e verificar se a lâmpada está funcionando ou</p><p>não. Intuitivamente, faríamos a seguinte alteração no algoritmo: 1. Pegue uma</p><p>escada; 2. Posicione-a embaixo da lâmpada; 3. Busque uma lâmpada nova; 4.</p><p>Ligue o interruptor; 5. Se a lâmpada não acender, então: e-Tec Brasil 20 Lógica</p><p>de Programação a) suba na escada; b) retire a lâmpada velha; c) coloque a</p><p>lâmpada nova. À primeira vista, o algoritmo agora está correto. Ao introduzirmos</p><p>um teste seletivo, uma condição, no passo V, impomos que os passos a, b e c</p><p>só deverão ser executados se o resultado do teste for verdadeiro. Nesse caso,</p><p>se a lâmpada não acender. Os testes seletivos nos permitem tratar as exceções</p><p>e garantir que determinados passos não sejam executados em vão, otimizando</p><p>o algoritmo. Esse mesmo algoritmo, apesar de funcional, ainda pode ser</p><p>otimizado. Se o reexaminarmos, perceberemos que, no caso de a lâmpada não</p><p>estar queimada, teremos executado os passos 1, 2 e 3 em vão. Para tratar essa</p><p>situação, bastaria reposicionar os passos 1, 2 e 3 para que ocorram somente</p><p>após o teste seletivo, uma vez que só serão úteis caso a lâmpada tenha de ser</p><p>realmente trocada, ou seja, que ela esteja queimada. Desse modo, o algoritmo</p><p>seria novamente alterado, ficando: 6. Ligue o interruptor; 7. Se a lâmpada não</p><p>acender, então: a) pegue uma escada; b) posicione-a embaixo da lâmpada; c)</p><p>busque uma lâmpada nova; d) suba na escada; e) retire a lâmpada velha; f)</p><p>coloque a lâmpada nova. Apesar de parecer completo, ou seja, permitindo</p><p>solucionar o problema da troca da lâmpada queimada, este algoritmo não leva</p><p>em consideração a possibilidade de a nova lâmpada não funcionar. Pois, nesse</p><p>39</p><p>caso, seria necessário repetir os passos “e” e “f”. Daí surge a seguinte questão:</p><p>pode ser que a outra lâmpada também não funcione, sendo necessário repetir</p><p>mais uma vez esta sequência de passos. Então, quando deveremos parar de</p><p>repetir? Para toda repetição em um algoritmo devemos estabelecer uma</p><p>condição de parada, ou seja, um limite para a quantidade de vezes em que os</p><p>passos deverão ser repetidos. Caso não seja estabelecido esta condição de</p><p>parada ocorre o que chamamos de laço infinito - mais conhecido por sua</p><p>designação em inglês loop infinito - no qual os passos se repetem</p><p>indefinidamente. No caso do nosso algoritmo, uma condição de parada</p><p>adequada seria repetir enquanto a lâmpada não acender. Assim o algoritmo</p><p>ficaria da seguinte forma: 7. Ligue o interruptor; 8. Se a lâmpada não acender,</p><p>então: a) pegue uma escada; b) posicione-a embaixo da lâmpada; c) busque</p><p>uma lâmpada nova; d) suba na escada; e) retire a lâmpada velha; f) coloque a</p><p>lâmpada nova; g) enquanto a lâmpada não acender: – retire a lâmpada; –</p><p>coloque outra lâmpada. O passo “g” apresenta o que chamamos de fluxo</p><p>repetitivo no qual um conjunto de passos pode se repetir n vezes. Na prática não</p><p>é importante ter-se apenas um algoritmo, mas sim, um bom algoritmo. O mais</p><p>importante de um algoritmo é a sua correção, isto é, se ele resolve realmente o</p><p>problema proposto e o faz exatamente. Para se ter um algoritmo, é necessário:</p><p>1. Que se tenha um número finito de passos. 2. Que cada passo esteja</p><p>precisamente definido, sem possíveis ambiguidades. 3. Que existam zero ou</p><p>mais entradas tomadas de conjuntos bem definidos. 4. Que existam uma ou mais</p><p>saídas. 5. Que exista uma condição de fim sempre atingida para quaisquer</p><p>entradas e num tempo finito.</p><p>40</p><p>6.4.2 Programas de computador</p><p>O computador, a princípio, não executa nada. Para que ele faça uma</p><p>determinada tarefa, calcular uma folha de pagamento, por exemplo, é necessário</p><p>que ele execute um programa. Um programa é um conjunto de milhares de</p><p>instruções que indicam ao computador, passo a passo, o que ele tem que fazer.</p><p>Logo, um programa nada mais é do que um algoritmo computacional descrito em</p><p>uma linguagem de programação. Uma linguagem de programação contém os</p><p>comandos que fazem o computador escrever algo na tela, realizar cálculos</p><p>aritméticos, receber uma entrada de dados via teclado, e milhares de outras</p><p>coisas, mas estes comandos precisam estar em uma ordem lógica. A Figura</p><p>mostra as fases da programação.</p><p>Todo programa fundamentalmente opera sobre um conjunto de entrada que</p><p>representa os dados iniciais necessários à resolução do problema. Essas</p><p>entradas são então processadas a partir de um conjunto de regras já definidas</p><p>e, ao final, o programa gera um conjunto de saídas que representa o resultado</p><p>do processamento.</p><p>41</p><p>6.4.3 Formas de representação de algoritmos</p><p>Com o passar do tempo e de estudos dos algoritmos, foram</p><p>desenvolvidas inúmeras formas de se representar um algoritmo de modo a</p><p>facilitar o seu entendimento e, mais tarde, a sua tradução para uma linguagem</p><p>de programação específica. Entre as formas de representação de algoritmos</p><p>mais conhecidas, podemos citar:</p><p>• Descrição Narrativa.</p><p>• Fluxograma.</p><p>• Diagrama de Chapin.</p><p>• Pseudocódigo, também conhecido como Português Estruturado ou Portugol.</p><p>6.4.4 Descrição narrativa</p><p>Nesta forma de representação os algoritmos são expressos</p><p>diretamente em linguagem natural. Nessa forma de representação, os</p><p>algoritmos são expressos diretamente em linguagem natural. Esta forma de</p><p>representação é a mesma utilizada em algoritmos não computacionais, como</p><p>receitas culinárias. Dessa forma, as instruções são descritas livremente,</p><p>entretanto devemos tomar alguns cuidados para manter a clareza do</p><p>algoritmo. Para escrever um algoritmo, precisamos descrever a sequência de</p><p>instruções, de maneira simples e objetiva. Para isso devemos obedecer</p><p>algumas regras básicas:</p><p>• Usar somente um verbo por frase;</p><p>• Imaginar que você está desenvolvendo um algoritmo para pessoas que</p><p>não trabalham com informática;</p><p>• Usar frases curtas e simples;</p><p>• Ser objetivo;</p><p>• Procurar usar palavras que não tenham sentido dúbio. Como exemplo,</p><p>têm-se os algoritmos seguintes:</p><p>Troca de um pneu furado: 1. Afrouxar ligeiramente as porcas. 2. Suspender o</p><p>carro. 3. Retirar as porcas e o pneu. 4. Colocar o pneu reserva. 5. Apertar as</p><p>porcas. 6. Abaixar o carro. 7. Dar o aperto final nas porcas.</p><p>42</p><p>Cálculo da média de um aluno:</p><p>1. Obter as notas da primeira e da segunda prova. 2. Calcular a média aritmética</p><p>entre as duas notas. 3. Se a média for maior ou igual a 7, o aluno foi aprovado,</p><p>senão ele foi reprovado. Esta representação é pouco usada na prática porque o</p><p>uso de linguagem natural muitas vezes dá oportunidade a más interpretações,</p><p>ambiguidades e imprecisões. Por exemplo, a instrução “afrouxar ligeiramente as</p><p>porcas” no algoritmo da troca de pneus está sujeita a interpretações diferentes</p><p>por pessoas distintas. Uma instrução mais precisa seria: “afrouxar a porca,</p><p>girando-a de 30º no sentido anti-horário”.</p><p>6.4.5 Fluxograma</p><p>Essa é a forma gráfica de representar um algoritmo mais conhecida e</p><p>utilizada. O fluxograma nos permite mostrar graficamente a lógica de um</p><p>algoritmo, enfatizando passos individuais e o fluxo de execução.</p><p>Para muitos autores, o fluxograma é a forma universal de representação, pois se</p><p>utiliza de figuras geométricas padronizadas para ilustrar os passos a serem</p><p>seguidos para a resolução de problemas. E o ideal é que um algoritmo seja</p><p>entendido da mesma forma por diferentes pessoas que o utilizarem. Para que</p><p>um fluxograma seja interpretado corretamente, é necessário entender sua</p><p>sintaxe e sua semântica. Sobre sintaxe de um fluxograma, devemos entender</p><p>como a correta utilização dos seus símbolos gráficos mostrados na figura e das</p><p>expressões que podem ser escritas no seu interior.</p><p>43</p><p>Já a semântica diz respeito ao significado de cada símbolo, ou seja, como</p><p>interpretá-lo corretamente. Com isso é possível entender e simular o algoritmo</p><p>representado. A interpretação de um fluxograma, via de regra, se dá de cima</p><p>para baixo e da esquerda para a direita. É importante seguir essa regra, pois</p><p>garante que o fluxo de instruções seja entendido corretamente. Por se tratar de</p><p>uma representação gráfica, o fluxograma não se mostra adequado para a</p><p>representação de algoritmos maiores e/ou mais complexos. Nesses casos, é</p><p>comum o uso do pseudocódigo como forma de representação (Figura 2.1).</p><p>FIGURA SIGNIFICADO Figura para definir início e fim do algoritmo Figura usada</p><p>no processamento de cálculo, atribuições e processamento de dados em geral</p><p>Figura utilizada na representação de entrada de dados Figura utilizada para</p><p>representação da saída de dados Figura que indica o processo seletivo ou</p><p>condicional, possibilitando o desvio no caminho do processamento Símbolo</p><p>geométrico usado como conector Símbolo que identifica o sentido do fluxo de</p><p>dados, permitindo a conexão entre as outras figuras existentes Figura 2.1:</p><p>Principais símbolos utilizados em um fluxograma</p><p>6.4.6 Construindo um fluxograma</p><p>Para entendermos como um fluxograma é criado para representar um</p><p>algoritmo, vamos discutir passo-a-passo a criação de um fluxograma para</p><p>representar um algoritmo que permita calcular a média final de um aluno</p><p>considerando que todo aluno realiza três provas no semestre. O aluno é</p><p>considerado “aprovado” se a sua média for igual ou superior a 7 (sete) , senão é</p><p>considerado “reprovado”. Antes de iniciarmos a construção do fluxograma,</p><p>devemos formalizar o algoritmo para solucionar o problema. É evidente que este</p><p>é um problema de pouca complexidade e que envolve poucas regras. Para</p><p>resolver esse problema, fica claro que precisaremos conhecer as três notas do</p><p>aluno, que deverão ser informadas pelo usuário e, em seguida, calcular a média</p><p>por meio do cálculo de média aritmética simples para a qual devemos aplicar a</p><p>fórmula média = (nota1+nota2+nota3)/3. Após o cálculo da média, é necessário</p><p>testar se o seu valor é igual ou superior ao valor 7 (sete) e, nesse caso, deverá</p><p>ser listada a mensagem “Aprovado”. Em caso contrário deverá ser listada a</p><p>mensagem “Reprovado”. Agora que conhecemos o algoritmo, é possível</p><p>44</p><p>representá-lo como um fluxograma. Inicialmente a forma mínima de um</p><p>fluxograma é dada pela junção de seus terminadores de início e fim, como</p><p>mostrado na figura.</p><p>Na verdade, essa construção mínima executa absolutamente nada. Os símbolos</p><p>de INICIO e FIM, na verdade, não representam instruções de fato, mas são</p><p>marcadores essenciais que permitem a correta interpretação do fluxograma</p><p>(Figura 2.2). INICIO FIM Figura 2.2: Fluxograma mínimo Fonte: Adaptado de:</p><p>Sampaio, 2008 Entretanto, para nosso algoritmo, será necessário ler os dados</p><p>de entrada, nesse caso, as três notas do aluno. Com isso, é necessário expandir</p><p>o nosso fluxograma, como mostra a figura.</p><p>Por motivos didáticos, para cada variável foi utilizado um símbolo de entrada</p><p>manual. Na prática, entretanto, é comum a utilização de apenas um símbolo</p><p>contendo todas as variáveis a serem lidas. De posse do valor de cada uma das</p><p>três notas, é possível processar a média do aluno. Vamos representar esse</p><p>processamento utilizando o símbolo de processo, como mostra a figura</p><p>Fluxograma com cálculo da média.</p><p>Em um fluxograma, devemos sempre representar a atribuição de valor a uma</p><p>variável por meio do símbolo “←“, na forma variável = valor. Em um fluxograma,</p><p>a expressão variável = valor representa o teste se o valor da variável é igual ao</p><p>45</p><p>valor informado do lado direito da expressão e não uma atribuição. Agora que o</p><p>valor da média já foi calculado, é hora de testar o seu valor a fim de definir se o</p><p>aluno foi aprovado ou reprovado. Nesse momento, sentimos a necessidade de</p><p>controlar o fluxo de instruções, pois caso o valor da média seja superior a 7 (sete)</p><p>devemos executar a instrução de impressão da mensagem “Aprovado”, senão</p><p>devemos apresentar a mensagem “Reprovado”. Para fazer isso é necessário</p><p>utilizar o símbolo de decisão, como mostrado na Figura 2.5. Como podemos</p><p>notar, dependendo do resultado da condição media >=7 , o fluxo de instruções é</p><p>devidamente desviado. Agora o fluxograma mostrado na Figura 2.4 reflete o</p><p>algoritmo criado, representando cada passo de forma gráfica. Como já discutido</p><p>na aula anterior, na maioria das vezes precisamos executar um conjunto de</p><p>passos repetidas vezes, sem alterações no conjunto de instruções. Para</p><p>representar esses casos em um fluxograma devemos construir um desvio no</p><p>fluxo de instruções que permita testar uma condição de parada e, dependendo</p><p>do seu resultado, retomar a um passo anterior a fim de repetir o conjunto de</p><p>instruções desejado. Fluxograma final</p><p>A fim de compreender como tratar esse tipo de situação, vamos tomar como</p><p>46</p><p>exemplo a representação de um algoritmo que imprime todos os números pares</p><p>positivos e menores do que um valor N informado. O fluxograma resultante é</p><p>mostrado na Figura 2.6. Nesse fluxograma é possível notar que, após a leitura o</p><p>valor N, este é então testado para saber se ainda é positivo. Em caso negativo,</p><p>o programa já é encerrado, pois não haverá valores pares positivos menores do</p><p>que N. Caso a condição de teste seja satisfeita, ou seja, retome o valor</p><p>verdadeiro, esse valor é testado para saber se é um valor par. Para isso, é</p><p>testado o resto da divisão do valor N por dois. Caso essa expressão retorne o</p><p>valor zero, o número é par, senão é impar. Caso a condição seja satisfeita - N é</p><p>par – o valor de N é então exibido e, em seguida, decrementado de uma unidade.</p><p>Após essa instrução, o fluxo é então desviado para o momento anterior ao</p><p>conjunto de passos que deverá ser novamente repetido. Com isso conseguimos</p><p>garantir que esses passos serão executados até que a condição N > O retorne</p><p>o valor falso.</p><p>Para efeito de aprendizagem, a figura a seguir mostra a solução para que um</p><p>47</p><p>robô seja capaz de encontrar a saída de um labirinto:</p><p>Retirado da apostila Introdução à lógica de programação - 2º encontro, disponível em:</p><p>https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/apostila---introducao-a-</p><p>logica-de-programacao.compressed.pdf</p><p>6.5 Estrutura básica de um programa desenvolvido na ide arduino</p><p>Os algoritmos normalmente são escritos em linguagens de programação</p><p>de alto nível. Isso se aplica a praticamente qualquer computador, inclusive</p><p>o Arduino, onde um algoritmo também é conhecido como sketch. Para</p><p>simplificar, a partir de agora nós vamos nos referir aos algoritmos,</p><p>programas ou sketches simplesmente</p><p>como "programas".</p><p>Um programa é composto de uma sequência de comandos,</p><p>normalmente escritos em um arquivo de texto. Para este tutorial, vamos</p><p>usar como base os comandos do programa mais simples do Arduino,</p><p>o Blink, que simplesmente acende e apaga um LED, e vamos destrinchá-</p><p>lo ao longo do tutorial. Veja abaixo o código fonte do Blink:</p><p>48</p><p>int led = 13;</p><p>void setup() {</p><p>pinMode(led, OUTPUT);</p><p>}</p><p>void loop() {</p><p>digitalWrite(led, HIGH);</p><p>delay(1000);</p><p>digitalWrite(led, LOW);</p><p>delay(1000);</p><p>}</p><p>6.5.1 VARIÁVEL</p><p>Uma variável é um recurso utizado para armazenar dados em um</p><p>programa de computador. Todo computador possui algum tipo</p><p>de memória, e uma variável representa uma região da memória usada</p><p>para armazenar uma determinada informação. Essa informação pode ser,</p><p>por exemplo, um número, um caractere ou uma sequência de texto. Para</p><p>podermos usar uma variável em um programa Arduino, nós precisamos</p><p>fazer uma declaração de variável, como por exemplo:</p><p>int led;</p><p>Nesse caso estamos declarando uma variável do</p><p>tipo int chamada led . Em seguida nós falaremos mais sobre o tipo de</p><p>dado de uma variável.</p><p>Tipo de Dado</p><p>O tipo de dado de uma variável significa, como o próprio nome diz,</p><p>o tipo de informação que se pode armazenar naquela variável. Em muitas</p><p>linguagens de programação, como C++, é obrigatório definir o tipo de dado</p><p>no momento da declaração da variável, como vimos na declaração da</p><p>49</p><p>variável led acima. No caso dos módulos Arduino que usam processador</p><p>ATmega, os tipos mais comuns de dados que utilizamos são:</p><p>• boolean : valor verdadeiro ( true ) ou falso ( false )</p><p>• char : um caractere</p><p>• byte : um byte, ou sequência de 8 bits</p><p>• int : número inteiro de 16 bits com sinal (-32768 a 32767)</p><p>• unsigned int : número inteiro de 16 bits sem sinal (0 a 65535)</p><p>• long : número inteiro de 16 bits com sinal (-2147483648 a</p><p>2147483647)</p><p>• unsigned long : número inteiro de 16 bits sem sinal (0 a</p><p>4294967295)</p><p>• float : número real de precisão simples (ponto flutuante)</p><p>• double : número real de precisão dupla (ponto flutuante)</p><p>• string : sequência de caracteres</p><p>• void : tipo vazio (não tem tipo)</p><p>Atribuição</p><p>Atribuir um valor a uma variável significa armazenar o valor nela</p><p>para usar posteriormente. O comando de atribuição em C++ é o = . Para</p><p>atribuírmos o valor 13 à variável led que criamos acima, fazemos assim:</p><p>led = 13;</p><p>Quando se armazena um valor em uma variável logo na sua</p><p>inicialização, chamamos isso de inicialização de variável. Assim, no</p><p>nosso programa de exemplo temos:</p><p>int led = 13;</p><p>O objetivo dessa linha de código é dizer que o pino 13 do Arduino</p><p>será utilizado para acender o LED, e armazenar essa informação para usar</p><p>depois ao longo do programa.</p><p>Os valores fixos usados no programa, como o valor 13 acima, são</p><p>chamados de constantes, pois, diferentemente das variáveis, o seu valor</p><p>não muda.</p><p>6.5.2 OPERADOR</p><p>Um operador é um conjunto de um ou mais caracteres que serve</p><p>para operar sobre uma ou mais variáveis ou constantes. Um exemplo muito</p><p>50</p><p>simples de operador é o operador de adição, o + . Digamos que queremos</p><p>somar dois números e atribuir a uma variável x . Para isso, fazemos o</p><p>seguinte:</p><p>x = 2 + 3;</p><p>Após executar o comando acima, a variável x irá conter o valor 5 .</p><p>Cada linguagem de programação possui um conjunto de</p><p>operadores diferente. Alguns dos operadores mais comuns na linguagem</p><p>C++ são:</p><p>• Operadores aritméticos:</p><p>o + : adição ("mais")</p><p>o - : subtração ("menos")</p><p>o * : multiplicação ("vezes")</p><p>o / : divisão ("dividido por")</p><p>• Operadores lógicos:</p><p>o && : conjunção ("e")</p><p>o || : disjunção ("ou")</p><p>o == : igualdade ("igual a")</p><p>o != : desigualdade ("diferente de")</p><p>o ! : negação ("não")</p><p>o > : "maior que"</p><p>o = : "maior ou igual a"</p><p>o</p><p>com os caracteres // , tornando todo</p><p>o resto da linha atual um comentário.</p><p>• Comentário de bloco: inicia-se com os caracteres /* e termina com</p><p>os caracteres */ . Todo o texto entre o início e o término se torna</p><p>um comentário, podendo ser composto de várias linhas.</p><p>Para facilitar a visualização, os ambientes de desenvolvimento</p><p>geralmente mostram os comentários em uma cor diferente. No caso do</p><p>Arduino IDE, por exemplo, os comentários são exibidos na cor cinza.</p><p>Vamos então explicar o que o programa de exemplo faz, inserindo nele</p><p>vários comentários explicativos:</p><p>/*</p><p>Programação para Arduino - Primeiros Passos</p><p>Programa de exemplo: Blink</p><p>*/</p><p>/*</p><p>Declaração da variável "led"</p><p>Indica que o LED está conectado no pino digital 13 do Arduino (D13).</p><p>54</p><p>*/</p><p>int led = 13;</p><p>/*</p><p>Declaração da função setup()</p><p>Esta função é chamada apenas uma vez, quando o Arduino é ligado ou reinicia</p><p>do.</p><p>*/</p><p>void setup() {</p><p>// Chama a função pinMode() que configura um pino como entrada ou saída</p><p>pinMode(led, OUTPUT); // Configura o pino do LED como saída</p><p>}</p><p>/*</p><p>Declaração da função loop()</p><p>Após a função setup() ser chamada, a função loop() é chamada repetidament</p><p>e até</p><p>o Arduino ser desligado.</p><p>*/</p><p>void loop() {</p><p>// Todas as linhas a seguir são chamadas de função com passagem de parâm</p><p>etros</p><p>// As funções são executadas em sequência para fazer o LED acender e apag</p><p>ar</p><p>digitalWrite(led, HIGH); // Atribui nível lógico alto ao pino do LED, acendendo-</p><p>o</p><p>55</p><p>delay(1000); // Espera 1000 milissegundos (um segundo)</p><p>digitalWrite(led, LOW); // Atribui nível lógico baixo ao pino do LED, apagando-</p><p>o</p><p>delay(1000); // Espera 1000 milissegundos (um segundo)</p><p>// Após terminar a função loop(), ela é executada novamente repetidas vezes,</p><p>// e assim o LED continua piscando.</p><p>}</p><p>Retirado da apostila Introdução à lógica de programação - 2º encontro,</p><p>disponível em:</p><p>https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/apostil</p><p>a---introducao-a-logica-de-programacao.compressed.pdf</p><p>Sugestão de vídeos:</p><p>1. Por que aprender a programar? Disponível em:</p><p>https://www.youtube.com/watch?v=90_onKsNw6g</p><p>2. Como funcionam as linguagens de programação. Disponível em:</p><p>https://www.youtube.com/watch?v=22nd99SLgNA</p><p>https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/apostila---introducao-a-logica-de-programacao.compressed.pdf</p><p>https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/apostila---introducao-a-logica-de-programacao.compressed.pdf</p><p>https://www.youtube.com/watch?v=90_onKsNw6g</p><p>56</p><p>6.5.4 SCRATCH</p><p>O Scratch é uma plataforma que foi criada em 2007 pelo Lifelong</p><p>Kindergarten Group, pertencente ao Media Lab do Massachusetts Institute of</p><p>Technology (MIT), de Boston, EUA. Utiliza-se da programação por blocos para</p><p>criação de objetos virtuais. Dentre as muitas aplicações possíveis, destacam-se</p><p>as animações, os jogos e as apresentações, além de muitas outras</p><p>possibilidades. É uma plataforma online, mas com possibilidade de</p><p>desenvolvimento off-line, além de ser gratuita e de código aberto (SOUZA e</p><p>COSTA, 2018).</p><p>Esta ferramenta está disponível em 40 linguagens e é utilizada em escolas</p><p>de mais de 150 países. Scratch é projetado para a faixa etária entre 8 e 16 anos,</p><p>visando a transversalidade do tema de pensamento computacional e podendo</p><p>ser aplicado para ensino STEAM (Science, technology, engineering, arts and</p><p>mathematics), Linguística, Estudos Sociais e diversas outras áreas de</p><p>conhecimento. A ferramenta Scratch é escrita em Squeak, implementação Open</p><p>Source da linguagem Smalltalk-80 (OLIVEIRA, 2022).</p><p>Atualmente o Scratch está em sua versão 3.0, que trouxe uma</p><p>reformulação na interface e algumas funcionalidades em relação à versão</p><p>anterior. Existem também as versões 2.0 e 1.4 disponíveis. Quando a utilização</p><p>é online, automaticamente a plataforma é carregada com a versão mais atual.</p><p>Se a opção for utilizar a editor off-line, é importante escolher entre as três versões</p><p>disponíveis de acordo com as configurações do seu computador ou laptop. Esta</p><p>nova versão é baseada em tecnologia web nativa (HTML 5). Os blocos antes</p><p>montados verticalmente agora serão montados horizontalmente, assim como já</p><p>ocorre no ScratchJr (PEREIRA e SOPRANO, 2019).</p><p>É possível fazer o upload das criações no editor off-line para a plataforma</p><p>online. Logo, essa plataforma proporciona, como compartilhar criações,</p><p>conversar com outros usuários, remixar suas criações, criar estúdios, etc.</p><p>Na versão Scratch 3.0, o editor possui três painéis principais que são</p><p>mostrados a seguir (OLIVEIRA, 2022).</p><p>57</p><p>Interface Scratch</p><p>Fonte: Scratch Wiki</p><p>Painel de Execução: localizado no topo direito da tela, o painel de</p><p>execução demonstra a cena atual. É importante salientar que programas Scratch</p><p>não são compilados. Deste modo, instruções são interpretadas e executadas no</p><p>ato. A execução inicia ao clicar na bandeira verde que fica no topo desse painel.</p><p>A execução pode ser abortada clicando no botão vermelho localizado à direita</p><p>da bandeira verde.</p><p>Painel de Sprites: está localizado abaixo do painel de execução. Os</p><p>personagens que estão executando papéis no programa Scratch são chamados</p><p>de ’sprites’ (pode ser traduzido como duende ou fada).</p><p>Painel de Programação: inclui todas as ferramentas necessárias para</p><p>codificar visualmente um programa Scratch através de ações "arrasta e larga".</p><p>Existem três tipos de edição possíveis a serem feitas através da seleção da</p><p>etiqueta correspondente no topo do painel (Code, Costumes, Sound). Code é</p><p>criado como uma mistura de blocos que representam diferentes tipos de</p><p>instruções de programação (if-then, loops, etc). Como citado anteriormente, o</p><p>usuário pode criar novos blocos combinando blocos anteriores, mas também</p><p>pode definir extensões para criar novos blocos além dos disponíveis.</p><p>58</p><p>6.5.4.1 Programar no SCRATCH</p><p>O Scratch foi pensado para permitir que programar se tornasse fácil a</p><p>ponto de uma criança conseguir fazer. Inspirados nos blocos Lego, foram criados</p><p>os blocos de programação. Para “escrever” um comando para ser executado não</p><p>é necessário escrever longas linhas de código numa linguagem enigmática para</p><p>o leitor leigo. Basta juntar os blocos certos e associá-los ao ator ou cenário que</p><p>se quer programar. No início pode parecer complicado para quem está</p><p>aprendendo, mas, depois de alguns experimentos torna-se um desafio até</p><p>divertido. Para começar, precisamos conhecer a área de programação, os blocos</p><p>e suas funções. Há nove categorias de blocos no editor do Scratch.</p><p>6.5.4.2 Área de programação</p><p>É o espaço logo à direita dos blocos de programação na mochila. Feita</p><p>a escolha dos blocos que se vai utilizar, basta clicar, segurar com o mouse e</p><p>arrastar cada um para essa área, “montando” a programação de acordo com o</p><p>seu interesse.</p><p>Se por acaso mudar de ideia e quiser excluir algum bloco, basta</p><p>arrastá-lo de volta para a área de blocos ou dar um clique nele e depois</p><p>apertar a tecla delete no teclado e: pronto. O bloco foi apagado! Outra opção</p><p>é clicar no bloco com o botão direito e escolher “apagar bloco” na caixa que</p><p>aparece.</p><p>6.5.4.3 Blocos de movimento</p><p>Os blocos de movimento são relacionados ao posicionamento e</p><p>deslocamento dos componentes (atores, palcos) pelo espaço da tela. São no</p><p>total dezoito blocos:</p><p>59</p><p>Utilizando esses blocos, podemos determinar a velocidade do</p><p>movimento, para que parte da tela o componente deve se descolar, fazê-lo</p><p>girar e determinar o que acontece quando o mesmo tocar na borda da tela.</p><p>São informações muito importantes para se levar em consideração</p><p>quando o</p><p>objeto virtual que estivermos programando exigir movimentos.</p><p>6.5.4.4 Blocos de Aparência</p><p>Os blocos de aparência são vinte e relacionam-se ao aspecto visual</p><p>dos componentes, como tamanho, cor, aparecer ou desaparecer, camada de</p><p>posicionamento, ações de fala escrita e mudanças de fantasia ou de cenário.</p><p>Observe-os:</p><p>Com esses blocos, determinamos se um ator fala ou pensa alguma</p><p>coisa de forma escrita e por quanto tempo o texto permanece na tela.</p><p>Podemos também determinar uma mudança de fantasia do ator ou da</p><p>imagem do cenário. É possível fazer o personagem aumentar ou diminuir de</p><p>tamanho ou mudar sua cor. Enfim, uma diversidade de ações possíveis, claro,</p><p>em associação com os demais blocos existentes.</p><p>60</p><p>6.5.4.5 Blocos de som</p><p>É bem provável que ao ler o item anterior, muitos leitores já tendem a</p><p>se questionar se os atores só se expressam por meio escrito no Scratch. A</p><p>resposta para esse questionamento é não! Além da expressão escrita, é</p><p>possível também atribuir sons, tanto para simular a fala como para simular</p><p>efeitos sonoros das ações e interações dos atores e dos cenários. Os blocos</p><p>de som, num total de nove, são:</p><p>Com esses blocos podemos determinar que um ator ou cenário</p><p>execute um som. O Scratch já traz embutido na plataforma alguns efeitos</p><p>sonoros, mas também é possível importar um som externo, como, por</p><p>exemplo, uma gravação de voz. Com os blocos adequados, é possível</p><p>aumentar ou diminuir o volume e o tom dos efeitos sonoros. Além disso, a</p><p>plataforma também tem um editor de som que, apesar de relativamente</p><p>simples, permite modificar os sons. Por exemplo, podemos fazer o upload de</p><p>uma música e editá-la para utilizar apenas um trecho específico.</p><p>6.5.4.6 Blocos de eventos</p><p>Os blocos de evento são oito e são de extrema importância na hora</p><p>de realizarmos a programação dos componentes das criações. Será utilizado</p><p>sempre um bloco de evento no início de um grupo de blocos para determinar</p><p>a condição para que a programação em questão comece a ser iniciada, por</p><p>exemplo. Utilizados em conjunto com os demais blocos, eles marcam a</p><p>situação específica que ativa o código. Conheça-os abaixo:</p><p>61</p><p>Se não utilizarmos um bloco de evento, por exemplo, uma ação pode</p><p>ocorrer de forma indefinida ou mesmo nem ocorrer.</p><p>6.5.4.7 Blocos de controle</p><p>Esses blocos têm a função de organizar a execução das ações dos</p><p>componentes, por exemplo, determinando quantas vezes determinada ação</p><p>será realizada. É o caso do bloco denominado “repita ___ vezes”, o segundo</p><p>na coluna da direita abaixo. Todos os demais blocos que estiverem</p><p>englobados por ele repetirão suas ações tantas vezes quantas estiverem</p><p>estipuladas por você. Eles ajudam também, em associação com outras</p><p>categorias de blocos, a determinar o condicionante para que a ação aconteça.</p><p>Repare abaixo em sua aparência e nos comandos que representam:</p><p>Os três últimos blocos dessa categoria têm uma função especial. São</p><p>direcionados para lidar com os “clones”, que são as duplicatas de algum ator que</p><p>pode surgir devido a alguma condicionalidade ou mesmo à programação dos</p><p>blocos. Eles lembram os blocos de eventos, mas por uma determinação do</p><p>programador do Scratch, ficaram agrupados nessa categoria de controle.</p><p>62</p><p>6.5.4.8 Blocos de sensores</p><p>Pelo uso dos dezoito blocos que compõe essa categoria podemos</p><p>estipular o tipo de interação que condiciona, associada com as demais</p><p>categorias de blocos, as ações dos atores e cenários. Essas interações podem</p><p>ser, por exemplo, um ator de um jogo se aproximar de outro ou tocá-lo. Também</p><p>poderia ser o usuário clicando com o mouse ou apertando determinada tecla e</p><p>isso ser o fator determinante para uma ação de algum componente. Confira os</p><p>blocos de sensores logo abaixo:</p><p>Os formatos dos blocos de sensores já denunciam que alguns têm locais</p><p>específicos para se encaixarem junto aos blocos de outras categorias. Por</p><p>exemplo: o bloco “tocando na cor? ” Necessariamente deve associar-se aos</p><p>blocos de controle para determinar o que ocorre se o ator em questão tocar na</p><p>cor escolhida por você. Alguns dos blocos de controle que têm formato</p><p>arredondado podem ser acoplados a outros blocos das categorias anteriores</p><p>para determinar um valor numérico específico, como por exemplo o ano atual.</p><p>Como já foi citado, na parte II, ao colocar a mão na massa e começar suas</p><p>criações próprias ou a partir dos exemplos que serão apresentados, você</p><p>compreenderá melhor as possibilidades que os blocos de sensores</p><p>proporcionam.</p><p>63</p><p>6.5.4.9 Blocos de operadores</p><p>Os blocos de operadores têm função lógica e matemática, utilizada em</p><p>associação com os demais grupos de blocos. Essa utilização associada dos</p><p>grupos de blocos é importante quando se quer determinar números que</p><p>dependem de outros componentes, sua posição na tela, entre outros fatores.</p><p>São dezoito os blocos de operadores, que podemos conferir a seguir:</p><p>O uso de todos os grupos de blocos que vimos até aqui já permite</p><p>desenvolver muitas criações interessantes. Associando os diversos blocos,</p><p>podemos criar por exemplo objetos virtuais que interajam com o usuário. Mas</p><p>esse já é um passo além do usuário iniciante, que você poderá alcançar sem</p><p>problemas por meio de sua dedicação à prática.</p><p>Vamos ilustrar a seguir com o código pronto de um objeto interativo</p><p>que aprenderemos mais à frente como fazer, nos exemplos deste guia. Você</p><p>pode visualizar os diversos tipos de blocos trabalhando em conjunto para</p><p>executar algumas ações a partir da interação com o usuário.</p><p>Nesse objeto, criamos um código que faz o ator perguntar para o</p><p>usuário o ano em que nasceu e, a partir da resposta, executar mais duas</p><p>ações.</p><p>64</p><p>6.5.4.10 Blocos de variáveis</p><p>Além dos sete grupos de blocos de programação que vimos</p><p>anteriormente, também existem os blocos de variáveis. Normalmente utilizamos</p><p>variáveis em projetos mais complexos e avançados. Elas servem para</p><p>armazenar números e sequência de letras na memória do computador, como o</p><p>resultado de um cálculo matemático, ou o nome do usuário, por exemplo. Pode</p><p>ser utilizada para um ator se referir ao usuário pelo nome, por exemplo.</p><p>65</p><p>Como esse guia tem um caráter introdutório e de conhecimentos básicos</p><p>sobre o Scratch, conforme vamos criando variáveis, surgem outros blocos como</p><p>o primeiro que vemos, mas com o nome que escolhemos para a variável. Dessa</p><p>forma, podemos utilizar a variável em conjunto com os demais blocos de</p><p>programação.</p><p>Sugestão de material complementar:</p><p>1. SCRATCH: Guia Prático para aplicação na Educação Básica. Disponível em:</p><p>https://www.cp2.g12.br/blog/mpcp2/files/2017/02/Produto-Michel-de-Souza-</p><p>20191.pdf</p><p>2. SCRATCH PARA PROFESSORES: proposta de construção de objetos de</p><p>aprendizagem. Disponível em:</p><p>http://repositorio.ufpa.br/jspui/bitstream/2011/12987/1/Dissertacao_ScratchProfessor</p><p>esProposta.pdf</p><p>https://www.cp2.g12.br/blog/mpcp2/files/2017/02/Produto-Michel-de-Souza-20191.pdf</p><p>https://www.cp2.g12.br/blog/mpcp2/files/2017/02/Produto-Michel-de-Souza-20191.pdf</p><p>http://repositorio.ufpa.br/jspui/bitstream/2011/12987/1/Dissertacao_ScratchProfessoresProposta.pdf</p><p>http://repositorio.ufpa.br/jspui/bitstream/2011/12987/1/Dissertacao_ScratchProfessoresProposta.pdf</p><p>66</p><p>6.6 OPEN ROBERTA</p><p>Open Roberta é o nome de um projeto dentro da iniciativa educacional</p><p>alemã "Roberta - Aprendizagem com robôs", iniciada por Fraunhofer IAIS, que</p><p>é um instituto pertencente à Sociedade Fraunhofer. Com o Open Roberta</p><p>Fraunhofer, a IAIS busca incentivar as crianças a codificar usando robôs como</p><p>Lego Mindstorms e outros sistemas de hardware programáveis como Arduíno,</p><p>BBC micro: bit e o Calliope mini . A abordagem da nuvem do Open Roberta</p><p>Lab visa simplificar os conceitos de programação e tornar mais fácil para</p><p>professores e escolas ensinarem a programar.</p><p>O Open Roberta é gratuito e</p><p>não requer instalação.</p><p>Figura - ambiente simulado da plataforma Open Roberta</p><p>Fonte: https://www.youtube.com/watch?v=rXXgRF5j86U</p><p>Sugestão de vídeos:</p><p>1. https://www.youtube.com/watch?v=PdzYSrPNqPk</p><p>2. https://www.youtube.com/watch?v=EirgTTjLCdk</p><p>3. https://eventos.ifg.edu.br/steam4girls/2021/03/23/como-utilizar-o-open-</p><p>roberta-mobile/</p><p>https://en.wikipedia.org/wiki/Fraunhofer_Society</p><p>https://en.wikipedia.org/wiki/Lego_Mindstorms</p><p>https://en.wikipedia.org/wiki/Arduino</p><p>https://en.wikipedia.org/wiki/BBC_micro:bit</p><p>https://en.wikipedia.org/wiki/Calliope_mini</p><p>https://en.wikipedia.org/wiki/Cloud_Computing</p><p>https://www.youtube.com/watch?v=rXXgRF5j86U</p><p>https://www.youtube.com/watch?v=EirgTTjLCdk</p><p>67</p><p>6.6.1 MICROSOFT MAKECODE</p><p>O Microsoft MakeCode é uma plataforma gratuita de software livre</p><p>para criar experiências envolventes de aprendizagem em ciência da</p><p>computação. A plataforma disponibiliza um Simulador Interativo fornece aos</p><p>alunos um feedback imediato sobre como seu programa está sendo</p><p>executado e facilita o teste e a depuração do código, Editor de Blocos que</p><p>ajuda os alunos iniciantes, na criação e desenvolvimento da programação</p><p>com blocos coloridos e de encaixe, facilitando assim a criação dos programas.</p><p>A plataforma também disponibiliza uma área de gamificação, na qual os</p><p>alunos podem criar seus jogos do zero, utilizando o Editor de Blocos, bem</p><p>como, aplicativos para celular, o que torna mais dinâmica a sua utilização.</p><p>Figura - ambiente de simulação e programação do MakeCode</p><p>Fonte: https://www.youtube.com/watch?v=ZuBOY0qdXHw</p><p>Sugestão de vídeo:</p><p>1. https://www.youtube.com/watch?v=gFaxRhia76s - Makecode EV3 -</p><p>utilização dos sensores.</p><p>2. https://www.youtube.com/watch?v=bvoAHzCFOyA&t=13s - Introdução parte</p><p>1</p><p>3. https://www.youtube.com/watch?v=QI8vFciZZGE - Introdução parte 2</p><p>Dentro da própria plataforma há diversas atividades e tutoriais disponíveis. Basta</p><p>selecionar de acordo com a demanda</p><p>da aula.</p><p>https://www.youtube.com/watch?v=ZuBOY0qdXHw</p><p>https://www.youtube.com/watch?v=gFaxRhia76s</p><p>https://www.youtube.com/watch?v=bvoAHzCFOyA&t=13s</p><p>https://www.youtube.com/watch?v=QI8vFciZZGE</p><p>68</p><p>6.6.2 ArduinoBlocks</p><p>Uma vez que tenhamos definido o hardware necessário para um</p><p>projeto, o próximo passo é programar o microcontrolador da placa Arduino</p><p>para executar as tarefas necessárias para a operação desejada.</p><p>A programação da placa Arduino é normalmente feita em linguagem</p><p>C++ a partir do ambiente IDE Arduino. Para programar, devemos primeiro</p><p>conhecer essa linguagem.</p><p>ArduinoBlocks, da mesma forma, é um ambiente online que nos</p><p>permite programar Arduino (sem ter que conhecer a linguagem de</p><p>programação C ++) visualmente no estilo de programação de blocos.</p><p>ArduinoBlocks implementa blocos gerais comuns a qualquer ambiente</p><p>de programação e, por outro lado, blocos específicos para o Arduino, onde</p><p>podemos acessar dados de leitura / gravação dos pinos de entrada / saída,</p><p>acessar informações de sensores conectados, atuadores de manipulação,</p><p>periféricos como a tela LCD e muitas outras funcionalidades.</p><p>Programa de exemplo gerado automaticamente no modo "teste"</p><p>69</p><p>6.6.3 Lógica</p><p>Com esses blocos temos acesso às funções lógicas necessárias para</p><p>implementar em nosso programa Arduino.</p><p>As funções lógicas funcionam com valores ou expressões de</p><p>"verdadeiro" ou "falso"</p><p>• Condição / decisão: Avalia uma condição lógica, se ela for cumprida</p><p>executa o bloco "do" se não for cumprido executa o bloco "mas"</p><p>(opcional)</p><p>Exemplo de comparações:</p><p>• Avaliar condição (numérica): Devolve verdadeiro ou falso consoante</p><p>a condição indicada seja satisfeita entre os dois operandos</p><p>(numéricos).</p><p>70</p><p>Exemplo: Comparação numérica "maior ou igual a"</p><p>• Avaliar condição (booleana): Retorna verdadeiro ou</p><p>falso dependendo se a condição declarada é atendida entre os dois</p><p>operandos booleanos (verdadeiro ou falso).</p><p>• Conjunção/Disjunção (AND): Avalia duas expressões lógicas e</p><p>retorna verdadeiro ou falso dependendo da função lógica selecionada.</p><p>Exemplo: condição lógica "e" (AND)</p><p>• Negação: Permite negar (reverter) um valor lógico de verdadeiro ou falso.</p><p>Exemplo: negação de um detector para saber quando "não" há</p><p>movimento</p><p>• Constantes lógicas: Estes são valores booleanos que indicam um dos</p><p>dois estados possíveis</p><p>71</p><p>6.2.4.2 Control</p><p>As estruturas de controle nos permitem executar loops e iterações.</p><p>• Repetir: Repita (n) vezes os blocos dentro.</p><p>Exemplo:</p><p>• Repetir como condição: Repete enquanto ou até que uma condição</p><p>seja atendida.</p><p>Exemplo:</p><p>• Contagem: Loops com uma variável de índice. Você define um valor</p><p>inicial, um valor final e os incrementos que serão executados em cada</p><p>interação do loop. Dentro do loop podemos usar essa variável.</p><p>Exemplo:</p><p>72</p><p>6.6.5 Matemática</p><p>• Constante numérica: Permite especificar um valor numérico inteiro ou</p><p>decimal.</p><p>• Inteiro / Não assinado: Trata o valor como um inteiro. Se</p><p>especificarmos não assinado, ele tratará o valor como uma variável não</p><p>assinada internamente.</p><p>Para variáveis ArduinoBlocks usa o tipo de dados "Double" ao traduzir</p><p>o programa para a linguagem C++. Em caso de conversão, ele é tratado como</p><p>uma "transmissão" para um tipo de dados "longo" ou "longo não assinado"</p><p>• Ângulo: Define um valor de ângulo em graus. É um valor numérico</p><p>como é, mas com a vantagem de que permite definir o valor de forma</p><p>visual, olhando para o ângulo graficamente.</p><p>• Operações básicas:</p><p>Exemplo:</p><p>• Adicionar à variável: Aumenta ou diminui o valor de uma variável pelo</p><p>valor indicado (se for um valor positivo aumenta se for negativo</p><p>diminui).</p><p>73</p><p>• Funções matemáticas:</p><p>• Atan2: Calcula o arco tangente de y/x, onde y é o primeiro parâmetro</p><p>e x o segundo.</p><p>• Mapeamento: Permite modificar o intervalo de um valor ou variável de</p><p>um intervalo de origem para um intervalo de destino. Esta função é</p><p>especialmente útil para adaptar os valores lidos a partir de sensores ou</p><p>para adaptar valores a serem aplicados em um atuador.</p><p>Exemplo:</p><p>- Sensor de temperatura: 10ºC ... 50ºC</p><p>- Arduino leitura analógica: 0 ... 1023</p><p>Precisamos converter da faixa de 0-1023 lida para a faixa de 10ºC-</p><p>50ºC:</p><p>• Limite: Permite limitar o valor mínimo e máximo.</p><p>74</p><p>Exemplo:</p><p>• Número aleatório: Gera um valor aleatório entre os valores</p><p>especificados.</p><p>Exemplo:</p><p>• Resto: Obtém o resto da divisão dos dois operandos.</p><p>Exemplo</p><p>Exemplo: Usando vários blocos de operações matemáticas:</p><p>• NaN?: Permite detectar se o valor armazenado em uma variável ou</p><p>obtido de um sensor ou de qualquer outro bloco é NaN (Not a Number),</p><p>ou seja, se não é um número válido. Esse caso pode surgir em alguns</p><p>sensores que retornam esse valor em caso de erro ou em caso de</p><p>operação matemática inválida.</p><p>75</p><p>Exemplo de uso de "es NaN":</p><p>6.6.6 TEXTO</p><p>As funções de texto são especialmente úteis com o uso na porta serial</p><p>(console) e em outros periféricos, como telas LCD. Eles permitem que você</p><p>trabalhe com variáveis de texto de tipo ou com textos prefixados.</p><p>• Constante de texto: Define o texto estaticamente.</p><p>• Número de formato: Obtém em forma de texto o valor de uma variável</p><p>ou constante numérica no formato especificado.</p><p>Exemplo:</p><p>• Formatar número com decimais: Executa a conversão de uma</p><p>variável ou constante numérica em texto exatamente como o bloco</p><p>anterior, mas pode indicar o número de decimais a serem exibidos.</p><p>76</p><p>Exemplo: Enviar o valor de uma variável como texto através do</p><p>console formatado para 6 e 1 casas decimais, respectivamente:</p><p>• Criar texto com: Cria texto a partir da junção de outros textos ou</p><p>variáveis. As variáveis especificadas</p><p>são convertidas em texto</p><p>formatado em decimal.</p><p>Exemplo:</p><p>• Comprimento: Obtém o número de caracteres no texto.</p><p>Exemplo de uso de blocos de texto:</p><p>• Comparação de texto: Permite comparar duas cadeias de texto. O</p><p>resultado é um valor lógico de verdadeiro ou falso.</p><p>77</p><p>Exemplo: Comparando variáveis de texto e tipo de texto</p><p>• Contém o texto: Verifica se há texto dentro do texto indicado. Retorna</p><p>true se existir e false caso contrário.</p><p>Exemplo:</p><p>• Pesquisar em texto: Procura a posição de um texto dentro de outro</p><p>texto. Se o texto pesquisado não for encontrado, ele retornará o valor</p><p>0, caso contrário, retornará a posição onde o texto começa.</p><p>Exemplo:</p><p>• Dividir texto: Obtém uma parte do texto, indicando a posição inicial e</p><p>final dentro do texto para criar a subcadeia de caracteres.</p><p>Exemplo:</p><p>78</p><p>• Substituir em texto: Substitui todas as ocorrências do texto indicado</p><p>pela nova dentro da variável de texto selecionada.</p><p>Exemplo:</p><p>• Valor ASCII: Obtém um valor numérico correspondente ao valor na</p><p>tabela ASCII do caractere correspondente. Este bloco é útil para</p><p>detectar pressionamentos de tecla que são enviados por comunicação</p><p>serial, bluetooth, etc. como bytes independentes.</p><p>Tabela ASCII de caracteres imprimíveis:</p><p>• Criar texto CSV: Permite criar um texto no formato CSV concatenando</p><p>os diferentes elementos e adicionando um separador entre eles</p><p>79</p><p>(selecionável entre "", ";" e tab). Este bloco é especialmente útil para</p><p>gerar texto com vários valores para armazenar em um arquivo em um</p><p>cartão microSD e, em seguida, abrir com uma planilha.</p><p>Exemplo:</p><p>6.6.7 VARIÁVEIS</p><p>Uma variável é um buraco na memória onde o programa pode</p><p>armazenar valores numéricos. O sistema nos permite atribuir-lhes um nome</p><p>simbólico como "temperatura externa", "velocidade", "servo posição 1",</p><p>"estado", para facilitar o uso.</p><p>Existem três tipos de variáveis no ArduinoBlocks: numérico, booleano e texto.</p><p>• Variáveis numéricas: permite valores numéricos inteiros ou com</p><p>decimais, internamente eles são representados com o tipo de dados</p><p>"doublé" ao gerar o código para Arduino. Esse tipo usa 4 bytes e</p><p>permite armazenar valores no intervalo: -3,4028235E+38 a</p><p>3,4028235E+38</p><p>80</p><p>Exemplo:</p><p>Exemplo:</p><p>• Variáveis de texto—Armazene valores de texto. Internamente, ele usa</p><p>o tipo de dados "String" ao gerar o código para Arduino.</p><p>Exemplo:</p><p>Exemplo:</p><p>• Variáveis booleanas: Permite armazenar valores lógicos booleanos</p><p>de dois estados (verdadeiro/falso, ON/OFF, HIGH/LOW, ...)</p><p>Exemplo:</p><p>Exemplo:</p><p>81</p><p>6.6.8 Listas</p><p>As listas de dados nos permitem armazenar uma lista de valores e</p><p>acessá-los por sua posição na lista. As listas podem ser numéricas ou de</p><p>texto.</p><p>• Listas numéricas:</p><p>Podemos criar uma lista nomeando a lista e atribuindo valores iniciais</p><p>a ela.</p><p>Exemplo:</p><p>Para saber o número de itens que temos em uma lista, podemos usar</p><p>o bloco:</p><p>Em uma lista, podemos obter o valor de uma posição (de 0 para</p><p>o número de elementos-1 na lista) com o bloco, por exemplo, se tivermos 10</p><p>elementos, podemos acessá-los de 0 a 9:</p><p>Ou altere o valor de um elemento indicando sua posição e o novo</p><p>valor:</p><p>82</p><p>Exemplo: Posicionamento de um motor (servo) em diferentes posições</p><p>(graus) prefixados em uma lista.</p><p>• Listas de texto:</p><p>Podemos criar uma lista nomeando a lista e atribuindo valores iniciais</p><p>a ela.</p><p>Exemplo:</p><p>Para saber o número de itens que temos em uma lista, podemos usar</p><p>o bloco:</p><p>Em uma lista, podemos obter o valor de uma posição (de 1 para o</p><p>número de itens na lista) com o bloco:</p><p>Ou altere o valor de um elemento indicando sua posição e o novo</p><p>valor:</p><p>83</p><p>Exemplo: exibindo saudações em idiomas diferentes de uma lista</p><p>6.6.9 Funções</p><p>As funções permitem agrupar blocos de código. Isso é útil quando um</p><p>bloco de código é repetido em várias partes do programa e, assim, evitar</p><p>escrevê-lo várias vezes ou quando queremos dividir o código do nosso</p><p>programa em blocos funcionais para tornar-se um programa mais</p><p>compreensível.</p><p>• Definição de uma função: A definição consiste em criar o grupo onde</p><p>podemos inserir o código de bloco que forma a função. Devemos dar-</p><p>lhe um nome representativo que usaremos para chamar essa função e</p><p>executá-la.</p><p>• Parâmetros: As funções podem ser adicionadas parâmetros para</p><p>especificar na chamada.</p><p>84</p><p>• Chamar uma função: Permite que você chame a execução da função,</p><p>os blocos internos da função serão executados e no final a execução</p><p>será seguida onde a chamada de função foi feita.</p><p>Exemplo: Função para calcular a área de um triângulo</p><p>Exemplo: Função para enviar informações através do console</p><p>Exemplo: Função para calcular o comprimento de uma circunferência</p><p>Exemplo: Divisão em partes funcionais de um programa real.</p><p>85</p><p>Chamada do loop principal do programa:</p><p>6.6.10.1 Blocos de funções arduino</p><p>Na próxima seção, veremos os blocos relacionados às funções da</p><p>placa Arduino. Esses blocos nos permitirão acessar funcionalidades do</p><p>próprio microcontrolador e outros serão orientados para sensores, atuadores</p><p>ou periféricos que podemos conectar à placa Arduino para desenvolver</p><p>nossos projetos.</p><p>6.6.10.2 ENTRADA/SAÍDA</p><p>As funções genéricas de entrada/saída nos permitem ler ou gravar nos</p><p>pinos digitais e analógicos da placa Arduino.</p><p>• Ler Pino Digital: Obtém o valor do pino digital (0/1, ON/OFF,</p><p>true/false). (Lembre-se de ler um ON/1 devemos aplicar 5v na entrada</p><p>digital e 0v para ler um OFF/0)</p><p>86</p><p>Exemplo:</p><p>• Inserir pino digital: grava o valor em um pino digital (0/1, ON/OFF,</p><p>true/false). (Se ativado, a saída fornecerá 5v caso contrário, 0v)</p><p>Exemplo:</p><p>Versão equivalente:</p><p>• Ler pino analógico: Lê o valor de uma entrada analógica.</p><p>O conversor DAC (Digital Analógico Converter) interno é de 10 bits,</p><p>de modo que os valores lidos de uma entrada analógica variam de 0 a 1023.</p><p>(10 bits = 2^10 = 1024 valores possíveis)</p><p>87</p><p>Exemplo:</p><p>• Gravar Pino Analógico: Define o valor do ciclo de pulso ativo/inativo</p><p>de uma saída digital PWM. O valor deve estar no intervalo entre 0 e</p><p>255.</p><p>Exemplo: pino 3 a 25%, pino 5 a 50%, pino 6 a 100%</p><p>• Pulso de leitura: Lê um pulso em um pino até que o valor de entrada</p><p>mude para ON ou OFF. Ele mede a duração do pulso em</p><p>microssegundos. Se o tempo limite indicado for excedido sem alterar o</p><p>estado, ele retornará o valor 0.</p><p>• Interrupção externa: permite que você execute um bloco de código</p><p>quando ocorre uma interrupção externa indicando o tipo de "gatilho" que</p><p>produz o evento:</p><p>Blocos dentro de uma interrupção externa não devem usar muito</p><p>tempo do microcontrolador, devem executar tarefas simples e não</p><p>88</p><p>bloquear por um longo tempo (em nenhum caso use blocos "esperar",</p><p>...)</p><p>• Leitura/Gravação em E/S digital externa (extensor I2C): Se você</p><p>precisar de mais pinos de E/S digitais, podemos usar um extensor com</p><p>conexão I2C para expandir o número de E/S digitais de 8 para 8 (até</p><p>64).</p><p>• Escrever PWM analógico (PCA9685): Se precisarmos expandir</p><p>as saídas do tipo PWM para controle de intensidade, servos, etc ...</p><p>podemos usar o extensor PCA9695 expandindo o número de saídas</p><p>PWM disponíveis de 8 por 8. Uma opção interessante, por exemplo,</p><p>para projetos com um grande número de servos.</p><p>Placa de expansão de saída PWM:</p><p>Tempo</p><p>As funções de tempo ou atraso nos permitem pausar e obter</p><p>informações sobre o tempo decorrido dentro do microcontrolador.</p><p>• Esperar: Pausa (bloqueia a execução do programa) até a execução</p><p>do próximo bloco.</p><p>89</p><p>Exemplo: Levou 1 segundo ligado, 1 segundo fora</p><p>• Tempo decorrido: Obtém um valor com o tempo decorrido desde a</p><p>inicialização ou redefinição do microcontrolador</p><p>da placa Arduino. O</p><p>valor pode ser em milissegundos ou microssegundos.</p><p>Exemplo: Execute Task1 a cada 3 segundos e Task2 a cada 7</p><p>segundos sem bloquear a execução do programa:</p><p>• Aguarde para sempre: Bloqueia a execução indefinidamente,</p><p>encerrando assim o programa.</p><p>90</p><p>Exemplo: a ativação da entrada do pino 6 conclui a execução.</p><p>Exemplo: Operação equivalente (aguarde para sempre):</p><p>• Run Every: Um bloco que implementa automaticamente a função de</p><p>tarefa explicada acima. IMPORTANTE: Este bloco NÃO bloqueia a</p><p>execução do programa</p><p>Exemplo: Executa blocos dentro deles se o tempo decorrido desde a</p><p>última execução for maior ou igual a 1000 ms.</p><p>Programa equivalente:</p><p>Quando precisamos executar diferentes tarefas periódicas e que</p><p>parecem correr em paralelo sem bloquear uns aos outros, usaremos esse tipo</p><p>de bloco "executar todos".</p><p>91</p><p>Se no programa usamos blocos como GPS devemos evitar os blocos</p><p>de "espera" se quisermos que o programa funcione corretamente. Ver nos</p><p>blocos incompatíveis com blocos de "espera".</p><p>Exemplo: Tarefas simultâneas com períodos de execução diferentes.</p><p>A precisão da execução de tarefas desta forma depende do tempo</p><p>gasto por cada tarefa, se uma tarefa "leva muito tempo" ela bloqueará e</p><p>"atrasará" o resto. Para o bom funcionamento cada tarefa deve ser executada</p><p>no menor tempo possível e nunca utilizar blocos do tipo esperar ou fazer loops</p><p>de duração indeterminada que possam permanecer em execução</p><p>indefinidamente.</p><p>Exemplos do que NÃO fazer dentro das tarefas:</p><p>92</p><p>• Cronômetro: Permite obter o tempo decorrido em ms ou s, e é</p><p>facilmente ajustado para 0 com a reinicialização do bloco.</p><p>Exemplo: Jogo em que eu tenho que pressionar um botão</p><p>periodicamente sem deixá-lo passar nunca mais de 10s entre as teclas</p><p>pressionadas, caso contrário, um LED acende indicando que perdemos.</p><p>• Suspensão: Este bloco coloca a placa Arduino no modo de baixa</p><p>potência por alguns milissegundos.</p><p>6.6.10.3 Multitarefa</p><p>ArduinoBlocks nos permite usar uma camada para implementar um</p><p>sistema multitarefa avançado baseado em FreeRTOS. Este sistema permite</p><p>criar tarefas que serão executadas em paralelo (virtualmente). Em</p><p>microcontroladores modestos como o Arduino UNO, Nano ou mesmo MEGA</p><p>multitarefa com FreeRTOS é bastante limitado e consome grande parte dos</p><p>recursos do nosso Arduino, em caso de necessidade de um sistema</p><p>multitarefa mais poderoso podemos optar por usá-lo em placas baseadas em</p><p>ESP8266 ou ESP32 com muito mais energia e recursos (especialmente o</p><p>ESP32 com dual core e grande poder de processamento e memória interna)</p><p>6.6.10.4 Blocos</p><p>Com todas essas informações, passamos a ver os blocos disponíveis</p><p>para colocar tudo isso em movimento e, em seguida, alguns exemplos:</p><p>93</p><p>94</p><p>Exemplo 1: Piscando vários LEDs em velocidades diferentes</p><p>Exemplo 2: LED intermitente + servo em movimento</p><p>95</p><p>Exemplo 3: Melodia RTTTL + Tela LCD + Sensor de Luz LDR</p><p>Tarefa 1: Exibe o valor do LDR no LCD e o nome da música</p><p>reproduzida.</p><p>Tarefa 2: Reproduza músicas diferentes e atualize o nome na variável.</p><p>6.6.10.5 Bluetooth</p><p>A comunicação com o módulo Bluetooth HC-06 é exatamente a</p><p>mesma que a da porta serial, na verdade, o que o módulo Bluetooth faz é</p><p>encapsular todas as informações seriais através de uma conexão serial virtual</p><p>através de um perfil Bluetooth de emulação de porta serial.</p><p>Podemos simular uma conexão serial com um dispositivo móvel (com</p><p>Bluetooth compatível com o perfil da porta serial), um PC ou outro módulo</p><p>Bluetooth semelhante em outro dispositivo.</p><p>O Arduino UNO possui apenas uma porta serial implementada em seu</p><p>hardware, de modo a não utilizar o módulo Bluetooth nos pinos 0 e 1</p><p>(correspondentes à porta serial do hardware) e interferir na comunicação</p><p>serial ou na programação do dispositivo (como outros ambientes fazem) os</p><p>96</p><p>blocos Bluetooth implementam uma porta serial de software que funciona</p><p>exatamente da mesma forma e pode ser configurada em qualquer outro pino</p><p>digital tanto para RX (receber) quanto TX (transmitir).</p><p>Exemplo de conexão do módulo Bluetooth HC-06</p><p>BlueTerm Android</p><p>Início: Permite configurar os pinos onde o módulo Bluetooth está</p><p>conectado e a velocidade com que vamos trabalhar.</p><p>No caso do microcontrolador ESP32 com bluetooth integrado, basta</p><p>indicar o nome do dispositivo Bluetooth para iniciar a comunicação:</p><p>Nome: O módulo Bluetooth HC-06 permite que você configure o nome</p><p>e o código PIN através de comandos. Com este bloco podemos fazê-lo</p><p>facilmente, o único requisito para que ele funcione é que nenhum dispositivo</p><p>Bluetooth esteja conectado naquele momento ao módulo HC-06. Por outro</p><p>lado, geralmente é necessário reiniciar o módulo para que a nova</p><p>configuração apareça (e desemparelhar o dispositivo móvel se já estiver).</p><p>Enviar: Digite um valor de texto ou o valor de uma variável na porta</p><p>serial. A opção "Line Break" permite que você adicione ou não uma devolução</p><p>de carrinho no final da remessa para sair da linha.</p><p>97</p><p>Enviar Byte: Envia um valor numérico como um byte (8 bits). Portanto,</p><p>o valor deve estar entre 0 e 255.</p><p>Dados Recebidos: Obtém um valor de true se houver dados recebidos</p><p>pendentes de processamento ou false se nada tiver sido recebido pela</p><p>conexão serial.</p><p>Receber Texto: Lê uma cadeia de caracteres de texto recebida pela</p><p>porta serial. Se a opção "até quebrar a linha" for indicada assim que uma</p><p>quebra de linha for encontrada, ela retornará o texto recebido. Caso contrário,</p><p>até que os dados não sejam mais recebidos.</p><p>Receber Byte: Leia um byte (8 bits) da porta serial.</p><p>Receber como Número: Leia uma cadeia de caracteres de texto</p><p>recebida pela porta serial e tente interpretá-la como um número. Funciona da</p><p>mesma forma que a porta serial boque (consulte os detalhes da operação na</p><p>porta serial)</p><p>Definir Tempo Limite: Define o tempo limite máximo para receber</p><p>dados através da conexão serial Bluetooth (valor em milissegundos).</p><p>Exemplo: Enviando uma variável de contador via Bluetooth.</p><p>98</p><p>6.6.10.6 BLUETOOTH HID 3.3.4.1 (ESP32 / ESP32 STEAMAKERS)</p><p>Nas placas baseadas em microcontroladores ESP32 temos a opção</p><p>de converter nosso dispositivo em um teclado ou mouse Bluetooth</p><p>(dispositivo HID: Dispositivo Interface Humano).</p><p>Desta forma, podemos emparelhar nossa placa com qualquer celular,</p><p>tablet, PC ou dispositivo compatível com o Bluetooth HID e enviar</p><p>simulações de pressionamentos de teclas ou movimentos do mouse, o que</p><p>nos permite criar interfaces para jogos, interfaces de controle</p><p>personalizadas e adaptadas ou enviar diretamente dados do sensor como</p><p>se estivéssemos digitando-os no dispositivo.</p><p>6.6.10.7 Sensores</p><p>No mercado existem inúmeros sensores e módulos para Arduino,</p><p>embora com os blocos genéricos (entrada / saída) podemos ler as</p><p>informações da maioria dos sensores digitais e analógicos</p><p>ArduinoBlocks implementa blocos específicos para os sensores mais comuns</p><p>no mercado. Esses blocos às vezes se limitam à leitura de informações digitais</p><p>ou analógicas, dependendo do tipo de sensor, e em outros casos eles</p><p>adaptam os dados lidos para ajustá-los à realidade (por exemplo, ao ler um</p><p>sensor de temperatura adapta a leitura a graus Celsius com um cálculo</p><p>interno).</p><p>ArduinoBlocks incorpora blocos para a maioria dos sensores</p><p>modulares que podemos encontrar no mercado, alguns muito populares como</p><p>sensores Keyestudio e similares.</p><p>ArduinoBlocks é uma plataforma online em contínua evolução.</p><p>99</p><p>Sensor potenciômetro: Permite obter a posição do controle rotativo.</p><p>Ângulo de operação de cerca de 270º. Varia o valor da tensão aplicada à</p><p>entrada dependendo da posição de sua resistência variável interna.</p><p>Tipo:</p><p>Analógico</p><p>Fixo: A0-A5 Valor: 0-100 (%) / 0..1023</p><p>Exemplo: Sensor potenciômetro conectado ao pino analógico A0 para</p><p>ajustar uma variável de temperatura a um valor entre 5 e 30 graus.</p><p>Sensor de botão de pressão: Botão para interagir por toque.</p><p>Tipo: Digital Pino: 2-13/A0-A5</p><p>Valor: 0/1</p><p>(F/V, Off/On)</p><p>Dependendo da conexão que fazemos do botão, ou no caso de usar</p><p>módulos de botão de diferentes fabricantes, a lógica de operação do botão</p><p>pode ser diferente:</p><p>100</p><p>Conexão:</p><p>Sem pressionar "off" / pressionado: "on"</p><p>Conexão:</p><p>Sem pressionar "on" / pressionado:</p><p>"off"</p><p>Alguns módulos de botão de pressão trabalham internamente</p><p>inversamente devido à sua conexão interna. Nesse caso, o botão recebe</p><p>sempre um sinal "On" e quando o pressionamos gera o sinal "Off". Nesse</p><p>caso, podemos reverter a condição para detectar quando ele é pressionado.</p><p>Exemplo: ligar um LED quando o botão é pressionado e desligar se</p><p>não estiver.</p><p>Exemplo com operação semelhante à anterior:</p><p>Botão filtrado: É um bloco semelhante ao anterior, mas que</p><p>internamente faz um processamento do sinal do botão evitando "saltos" e</p><p>também detectando o "pulsar" e a "liberação"</p><p>Como no anterior, se pela conexão interna do botão o sinal lógico</p><p>funciona ao contrário ("on" em repouso e "off" ao pressionar) podemos indicar</p><p>101</p><p>que eu trabalho com lógica invertida:</p><p>Sensor de movimento (PIR): É ativado quando detecta movimento em</p><p>torno dele, a partir de um momento sem detecção, o sensor é desativado</p><p>novamente.</p><p>Tipo: Digital</p><p>Pino: 2-13/A0-</p><p>A5</p><p>Valor: 0/1</p><p>(F/V, Off/On)</p><p>Exemplo: Acender o LED no pino 13 quando o movimento é detectado.</p><p>Sensor PIR conectado ao pino 6:</p><p>Sensor de temperatura e umidade (DHT-11): O sensor DHT-11 é um</p><p>sensor que usa seu próprio protocolo de comunicação para nos fornece o</p><p>valor da temperatura e umidade. ArduinoBlocks usa internamente uma</p><p>biblioteca para obter as informações decodificadas do sensor. É um sensor de</p><p>baixa precisão, mas muito econômico e versátil. Em um único pino, ele nos</p><p>permite obter dois valores com precisão suficiente para muitas aplicações</p><p>simples.</p><p>Tipo: Pino de dados: 2-13/A0-A5</p><p>Valor: Temperatura: 0-50ºC ±2ºC / Umidade: 20-90% ±5%</p><p>102</p><p>Exemplo: Exiba o valor de temperatura e umidade no console a cada</p><p>5 segundos. Sensor conectado ao pino 10.</p><p>Sensor de temperatura (NTC): Obtém o valor da temperatura</p><p>ambiente. Ele usa um resistor NTC variável que varia seu valor dependendo</p><p>da temperatura ambiente. A relação resistência/temperatura não é linear, mas</p><p>internamente o valor é calculado em graus aplicando a seguinte fórmula para</p><p>obter o valor corrigido em ºC:</p><p>Tipo: Analógico Fixo: A0-A5 Valor: -40... 125ºC</p><p>103</p><p>Exemplo: Exibindo a temperatura pelo console serial a cada 5</p><p>segundos. Sensor conectado ao pino A3:</p><p>Sensor de distância (HC-SR04): O sensor gera uma série de tons</p><p>ultrassônicos (não audíveis), esses tons se eles retornarem de uma superfície</p><p>e forem capturados por um receptor ultrassônico que incorpora o próprio</p><p>sensor. Ao medir o tempo que leva para o ultrassom retornar, podemos</p><p>calcular a distância a que o objeto em que eles saltaram é.</p><p>✓ Tipo: Dados</p><p>✓ Gatilho do pino (transmissão): 2-13/A0-A5</p><p>✓ Eco do pino (recepção): 2-13/A0-A5</p><p>✓ Valor: 2 – 400 cm</p><p>104</p><p>Exemplo: Ativação do LED no pino 13 quando detectado um objeto</p><p>entre 10 e 80 cm de distância.</p><p>Sensor de detector de obstáculos (IR): Usando um diodo emissor</p><p>de IR e um foto transistor receptor IR, ele permite detectar quando há um</p><p>obstáculo nas proximidades pela reflexão da luz IR. Esse tipo de sensor</p><p>normalmente permite um ajuste para definir a distância na qual o sensor é</p><p>ativado.</p><p>Tipo: Digital Pino: 2-13/A0-A5</p><p>Valor: 0/1</p><p>(F/V, Off/On)</p><p>Sensor de Nível de Som: Detecta o nível de som ambiente.</p><p>Tipo: Analógico Pino: A0-A5/A0-A5 Valor: 0-100 (%) / 0..1023</p><p>105</p><p>Exemplo - Detector de alto nível sonoro. Sensor no pino A0</p><p>6.7 TINKERCAD</p><p>O Tinkercad é uma ferramenta online de design de modelos 3D em CAD</p><p>e também de simulação de circuitos elétricos analógicos e digitais,</p><p>desenvolvida pela Autodesk. Por ser gratuito e fácil de usar, encontramos nele</p><p>uma oportunidade de ensino de Programação Embarcada, visto que a</p><p>primeira barreira encontrada pelos alunos é a de não possuir os componentes</p><p>e o microcontrolador em mãos. Estendendo a oportunidade de utilização, a</p><p>plataforma conta agora, com a criação de salas de aula, o que possibilita ao</p><p>professor um maior controle e monitoramento de acesso e participação dos</p><p>estudantes, podendo ter feedbacks e avaliações imediatas, tornando assim a</p><p>aprendizagem mais eficaz.</p><p>Figura - ambiente de simulação e programação do Tinkercad</p><p>Fonte:https://multilogica-shop.com/blog/conhe%C3%A7a-o-tinkercad</p><p>106</p><p>6.8 Linguagem C/C++</p><p>O C++ é uma linguagem de programação de nível médio, baseada na</p><p>linguagem C. O desenvolvimento da linguagem começou na década de 80,</p><p>por Bjarne Stroustrup. O objetivo do desenvolvimento desta linguagem era</p><p>melhorar uma versão do núcleo Unix. Para desenvolver a linguagem, foram</p><p>acrescentados elementos de outras linguagens de vários níveis, na tentativa</p><p>de criar uma linguagem com elementos novos, sem trazer problemas para a</p><p>programação. No início do desenvolvimento, a linguagem usava um pré-</p><p>processador, mas Stroustrup criou um compilador próprio, com novas</p><p>características.</p><p>A primeira versão oficial do C++ apareceu em 1985, juntamente com</p><p>o livro “The C++ Programming Language”, que esclareceu vários pontos sobre</p><p>o C++. Em 1989 foi lançada uma segunda versão da linguagem, com</p><p>acréscimo das características: Herança múltipla, classes abstratas, métodos</p><p>estáticos, métodos constantes e membros protegidos, incrementando também</p><p>um suporte de orientação a objeto. Um ano depois foi lançado o livro “The</p><p>Annotated C++ Reference Manual”, que se tornou uma base.</p><p>O C++ tem uma enorme variedade de códigos, pois além de seus</p><p>códigos, pode contar com vários da linguagem C. Esta variedade possibilita a</p><p>programação em alto e baixos níveis. O C++ apresenta grande flexibilidade,</p><p>embora seja bom, este fato faz com que a programação seja muito mais</p><p>cuidadosa para não terem erros.</p><p>Alguns fatos sobre o C++:</p><p>● O C++ é uma linguagem criada para ser tão eficiente quanto o C, porém</p><p>com novas funções.</p><p>● É uma linguagem que suporta múltiplos paradigmas</p><p>● A linguagem livre permite ao programador escolher as opções, mesmo</p><p>sendo a opção errada.</p><p>● Muitos códigos podem ser transferidos para C facilmente, pois o C++ foi</p><p>criado para ter compatibilidade com o C.</p><p>https://www.infoescola.com/informatica/o-que-sao-linguagens-de-programacao/</p><p>107</p><p>● A linguagem não tem privilégios para alguns grupos de programadores, os</p><p>comandos são feitos para todas as especialidades de programadores</p><p>● Não é necessário um ambiente de desenvolvimento muito potente para o</p><p>desenvolvimento de C++.</p><p>Alguns dos mais conhecidos programas são feitos em C++, ou parte</p><p>dos seus códigos são nessa linguagem. Alguns deles são: Adobe Photoshop,</p><p>MySQL, Mozilla Firefox, Internet Explorer, Microsoft Windows, entre vários</p><p>outros.</p><p>A linguagem C é mais complicada, e tem de se ter mais atenção a erros de</p><p>lógica, porém é mais fácil corrigir os erros que em C++, pois muitas das</p><p>sintaxes do C++ são sutis, e quando se erra alguma coisa mínima, o código</p><p>simplesmente não funciona, ou em caso de erros menores, o código passa a</p><p>apresentar problemas muito difíceis de identificar.</p><p>Figura - exemplo de programação em C/C++</p><p>Fonte:http://www.bitdaeducacao.com.br/2018/05/aula-11-c-estrutura-de-condicao-if-</p><p>else.html</p><p>http://www.bitdaeducacao.com.br/2018/05/aula-11-c-estrutura-de-condicao-if-else.html</p><p>http://www.bitdaeducacao.com.br/2018/05/aula-11-c-estrutura-de-condicao-if-else.html</p><p>108</p><p>7 - CIRCUITOS ELÉTRICOS E COMPONENTES BÁSICOS (MONTAGEM E</p><p>SEGURANÇA – KIT ARDUINO)</p><p>Sobre a teoria de circuitos elétricos, é importante conhecer os conceitos de</p><p>grandezas elétricas: tensão, corrente, carga, energia potência elétrica. Em todos os</p><p>textos sobre Arduino ou qualquer assunto que envolva eletrônica, terá que se lidar</p><p>com esses termos.</p><p>7.1 Circuito elétrico</p><p>É uma interconexão de elementos elétricos/eletrônicos. Essa interconexão</p><p>pode ser feita para atender a uma determinada tarefa, como acender uma lâmpada,</p><p>acionar um motor, dissipar calor em uma resistência e tantas outras.</p><p>O circuito pode estar energizado ou desenergizado. Quando está</p><p>energizado, uma fonte de tensão externa ou interna está ligada aos componentes</p><p>do circuito. Nesse caso, uma corrente elétrica fluirá entre os condutores do circuito.</p><p>Quando está desenergizado, a fonte de tensão não está conectada e não há</p><p>corrente elétrica fluindo entre os condutores. Alguns elementos básicos de circuitos,</p><p>como os capacitores ou massas metálicas, são elementos que armazenam energia</p><p>elétrica. Em alguns casos, mesmo não havendo fonte de tensão conectada a um</p><p>circuito, pode ser que um elemento que tenha energia armazenada descarregue</p><p>essa energia dando origem a uma corrente elétrica transitória no circuito. Evitar que</p><p>elementos do circuito fiquem energizados mesmo sem uma fonte de tensão, o que</p><p>pode provocar descargas elétricas posteriores (e em alguns casos, danificar o</p><p>circuito ou causar choques elétricos) é um dos motivos dos sistemas de</p><p>aterramento em equipamentos como osciloscópios e em instalações residenciais,</p><p>por exemplo.</p><p>7.2 Principais grandezas elétricas</p><p>7.2.1 Carga elétrica</p><p>É uma propriedade de natureza eletromagnética de certas partículas</p><p>elementares como prótons e os elétrons, e essa propriedade está associada</p><p>ao poder de atração ou repulsão que as partículas manifestarem. Por</p><p>convenção os elétrons têm carga negativa e os prótons têm carga positiva e</p><p>109</p><p>o menor valor que a carga elétrica pode assumir chamamos de carga</p><p>elementar “e” cujo módulo vale 1,6.10-19 coulomb(C).</p><p>*coulomb é unidade de carga elétrica no Sistema Internacional de Unidades</p><p>(SI)</p><p>https://descomplica.com.br/d/vs/aula/atomistica-estrutura-atomica-pne-numero-de-massa-e-</p><p>massa-atomica-atomos-e-ions-relacao-entre-atomosssss/</p><p>7.2.1 Condutores e isolantes</p><p>Condutores: são materiais que permitem o trânsito dos portadores de carga</p><p>com facilidade. Os materiais que são bons condutores como por exemplo, os</p><p>metais, essa mobilidade dada aos elétrons livres que estão fracamente ligados</p><p>ao núcleo.</p><p>https://geartechbr.com.br/os-metais-sao-condutores-eletricos-ou-isolantes-eletricos/</p><p>110</p><p>Isolantes: são materiais que dificultam a movimentação de portadores de</p><p>carga e também são chamados de dielétricos.</p><p>https://www.mundodaeletrica.com.br/condutores-eletricos-tipos-caracteristicas/</p><p>7.2.3 Corrente elétrica</p><p>corrente elétrica. A medida utilizada para corrente elétrica no Sistema internacional</p><p>(SI) é o ampère (A).</p><p>✓ Tipos de corrente elétrica: contínua e alternada.</p><p>✓ Corrente elétrica contínua (CC): é uma corrente que tem intensidade e</p><p>sentidos constantes.</p><p>Exemplos de geradores de corrente contínua: pilhas, baterias e dínamos.</p><p>https://blog.eletrogate.com/componentes-eletronicos-basicos/</p><p>✓ Corrente elétrica alternada (AC): é uma corrente de intensidade variável, cujo</p><p>sentido se inverte em intervalos de tempo iguais. Essa e a modalidade de corrente</p><p>elétrica é a mais utilizada na distribuição de eletricidade em quase todo o mundo.</p><p>Uma das principais fontes de corrente alternada são, por exemplo, aquelas</p><p>fornecidas pelas concessionárias de energia elétrica através das linhas de</p><p>transmissão que são distribuídas para todo país chegando em nossas casas ,</p><p>indústrias e praticamente todas as redes elétricas nas cidades.</p><p>111</p><p>https://portal.dzp.pl/nhk/percurso-da-energia-eletrica-da-usina-ate-as-casas.html</p><p>OBS: Com o Arduino UNO, lida-se com correntes elétricas contínuas, pois elas</p><p>fluem sempre em uma mesma direção. É diferente da corrente e tensão elétrica da</p><p>tomada de uma casa, que são alternadas. Ou seja, os circuitos com Arduino UNO</p><p>sempre serão alimentados com grandezas contínuas (corrente e tensão contínuas).</p><p>7.2.4 Tensão elétrica</p><p>Para que haja corrente elétrica em um condutor, é preciso que os elétrons</p><p>se movimentem por ele em uma determinada direção, ou seja, é necessário</p><p>“alguém” para transferir energia para as cargas elétricas para movê-las. Isso é feito</p><p>por uma força chamada força eletromotriz (fem), tipicamente representada por uma</p><p>bateria. Outros dois nomes comuns para força eletromotriz são tensão elétrica e</p><p>diferença de potencial.</p><p>Tensão elétrica é a energia necessária para mover uma unidade de carga</p><p>através de um elemento, e é medida em volts (V).</p><p>7.2.5 Potência elétrica, energia elétrica e resistores.</p><p>A potência é definida como a variação de energia (que pode estar sendo</p><p>liberada ou consumida) em função do tempo, e é medida no Sistema Internacional</p><p>(SI) em watts (W). A potência está associada ao calor que um componente está</p><p>dissipando e a energia que ele consume.</p><p>Sabe-se da vida prática que uma lâmpada de 100W (100 joules a cada</p><p>segundo) consome mais energia do que uma de 60 W (60 joules a cada segundo).</p><p>112</p><p>Isto é, se ambas estiverem ligadas por 1 hora por exemplo, a lâmpada de 100W vai</p><p>implicar numa conta de energia mais cara.</p><p>A potência pode se relacionar com a tensão, corrente, resistência e energia</p><p>pelas seguintes expressões:</p><p>P = I x U P = U2/R P = R x i2 P = Energia/ tempo</p><p>P- potência(W)</p><p>U-tensão(V)</p><p>i-corrente elétrica (A)</p><p>R- resistência elétrica (Ω)</p><p>Essa é uma das maneiras de se calcular a chamada potência instantânea.</p><p>Com a expressão P = i.U sabe-se qual a potência dissipada em um resistor,</p><p>bastando que se saiba a tensão nos terminais do resistor e a corrente que flui por</p><p>ele.</p><p>7.2.6 Energia elétrica</p><p>Matematicamente a energia elétrica pode ser determinada multiplicando-</p><p>se da potência elétrica do equipamento pelo intervalo de tempo em que o dispositivo</p><p>elétrico esteve em funcionamento. A energia elétrica pode ser dada em joules (J)</p><p>se utilizarmos o SI ou kWh (kilowatt-hora). A unidade kWh é mais usual e é nela</p><p>que efeito o cálculo de consumo mensal de energia elétrica nas unidades</p><p>habitacionais pelas concessionárias energia elétrica.</p><p>7.2.7 Resistores</p><p>São componentes elétricos destinados, em geral, a limitar a intensidade</p><p>da corrente elétrica. Normalmente, os resistores são conhecidos pela sua</p><p>capacidade de transformar energia elétrica em energia térmica. Porém, nem</p><p>sempre um resistor é idealizado com esse objetivo.</p><p>Em todos os aparelhos elétricos classificados como resistivos, a função do</p><p>resistor é promover o Efeito Joule. Exemplos: chuveiro elétrico, torradeira elétrica e</p><p>aquecedor elétrico.</p><p>A unidade de resistência elétrica é o ohm (Ω), que é a unidade usada</p><p>para especificar o valor dos resistores, e utilizam-se as representações:</p><p>113</p><p>7.3 Conversão de níveis lógicos e alimentação correta de circuitos</p><p>O Arduino UNO, é alimentado por um cabo USB ou uma fonte externa entre</p><p>6V e 12V. O Circuito do Arduino possui reguladores de tensão que convertem a</p><p>alimentação de entrada para 5V e para 3V. Os sinais lógicos das portas de saída</p><p>(I/Os) do Arduino, variam entre 0 e 5V. Isso significa que quando se quiser usar o</p><p>Arduino UNO com um sensor ou CI que trabalhe com 3.3V, é preciso fazer a</p><p>adequação dos níveis de tensão, pois se enviar</p><p>6.5.4.9 Blocos de operadores...............................................................................................................63</p><p>6.5.4.10 Blocos de variáveis.................................................................................................................64</p><p>6.6 Open Roberta...................................................................................................................................66</p><p>6.6.1 Microsoft Makecode.....................................................................................................................67</p><p>6.6.2 ArduinoBlocks..............................................................................................................................68</p><p>6.6.3 Lógica............................................................................................................................................69</p><p>6.6.4 Control..........................................................................................................................................71</p><p>6.6.5 Matemática...................................................................................................................................72</p><p>6.6.6 Texto.............................................................................................................................................75</p><p>6.6.7 Variáveis.......................................................................................................................................79</p><p>6.6.8 Listas.............................................................................................................................................81</p><p>6.6.9 Funções........................................................................................................................................83</p><p>6.6.10.1 Blocos de funções Arduino...................................................................................................85</p><p>6.6.10.2 Entrada/Saída..........................................................................................................................84</p><p>6.6.10.3 Multitarefa................................................................................................................................92</p><p>6.6.10.4 Blocos......................................................................................................................................92</p><p>6.6.10.5 Bluetooth.................................................................................................................................95</p><p>6.6.10.6 Bluetooth HID 3.3.4.1 (ESP32 / ESP32 STEAMakers) ..........................................................98</p><p>6.6.10.4 Sensores..................................................................................................................................98</p><p>6.7 Tinkercad.......................................................................................................................................105</p><p>6.8 Linguagem C/C++..........................................................................................................................106</p><p>7.CIRCUITOS ELÉTRICOS E COMPONENTES BÁSICOS (MONTAGEM E SEGURANÇA - KIT</p><p>ARDUINO)............................................................................................................................................108</p><p>7.1 Circuito elétrico.............................................................................................................................108</p><p>7.2 Principais grandezas elétricas.....................................................................................................108</p><p>7.2.1 Carga elétrica...........................................................................................................................108</p><p>7.2.2 Condutores e isolantes..............................................................................................................109</p><p>7.2.3 Corrente elétrica.........................................................................................................................110</p><p>7.2.4 Tensão elétrica...........................................................................................................................111</p><p>7.2.5 Potência e energia......................................................................................................................111</p><p>7.2.6 Energia elétrica...........................................................................................................................112</p><p>7.2.7 Resistores(definição).....................................................................................................112</p><p>7.3 Conversão de níveis lógicos e alimentação correta de circuitos............................................113</p><p>7.4 Componentes eletrônicos............................................................................................................114</p><p>7.5 Medida de tensão de pilhas e baterias........................................................................................115</p><p>7.6 Resistores elétricos, suas aplicações e propriedades..............................................................115</p><p>7.7 Medida de resistência elétrica de resistores..............................................................................116</p><p>7.8 Capacitores...................................................................................................................................117</p><p>7.8.1 Capacitores eletrolíticos...........................................................................................................118</p><p>7.8.2 Capacitores cerâmicos.............................................................................................................118</p><p>7.9 Periódicos do kit Arduino............................................................................................................119</p><p>7.9.1 Diodos e leds.............................................................................................................................119</p><p>7.9.2 Push-button…………………………………………………………………………………………….120</p><p>7.9.3Protoboard……………………………………………………………….……………………………...120</p><p>7.9.4 Buzzer……………………………………………………………………………………………………120</p><p>7.9.5 Servo motor……………………………………………………………………………………………..120</p><p>7.9.6 Seguidor de linha TCRT5000……………...................………………….......................................121</p><p>7.9.7 Módulo relé.................................................................................................................................121</p><p>7.9.8 Controle remoto infravermelho.................................................................................................121</p><p>7.9.9 Sensor PIR..................................................................................................................................121</p><p>7.9.10 Shield de LCD 16x2 com teclado.............................................................................122</p><p>7.9.11 SS49E - Sensor de campo magnético......................................................................122</p><p>7.9.12 DS18B20 - Sensor digital de temperatura..............................................................................122</p><p>7.9.13 Sensor ultrasônico HC - SR04.................................................................................................123</p><p>7.9.14 LDR - Resistência dependente de luz.....................................................................................123</p><p>7.9.15 Sensor de temperatura............................................................................................................123</p><p>7.9.16 LCD............................................................................................................................................123</p><p>um sinal de 5V (saída do Arduino)</p><p>em um circuito de 3.3V (CI ou sensor), poderá queimar o pino daquele componente.</p><p>Geralmente, sempre que dois circuitos que trabalhem com níveis de tensão</p><p>diferentes forem conectados, é preciso fazer a conversão dos níveis lógicos. O mais</p><p>comum é ter que abaixar saídas de 5V para 3.3V. Subir os sinais de 3.3V para 5V</p><p>na maioria das vezes não é necessário pois o Arduino entende 3.3V como nível</p><p>lógico alto, isto é, equivalente a 5V.</p><p>Para fazer a conversão de níveis lógicos tem-se duas opções:</p><p>• Usar um divisor de tensão.</p><p>• Usar um CI conversor de níveis lógicos</p><p>O divisor de tensão é a solução mais simples, mas usar um CI conversor</p><p>é o ideal. O divisor de tensão consiste em dois resistores ligados em série (Z1 e</p><p>Z2), em que o sinal de 5V é aplicado ao terminal de um deles. O terminal do segundo</p><p>resistor é ligado ao GND, e o ponto de conexão entre os dois resistores é a saída</p><p>do divisor, cuja tensão é dada pela seguinte relação:</p><p>Em que Z1 e Z2 são os valores dos resistores da figura a seguir:</p><p>114</p><p>Um divisor de tensão muito comum é fazer Z1 igual 330ohms e Z2 igual</p><p>680ohms. Dessa forma a saída Volt fica sendo 3.336V. Como no Kit Arduino</p><p>Robótica não há resistor de 680ohms, pode-se ligar um de 330ohms como Z1 e dois</p><p>de 330 ohms como Z2. Os dois de 330 ligados em série formam um resistor de 660</p><p>ohm, o que resulta numa saída de 3.33V.</p><p>7.4 Componentes eletrônicos</p><p>O Kit Arduino Robótica possui os seguintes componentes básicos para</p><p>montagens de circuitos:</p><p>• Protoboard</p><p>• Buzzer Ativo 5V</p><p>• Servo Motor</p><p>• Seguidor de linha TCRT5000</p><p>• Módulo Relé</p><p>• Controle Remoto Infravermelho</p><p>• Shield de LCD 16x2 com Teclado</p><p>• SS49E - Sensor de Campo Magnético</p><p>• DS18B20 - Sensor Digital de Temperatura</p><p>• Sensor Ultrasônico HC - SR04</p><p>• LDR - Resistência Dependente de Luz</p><p>• Sensor de Temperatura LM35</p><p>• LED Vermelho/ Verde/ Amarelo</p><p>• Resistor 330Ω/ 1KΩ/ 10KΩ</p><p>• Diodo 1N4007</p><p>• Potenciômetro 10KΩ</p><p>• Capacitor Cerâmico 10 nF/ 100 nF,</p><p>• Capacitor Eletrolítico 10uF/ 100uF</p><p>• Chave Táctil (Push-button)</p><p>Para se fazer as montagens, será visto aqui a função de cada um deles</p><p>dentro de um circuito eletrônico e serão apresentadas algumas equações</p><p>fundamentais.</p><p>115</p><p>7.5 Medida de tensão de pilhas e baterias</p><p>O multímetro é um aparelho utilizado para realizar medidas de tensão,</p><p>corrente e resistência elétrica, por exemplo: Para se medir tensão elétrica em uma</p><p>bateria, deve-se ligar a ponteira vermelha do multímetro DT33C em VΩmA e a</p><p>ponteira preta em COM e o cursor do multímetro em 20V tensão contínua (consultar</p><p>o manual do multímetro para maiores detalhes). Deve-se então colocar a ponteira</p><p>vermelha no positivo da bateria e a ponteira preta no negativo.</p><p>7.6 Resistores elétricos, suas aplicações e propriedades</p><p>São componentes que se opõem à passagem de corrente elétrica, ou seja,</p><p>oferecem uma resistência elétrica. Dessa forma, quanto maior for o valor de um</p><p>resistor, menor será a corrente elétrica que fluirá por ele e pelo condutor a ele</p><p>conectada. A unidade de resistência elétrica é o ohm (Ω), que é a unidade usada</p><p>para especificar o valor dos resistores.</p><p>Os resistores mais comuns do mercado são construídos com fio de carbono</p><p>e são vendidos em várias especificações. Os resistores do Kit são os tradicionais</p><p>de 1/4W e 10% de tolerância. Isso significa que eles podem dissipar no máximo</p><p>1/4W (0,25 watts) e seu valor de resistência pode variar em até 10%. O resistor de</p><p>1KΩ pode então ter um valor mínimo de 900Ω e um valor máximo de 1100Ω.</p><p>Em algumas aplicações pode-se precisar de resistores com precisão maior,</p><p>como 5% ou 1%. Em outros casos, pode-se precisar de resistores com potência</p><p>maior, como 1/2W ou menor, como 1/8W. Essas variações dependem da natureza</p><p>de cada circuito.</p><p>Geralmente para as aplicações típicas e montagens de prototipagem que</p><p>podem ser feitos com o Kit Arduino Robótica, os resistores tradicionais de 1/4W e</p><p>10% de tolerância são suficientes.</p><p>É importante se mencionar aqui a Lei de Ohm, que relaciona as grandezas</p><p>de tensão, corrente e resistência elétrica. A lei é dada por:</p><p>U = R x I</p><p>116</p><p>Quando se sabe o valor de um resistor e a tensão aplicada nos seus</p><p>terminais, pode-se calcular a corrente elétrica que fluirá por ele. Juntamente com a</p><p>equação para calcular potência elétrica, a lei de Ohm é importante para saber se</p><p>os valores de corrente e potência que os resistores de seu circuito estão operando</p><p>são adequados.</p><p>7.7 Medida de resistência elétrica de resistores</p><p>Devemos ligar a ponteira vermelha do multímetro DT33C em VΩmA</p><p>e a ponteira preta em COM e o cursor do multímetro em Ω resistência elétrica</p><p>num valor acima do valor do resistor. Por exemplo, se o resistor for de 1kΩ a</p><p>primeira e melhor opção é colocar a chave do multímetro em 2000Ω (consultar</p><p>o manual do multímetro para maiores detalhes). Deve-se então colocar a</p><p>ponteira vermelha num terminal do resistor e a ponteira preta no outro</p><p>terminal, com o resistor desconectado de qualquer circuito.</p><p>Como saber o valor de resistência de um resistor? Tem-se duas</p><p>alternativas: medir a resistência usando um multímetro ou determinar o valor por</p><p>meio do código de cores do resistor.</p><p>Se pegar um dos resistores do kit, irá se ver que ele possui algumas faixas</p><p>coloridas em seu corpo. Essas faixas são o código de cores do resistor. As duas</p><p>primeiras faixas dizem os dois primeiros algarismos decimais. A terceira faixa</p><p>colorida indica o multiplicador que irá ser usado. E a última faixa, que fica um pouco</p><p>mais afastada, indica a tolerância.</p><p>Faixas coloridas em um resistor</p><p>Na figura abaixo apresenta-se o código de cores para resistores. Cada cor</p><p>está associada a um algarismo, um multiplicador e uma tolerância, conforme a</p><p>tabela. Com a tabela pode-se determinar a resistência de um resistor sem ter que</p><p>usar o multímetro. Fazer medições com o multímetro é recomendado</p><p>117</p><p>principalmente se o componente já tiver sido utilizado, pois o mesmo pode ter</p><p>sofrido algum dano ou mudança que não esteja visível.</p><p>No código de cores de resistores temos fundamentalmente 4 cores. As três</p><p>primeiras cores indicam o valor do resistor e a quarta cor a possível variação em</p><p>porcentagem deste valor.</p><p>1ª cor – algarismo; 2ª cor – algarismo; 3ª cor – potência multiplicadora; 4ª cor –</p><p>porcentagem de variação.</p><p>7.8 Capacitores</p><p>Os capacitores são os elementos mais comuns nos circuitos eletrônicos</p><p>depois dos resistores. São elementos que armazenam energia na forma de campos</p><p>elétricos. Um capacitor é constituído de dois terminais condutores e um elemento</p><p>dielétrico entre esses dois terminais, de forma que quando submetido a uma</p><p>diferença de potencial, um campo elétrico surge entre esses terminais, causando o</p><p>acúmulo de cargas positivas no terminal negativo e cargas negativas no terminal</p><p>positivo.</p><p>São usados para implementar filtros, estabilizar sinais de tensão, na</p><p>construção de fontes retificadores e várias outras aplicações.</p><p>Os capacitores podem ser de quatro tipos:</p><p>• Eletrolíticos</p><p>• Cerâmicos</p><p>• Poliéster</p><p>• Tântalo</p><p>118</p><p>7.8.1 Capacitores eletrolíticos</p><p>As diferenças de cada tipo de capacitor são a tecnologia construtiva e o</p><p>material dielétrico utilizado. Os Capacitores eletrolíticos</p><p>são feitos de duas longas</p><p>camadas de alumínio (terminais) separadas por uma camada de óxido de alumínio</p><p>(dielétrico). Devido a sua construção, eles possuem polaridade, o que significa que</p><p>obrigatoriamente deve-se ligar o terminal positivo (quem tem uma “perninha” maior)</p><p>no polo positivo da tensão de alimentação, e o terminal negativo (discriminado no</p><p>capacitor por uma faixa com símbolos de “-”) obrigatoriamente no polo negativo da</p><p>bateria. Do contrário, o capacitor será danificado.</p><p>Os Capacitores eletrolíticos costumam ser da ordem de micro farad,</p><p>sendo o farad a unidade de medida de capacitância, usada para diferenciar um</p><p>capacitor do outro. A Figura abaixo mostra um típico capacitor eletrolítico.</p><p>Capacitor eletrolítico 4700 micro farad / 25 V</p><p>7.8.2 Capacitores cerâmicos</p><p>Não possuem polaridade, e são caracterizados por seu tamanho reduzido</p><p>e por sua cor característica, um marrom claro um tanto fosco. Possuem</p><p>capacitância da ordem de pico farad. Nas imagens a seguir trazem um típico</p><p>capacitor cerâmico e sua identificação.</p><p>Na imagem da esquerda, os capacitores possuem o valor de 22 nano farads</p><p>para a faixa de tensão de até 500V.</p><p>223 = 22 x 1000 = 22.000 pF = 22 nF</p><p>Há também os capacitores de poliéster e de tântalo. No Kit Arduino</p><p>Robótica, trazem apenas exemplares de capacitores eletrolíticos e cerâmicos.</p><p>119</p><p>7.9 Periódicos de KIT arduino</p><p>7.9.1 DIODOS E LEDS</p><p>Tratam na verdade do mesmo componente. Diodos são elementos</p><p>semicondutores que só permitem a passagem de corrente elétrica em uma direção.</p><p>São constituídos de dois terminais, o Anodo (+) e o catodo (-), onde para que possa</p><p>conduzir corrente elétrica, é preciso conectar o Anodo na parte positiva do circuito,</p><p>e o Catodo na parte negativa. Do contrário, o diodo se comporta como um circuito</p><p>aberto.</p><p>Diodo e seus terminais</p><p>Na figura acima, pode-se ver que o componente possui uma faixa</p><p>indicadora do terminal de catodo. O diodo do kit Arduino Robótica é um modelo</p><p>tradicional e que está no mercado há muitos anos, o 1N4007.</p><p>O LED é um tipo específico de diodo - Light Emitter Diode, ou seja, diodo</p><p>emissor de luz. Trata-se de um diodo que quando polarizado corretamente, emite</p><p>luz para o ambiente externo. Pode-se compreender o LED como uma pequena</p><p>lâmpada que consome baixa energia, mas que fornece uma luminosidade</p><p>comparável a uma lâmpada do mesmo porte. As cores mais tradicionais de leds</p><p>são: vermelha, verde e amarelo.</p><p>É importante saber que sempre deve-se ligar um led junto de um resistor,</p><p>para que a corrente elétrica que flua pelo led não seja excessiva e acabe por</p><p>queimá-lo. Além disso, por ser um diodo, o led só funciona se o Anodo estiver</p><p>conectado ao polo positivo do sinal de tensão.</p><p>Para identificar o Anodo do Led, basta identificar a perna mais longa do</p><p>componente, como na imagem abaixo:</p><p>Terminais de um Led</p><p>120</p><p>7.9.2 PUSH-BUTTON</p><p>Botão ou chave – uma chave ou botão. Tem o mesmo princípio de</p><p>funcionamento de um interruptor (liga, desliga), quando ele é pressionado os seus</p><p>contatos entram em curto.</p><p>7.9.3 Protoboard</p><p>A protoboard é uma placa para montar circuitos de protótipos. Ela tem</p><p>ligações elétricas internas que você deve compreender para poder montar os</p><p>circuitos. Utilizaremos uma protoboard de 830 pontos.</p><p>7.9.4 Buzzer</p><p>Emite som quando é acionado. Para utilizá-lo usamos a função “tone” que</p><p>tem o seguinte formato: tone (pino, frequência, duração) onde a frequência do tom</p><p>é em hertz, e a duração em mili segundos.</p><p>7.9.5 Servo motor</p><p>É um atuador de alta precisão que pode girar entre 0ْ e 180 ْ .</p><p>121</p><p>7.9.6 Seguidor de linha TCRT5000</p><p>É composto de um emissor infravermelho e um receptor. A partir da</p><p>quantidade de luz refletida em uma superfície consegue-se identificar uma faixa na</p><p>cor preta em uma superfície branca ou vice-versa.</p><p>7.9.7 Módulo relé</p><p>É uma chave eletromecânica que quando é energizada aciona um contato</p><p>fechando um circuito. Esse funcionamento permite que um circuito isolado acione</p><p>outro de potência maior.</p><p>7.9.8 Controle remoto infravermelho</p><p>Emite um sinal infravermelho em uma determinada frequência, neste caso</p><p>38kHz, que tem um código diferente para cada tecla. Do outro lado tem-se um</p><p>receptor infravermelho configurado para trabalhar também na frequência de 38kHz,</p><p>este receptor está ligado ao Arduino que decodifica o sinal enviado.</p><p>7.9.9 Sensor PIR</p><p>O sensor HC-SR501 PIR (Passive InfraRed) é um sensor infravermelho que</p><p>detecta movimento de corpos que emitem radiação infravermelha por volta de</p><p>10μm, por exemplo seres humanos e outros animais de corpo quente. Este sensor</p><p>tem um ângulo de “visão” cônico de 100º e seu alcance pode variar entre 3m e 7m</p><p>122</p><p>ajustado pelo trimpot à direita. Quando detecta algum movimento o sensor PIR</p><p>coloca sua saída em nível alto (3,3V) por um período entre 5s e 300s, que também</p><p>poder ser ajustado pelo trimpot da esquerda, e quando não há movimento sua saída</p><p>fica em nível baixo (0V).</p><p>7.9.10 Shield de LCD 16x2 com teclado</p><p>Este shield encaixa-se sobre o Arduino, logo neste projeto não haverá</p><p>esquema de ligações na protoboard. O shield tem 2 linhas de dígitos, cada uma</p><p>com 16 dígitos. Além disso possui um teclado para movimentação e escolha em</p><p>menus.</p><p>7.9.11 SS49E – sensor de campo magnético</p><p>O sensor hall 49e é um sensor linear que quando é atravessado por um</p><p>campo magnético produz uma corrente elétrica proporcional ao campo magnético.</p><p>O sensor 49e mede campos magnéticos entre -1500 Gauss e +1500 Gauss</p><p>e produz tensões na saída que vão de 0,86V a 4,21.</p><p>DS18B20 – sensor digital de temperatura</p><p>O DS18B20 é um sensor digital de temperatura. Tem comunicação serial e</p><p>funciona entre temperaturas de -55 ْC e 125 ْC. Cada DS18B20 tem um código</p><p>123</p><p>serial de 64 bits que permite vários deles utilizarem a mesma linha serial para se</p><p>comunicar com o microprocessador.</p><p>7.9.12 Sensor ultrssônico HC – SR04</p><p>A finalidade deste sensor é aferir a distância entre dois pontos. Para isso</p><p>ele utiliza um sinal ultrassonoro (fora do alcance dos ouvidos humanos)</p><p>cronometrando o tempo entre a emissão e recepção do sinal junto com o valor da</p><p>velocidade do som, pode-se determinar a posição da barreira em relação ao sensor.</p><p>7.9.13 LDR – resistência dependente de luz</p><p>É um sensor de luz, que varia sua resistência elétrica de acordo com a</p><p>intensidade luminosa sobre o mesmo. Comumente utilizado em sistemas de</p><p>controle de luminosidade para acendimento automático de luzes.</p><p>7.9.14 Sensor de temperatura</p><p>Segue a mesma ideia do LDR, mas neste caso sua resistência varia de</p><p>acordo com a temperatura e não com a luminosidade.</p><p>7.9.15 LCD</p><p>Display que pode ser utilizado para exibir mensagens através do Arduino.</p><p>124</p><p>8 - Placa arduino (HARDWARE)</p><p>O Arduíno é uma plataforma de desenvolvimento composta por dois</p><p>componentes: a placa que é o hardware e que será utilizada na construção</p><p>dos projetos (Arduíno uno, mega uno, duemilanove, etc) e uma IDE arduíno</p><p>(software de desenvolvimento integrado) onde você pode escrever o seu</p><p>código em linguagem C/C++ e a própria IDE fará todo o processo de</p><p>compilação e transferência do código (MOTA, 2015, p.6).</p><p>8.1 - Alimentação da placa Arduíno</p><p>A placa pode ser alimentada pela conexão USB ou por uma fonte de</p><p>alimentação externa, conforme exibido na figura abaixo:</p><p>A alimentação externa é feita através do conector Jack com positivo no</p><p>centro, onde o valor de tensão da fonte externa deve estar entre os limites 6V.</p><p>a 20V., porém se alimentada com uma tensão abaixo de 7V., a tensão de</p><p>funcionamento da placa, que no Arduíno Uno é 5V, pode ficar instável e</p><p>quando alimentada com tensão acima de 12V, o regulador de tensão da placa</p><p>pode superaquecer e danificar a placa. Dessa forma, é recomendado para</p><p>tensões de fonte externa valores de 7V a 12V (SOUZA, 2013).</p><p>Quando o cabo USB é ligado a um PC, por exemplo, a tensão não</p><p>precisa ser estabilizada pelo regulador de tensão. O circuito da USB apresenta</p><p>alguns componentes que protegem a porta USB do computador em caso de</p><p>alguma anormalidade. Caso haja uma tensão no conector DC e a USB é</p><p>conectada, a tensão de 5V será proveniente da fonte externa e USB servirá</p><p>apenas para comunicação com o PC (SOUZA, 2013).</p><p>A seguir são exibidos os conectores de alimentação para conexão de</p><p>Shields e módulos na placa Arduíno UNO:</p><p>Figura – Alimentação da placa Arduíno UNO</p><p>Fonte: https://www.embarcados.com.br/arduino-uno/</p><p>125</p><p>IOREF – Fornece uma tensão de referência para que Shields possam</p><p>selecionar o tipo de interface apropriada, dessa forma Shields que funcionam</p><p>com a placas Arduíno que são alimentadas com 3,3V. podem se adaptar para</p><p>ser utilizados em 5V. e vice-versa.</p><p>RESET – pino conectado a pino de RESET do microcontrolador. Pode ser</p><p>utilizado para um reset externo da placa Arduíno.</p><p>3,3 V. – Fornece tensão de 3,3V para alimentação de Shields e módulos</p><p>externos. Corrente máxima de 50 mA.</p><p>5 V – Fornece tensão de 5V para alimentação de Shields e circuitos externos.</p><p>GND – pino negativo (GROUND)</p><p>VIN – pino para alimentar a placa através de Shields ou bateria externa.</p><p>Quando a placa é alimentada através do conector Jack, a tensão da fonte</p><p>estará nesse pino.</p><p>8.2 - Comunicação USB da Placa Arduíno UNO</p><p>Como interface USB para comunicação com o computador, há na</p><p>placa um microcontrolador ATMEL ATMEGA16U2.</p><p>Este microcontrolador é o dispositivo programável que roda o código</p><p>que enviamos à placa UNO, possibilitando o upload do código binário gerado</p><p>Figura – Conectores de alimentação Arduíno UNO R3</p><p>Fonte: https://www.embarcados.com.br/arduino-uno/</p><p>Figura – Conversor USB-serial com ATmega16u2</p><p>Fonte: https://www.embarcados.com.br/arduino-uno/</p><p>126</p><p>após a compilação do programa feito pelo usuário. Possui um conector ICSP</p><p>para gravação de firmware através de um programador ATMEL, para</p><p>atualizações futuras (MOTA, 2015, p. 7).</p><p>Nesse microcontrolador também estão conectados dois leds (TX, RX),</p><p>controlados pelo software do microcontrolador, que indicam o envio e recepção</p><p>de dados da placa para o computador. É interessante notar a conexão entre</p><p>este microcontrolador com o ATMEL ATMEGA328, onde é feita pelo canal</p><p>serial desses microcontroladores. Outro ponto interessante que facilita o uso</p><p>da placa Arduíno é a conexão do pino 13 do ATMEGA16U2 ao circuito de</p><p>RESET do ATMEGA328, possibilitando a entrada no modo bootloader</p><p>automaticamente quando é pressionado o botão Upload na IDE. Essa</p><p>característica não acontecia nas primeiras placas Arduíno, onde era</p><p>necessário pressionar o botão de RESET antes de fazer o Upload na IDE</p><p>(SOUZA, 2013).</p><p>8.3 - Microcontrolador do Arduíno UNO</p><p>O componente principal da placa Arduíno UNO é o microcontrolador</p><p>ATMEL ATMEGA328, um dispositivo de 8 bits da família AVR com arquitetura</p><p>RISC avançada e com encapsulamento DIP28. Ele conta com 32 KB de Flash</p><p>(mas 512 Bytes são utilizados pro bootloader), 2 KB de RAM e 1 KB de</p><p>EEPROM. Pode operar a até 20 MHz, porém na placa Arduíno UNO opera em</p><p>16 MHz, valor do cristal externo que está conectado aos pinos 9 e 10 do</p><p>microcontrolador. Observe que, para o projeto dessa placa, os projetistas</p><p>escolheram um cristal com dimensões bem reduzidas (SOUZA JR et al., 2020).</p><p>Possui 28 pinos, sendo que 23 desses podem ser utilizados como I/O.</p><p>A imagem abaixo exibe a sua pinagem:</p><p>Figura 8 – Pinagem ATmega328 usado no Arduíno UNO</p><p>Fonte: https://www.embarcados.com.br/arduino-uno/</p><p>https://www.embarcados.com.br/arduino-uno/</p><p>127</p><p>8.4 - Entradas e saídas do Arduíno</p><p>A placa Arduíno UNO possui pinos de entrada e saídas digitais, assim</p><p>como pinos de entradas e saídas analógicas, abaixo é exibido a pinagem</p><p>conhecida como o padrão Arduíno:</p><p>Segundo Souza Jr et al. (2020), a placa Arduíno UNO possui 14 pinos</p><p>que podem ser usados como entrada ou saída digitais, como mostra a figura</p><p>acima. Estes Pinos operam em 5 V, onde cada pino pode fornecer ou receber</p><p>uma corrente máxima de 40 mA. Cada pino possui resistor de pull-up interno</p><p>que pode ser habilitado por software. Alguns desses pinos possuem funções</p><p>especiais:</p><p>PWM: 3,5,6,9,10 e 11 podem ser usados como saídas PWM de 8 bits através</p><p>da função analogWrite ();</p><p>Comunicação serial: 0 e 1 podem ser utilizados para comunicação</p><p>serial. Deve-se observar que estes pinos são ligados ao microcontrolador</p><p>responsável pela comunicação USB com o PC;</p><p>Interrupção externa: 2 e 3. Estes pinos podem ser configurados para</p><p>gerar uma interrupção externa, através da função attachInterrupt ().</p><p>Para interface com o mundo analógico, a placa Arduíno UNO possui 6</p><p>entradas, onde cada uma tem a resolução de 10 bits. Por padrão a referência</p><p>do conversor AD está ligada internamente a 5V, ou seja, quando a entrada</p><p>estiver com 5V o valor da conversão analógica digital será 1023.</p><p>8.4.1 - Grandezas Digitais e Analógicas</p><p>Antes de desenvolver aplicações práticas com o Arduíno, é necessário</p><p>saber diferenciar uma grandeza analógica de uma grandeza digital. Além</p><p>Figura – Pinos de entrada e saída no Arduíno UNO R3</p><p>Fonte: https://www.embarcados.com.br/arduino-uno/</p><p>128</p><p>disso, é de grande importância aprender como o Arduíno funciona com essas</p><p>grandezas e os conceitos básicos envolvidos no processo de conversão entre</p><p>elas.</p><p>As grandezas digitais são aquelas que não variam continuamente no</p><p>tempo, mas sim em saltos entre valores bem definidos. Um exemplo são os</p><p>relógios digitais: apesar do tempo em si variar continuamente, o visor do</p><p>relógio mostra o tempo em saltos de um em um segundo. Um relógio desse</p><p>tipo nunca mostrará 12,5 segundos, pois, para ele, só existem 12 e 13</p><p>segundos. Qualquer valor intermediário não está definido (ARDUINO, 2019).</p><p>Já as grandezas analógicas são aquelas que, ao contrário das</p><p>grandezas digitais, variam continuamente dentro de uma faixa de valores. O</p><p>velocímetro de um carro, por exemplo, pode ser considerado analógico, pois</p><p>o ponteiro gira continuamente conforme o automóvel acelera ou trava. Se o</p><p>ponteiro girasse em saltos, o velocímetro seria considerado digital (ARDUINO,</p><p>2019).</p><p>Os circuitos e equipamentos elétricos ditos digitais trabalham com</p><p>apenas dois valores de tensão definidos:</p><p>● Um nível lógico alto, que no caso do Arduíno é 5V;</p><p>● Um nível</p><p>lógico baixo, que no caso do Arduíno é 0V.</p><p>As placas Arduíno possuem uma nítida divisão entre os pinos de entrada e</p><p>saída digitais/analógicos, porém em algumas placas como o Arduíno Uno</p><p>qualquer pino pode ser utilizado como entrada ou saída digital, basta</p><p>configurá-lo (ARDUINO, 2019).</p><p>8.4.2 - Caraterísticas de uma Entrada Digital (pull-up e pull-down)</p><p>Quando configuramos um pino como entrada digital ele apresentará</p><p>uma caraterística chamada alta impedância. Isso significa que uma pequena</p><p>corrente consegue fazer com que seu estado mude. Podemos usar essa</p><p>configuração, por exemplo, para ler botões, foto resistências entre outros</p><p>componentes e a partir do estado lido ou das mudanças desses estados</p><p>concluir o que está a acontecer no mundo externo e então tomar ações</p><p>baseadas nessas medidas.</p><p>129</p><p>Segundo Arduinoportugal (2017) caso o pino seja configurado como</p><p>entrada, mas sem estar ligado a nada, poderá alterar o seu estado</p><p>aleatoriamente por ser afetado pelo ruído elétrico do ambiente. Para evitar</p><p>esse problema podemos utilizar uma resistência de pull up ou pull down. Essas</p><p>resistências irão fazer com que a tensão na entrada esteja definida quando o</p><p>mesmo não estiver ligado a nada. As figuras mostram três ligações de um</p><p>botão a um pino do microcontrolador configurado como entrada digital. Para</p><p>cada caso temos:</p><p>Figura abaixo: O estado do pino não está bem definido fazendo com que</p><p>este esteja suscetível a ruído.</p><p>Figura - sem definição do pino</p><p>Fonte: https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-pwm/</p><p>Figura abaixo: Neste caso, devido à presença da resistência de pull-</p><p>down seu estado está bem definido em GND consequentemente o estado</p><p>normal será como baixo.</p><p>Figura - definição de resistência pull down</p><p>Fonte: https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-pwm/</p><p>Figura abaixo: Neste caso, devido à presença da resistência de pull-up</p><p>seu estado está bem definido em +5 V consequentemente o estado normal</p><p>será como alto.</p><p>Figura - definição de resistência pull up</p><p>https://www.arduinoportugal.pt/author/ricardo-sousa/</p><p>130</p><p>Fonte: https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-</p><p>pwm/</p><p>Os microcontroladores existentes nas placas Arduíno possuem</p><p>resistências de pull-up construídos internamente que podem ser acionados</p><p>pelo software.</p><p>8.4.3 - Caraterísticas de uma Saída Digital</p><p>Quando configurados nesse estado os pinos podem fornecer 0 ou 5 V</p><p>fazendo com que eles drenem ou forneçam corrente. O valor máximo dessa</p><p>corrente varia de placa para placa, mas, em geral, é de 30mA. Essa corrente</p><p>é mais do que suficiente para ligar um LED de alto-brilho e alguns sensores,</p><p>porém não é suficiente para ligar a maioria dos relés e motores. Caso uma</p><p>corrente maior que o limite passe por um pino, este poderá ser danificado</p><p>(SOUZA JR et al., 2020).</p><p>8.4.4 - Entradas e saídas analógicas</p><p>Se observarmos, o mundo é quase todo formado por variáveis</p><p>analógicas, tais como posição, temperatura e pressão, de forma que é</p><p>necessário saber trabalhar com esses tipos de grandezas. O Arduíno possui</p><p>um conjunto de pinos destinados a serem utilizados como entradas analógicas</p><p>e outros pinos que podem ser usados como saídas PWM (Simulam uma saída</p><p>analógica). Como tudo no Arduíno é processado de forma digital, é necessário</p><p>converter as grandezas analógicas em digitais e vice-versa. Esses</p><p>conversores já estão embutidos no Arduíno, de forma que é necessário</p><p>apenas que se compreenda o básico do processo de conversão para poder</p><p>utilizar essas portas analógicas (ARDUINOPORTUGAL, 2017).</p><p>https://www.arduinoportugal.pt/author/ricardo-sousa/</p><p>131</p><p>8.4.5 - Entradas Analógicas</p><p>Como o conversor analógico-digital do Arduíno possui uma resolução</p><p>de 10 bits, o intervalo de tensão referência, que no nosso caso é 0 a 5 V, será</p><p>dividido em 1024 pedaços (2^10) e o valor discreto mais próximo da tensão no</p><p>pino será atribuído a essa tensão. Com 10 bits de resolução e um intervalo de</p><p>0 a 5V de tensão podemos representar tensões em degraus de (5-0) /1024</p><p>volts. Supondo uma tensão de 3,25 V o valor retornado pela conversão será:</p><p>3,25 x 1024 / 5 = 665,6</p><p>O resultado deve ser inteiro para que nosso conversor consiga</p><p>representá-lo, logo o valor 665,6 será escolhido por ser o degrau mais próximo.</p><p>Esse valor representa a tensão 3,251953125 inserindo um erro de</p><p>0,001953125 em nossa medida devido a limitação de nossa resolução.</p><p>Saídas PWM</p><p>O PWM (Pulse Width Modulation – Modulação por Largura de Pulso)</p><p>é uma técnica para obter resultados analógicos por meios digitais. Essa</p><p>técnica consiste na geração de uma onda quadrada em uma frequência muita</p><p>alta em que pode ser controlada a percentagem do tempo em que a onda</p><p>permanece em nível lógico alto.</p><p>Esse tempo é chamado de Duty Cycle e sua alteração provoca</p><p>mudança no valor médio da onda, indo desde 0V (0% de Duty Cycle) a 5V</p><p>(100% de Duty Cycle) no caso do Arduíno.</p><p>Fonte: https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-pwm/</p><p>O Duty Cycle é a razão do tempo em que o sinal permanece na tensão</p><p>máxima (5V no Arduíno) sobre o tempo total de oscilação, como está ilustrado</p><p>na figura abaixo:</p><p>132</p><p>Figura - Duty Cycle</p><p>Fonte: https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-pwm/</p><p>Duty Cycle (%) = (x/x+y)*100% = (x/T)*100%</p><p>Vmédio = Vmax*Duty Cycle(%)</p><p>O valor do Duty Cycle usado pelo Arduíno é um inteiro armazenado em</p><p>8 bits, de forma que seu valor vai de 0 (0%) a 255 (100%).</p><p>Quem manipula a placa e projeta o circuito que será conectado aos</p><p>seus I/Os deve ter muito cuidado pois, entre os pinos do microcontrolador e a</p><p>barra de pinos, não há nenhum resistor, que limite a corrente, além disso,</p><p>dependendo do local onde está trabalhando pode-se provocar curto circuito</p><p>nos pinos já que a placa não possui isolação na sua parte inferior, como</p><p>mostrada na figura a seguir (ARDUINOPORTUGAL, 2017).</p><p>A placa não conta com botão liga/desliga – Se quiser desligar a</p><p>alimentação, tem que “puxar” o cabo. O cabo USB tipo B não é tão comum</p><p>Figura 11 – Parte traseira do Arduino UNO – Sem isolamento</p><p>Fonte: https://www.embarcados.com.br/arduino-uno/</p><p>https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-pwm/</p><p>133</p><p>quanto o mini USB, utilizado bastante em celulares. Isso pode ser um</p><p>problema, caso perca o cabo que veio com a placa.</p><p>8.5 - Programação da placa</p><p>A placa Arduino UNO é programada através da comunicação serial,</p><p>pois o microcontrolador vem programado com o bootloader. Dessa forma não</p><p>há a necessidade de um programador para fazer a gravação (ou upload) do</p><p>binário na placa. A comunicação é feita através do protocolo STK500.</p><p>A programação do microcontrolador também pode ser feita através do</p><p>conector ICSP (in – circuit serial programming) utilizando um programador</p><p>ATMEL.</p><p>8.6 - Resumo da placa Arduíno UNO</p><p>Figura – Resumo de recursos da Arduíno</p><p>Fonte: https://www.embarcados.com.br/arduino-uno/</p><p>https://www.embarcados.com.br/arduino-uno/</p><p>134</p><p>9 - ARDUINO IDE (SOFTWARE)</p><p>O Arduíno é uma plataforma de hardware livre, projetado com um</p><p>microcontrolador Atmel AVR. É uma placa de código aberto baseada em um</p><p>circuito de entradas/saídas simples, microcontrolador é desenvolvida sobre</p><p>uma biblioteca que simplifica a escrita da programação em C/C++.</p><p>O microcontrolador pode ser programado com a linguagem de</p><p>programação Arduíno, que é baseada na linguagem Wiring e seu ambiente de</p><p>desenvolvimento é baseado no Processing. A estrutura de programação</p><p>é</p><p>constituída por duas funções principais, a “setup” e o “loop”. No setup iremos</p><p>dá indicações ao Arduíno de onde estão ligados os componentes. No loop</p><p>iremos escrever as instruções. Um detalhe importante, é que as funções</p><p>escritas no loop irão estar em ciclo constante, ou seja, o loop quando acaba,</p><p>volta a reiniciar, infinitamente.</p><p>9.1 - Void</p><p>O “void” declara uma função, tal como dissemos acima o código tem</p><p>que obrigatoriamente ter o “setup” e o “loop”.</p><p>9.2 - PinMode</p><p>O “pinMode” declara o modo do pin em que vamos ligar os</p><p>componentes, sendo que só é necessário declarar os digitais. Os analógicos só</p><p>têm de ser declarados quando é para funcionarem como saída. Sendo que</p><p>dentro de parênteses temos, em primeiro lugar o número do pin, e a seguir a</p><p>vírgula como queremos que a porta funcione (entrada, “INPUT” ou saída</p><p>“OUTPUT”).</p><p>Figura - Imagem do Arduíno IDE</p><p>135</p><p>Fonte:https://support.microsoft.com/pt-br/office/carregando-c%C3%B3digo-de-quadro-e-</p><p>arduino-ide-a9723765-1314-49e0-a69b-bb5c3e1f628d</p><p>Sugestão de atividade:</p><p>1. http://arduino.labdegaragem.com/Guia_preview/basicos.html -</p><p>Experimentos básicos com Arduíno</p><p>2. https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/cader</p><p>no-de-atividades-1-3-versaofinal.compressed.pdf - Caderno de experimentações</p><p>básicas.</p><p>3. https://www.tinkercad.com/things/5M6aYXIOhUm - Atividade utilizando o</p><p>tinkercad.</p><p>10 - TIPOS DE PLACAS DE ARDUINO</p><p>10.1 - Arduíno UNO R3</p><p>É uma placa remodelada se comparando com as placas anteriores do</p><p>Arduíno, ele tem alguns recursos adicionais. O Arduíno UNO R3 usa o</p><p>Atmega16U2 ao invés do 8U2 e permite uma taxa de transferência mais rápida</p><p>e mais memória, nele foi adicionado pinos SDA e SCL que estão ao lado do</p><p>AREF e, além disso, existem dois pinos que são colocados perto do pino</p><p>RESET.</p><p>Figura - Arduíno UNO R3</p><p>Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html</p><p>Especificações do Arduíno Uno R3</p><p>● Microcontrolador ATmega328</p><p>● Voltagem de entrada 6-20V, recomendada 7-12V</p><p>● Pinos E/S digitais 14 (dos quais 6 podem ser saídas PWM)</p><p>● Pinos de entrada analógica 6</p><p>http://arduino.labdegaragem.com/Guia_preview/basicos.html</p><p>https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/caderno-de-atividades-1-3-versaofinal.compressed.pdf</p><p>https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/caderno-de-atividades-1-3-versaofinal.compressed.pdf</p><p>https://www.tinkercad.com/things/5M6aYXIOhUm</p><p>136</p><p>● 32 KB de memória flash (ATmega328) dos quais 0,5KB são utilizados pelo</p><p>bootloader</p><p>● SRAM 2 KB</p><p>● EEPROM 1 KB</p><p>● Velocidade de Clock 16 MHz</p><p>10.2 - Arduino Mega (R3)</p><p>O Arduíno Mega é um tipo de microcontrolador baseado no</p><p>ATmega2560. Ele consiste de 54 pinos de entrada / saída digitais e, do total de</p><p>pinos, 14 pinos são usados para a saída PWM, 16 pinos são usados para as</p><p>entradas analógicas, 4 pinos são usados para a porta serial do hardware do</p><p>UART. Há pinos como o oscilador de cristal de 16MHz, conexão USB, pino</p><p>RESET, conector ICSP e um conector de energia. A placa também possui pinos</p><p>SDA e SCL que estão ao lado do AREF. Existem dois pinos novos perto do pino</p><p>RESET que são IOREF que permitem que as Shields se adaptem à tensão</p><p>fornecida pela placa.</p><p>Figura -Arduino Mega R3</p><p>Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html</p><p>Especificações do Arduino Mega (R3)</p><p>● Microcontrolador ATmega2560</p><p>● Tensão de entrada - 7-12V</p><p>● 54 pinos digitais I / O (14 saídas PWM)</p><p>● 16 entradas analógicas</p><p>● 256k de memória flash</p><p>● Velocidade do pulso de disparo de 16Mhz</p><p>http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html</p><p>137</p><p>10.3 - Arduino Leonardo</p><p>A placa Arduino Leonardo é uma placa microcontroladora e é baseada</p><p>no microcontrolador ATmega32u4. Esta placa tem 20 pinos digitais de entrada</p><p>/ saída e do número total de pinos, 7 pinos são usados para a saída de</p><p>modulação de largura de pulso PWM e 12 pinos são usados como uma</p><p>entrada analógica e há o oscilador de cristal de 16MHz, uma conexão micro</p><p>USB, RESET pino e tomada de energia.</p><p>O Arduino Leonardo difere de todas as placas anteriores, devido ao</p><p>ATmega32u4 ter comunicação USB integrada, eliminando a necessidade de</p><p>um processador secundário.</p><p>Especificações do Arduino Leonardo</p><p>● Microcontrolador ATmega328</p><p>● Voltagem de entrada 6-20V, recomendada 7-12V</p><p>● Pinos E/S digitais 20 (dos quais 7 podem ser saídas PWM)</p><p>● Pinos de entrada analógica 12</p><p>● 32 KB de memória dos quais 4KB são utilizados pelo boot-loader</p><p>● Velocidade de Clock 16 MHz</p><p>10.4 - Arduíno Nano</p><p>A placa Arduíno Nano é uma placa que utiliza o microcontrolador</p><p>ATmega328, projetada para se adaptar em pequenos espaços de montagens,</p><p>sua estrutura é a mesma baseada no ATmega32, tem comunicação Micro</p><p>USB integrada, composta por 14 pinos digitais IO, sendo 8 pinos para entradas</p><p>com 10 bits de resolução.</p><p>Figura - Arduino Nano 3.0</p><p>138</p><p>Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html</p><p>Especificações do Arduino Nano 3.0</p><p>● CPU: Microcontrolador Atmel Atmega328</p><p>● Tensão mínima de Alimentação: 3.3V e máxima de 20V</p><p>● Tensão Ideal para Alimentação: 7V – 12V</p><p>● Pinos Digitais I/O: 14 pinos, no qual 6 destes também servem para</p><p>saídas PWM</p><p>● Pinos de Entrada Analógica: 8 entradas com 10 bits de resolução</p><p>● Corrente DC Por Pino I/O: 40mA</p><p>● Memória Flash: 16 Kb, sendo que 2 Kb são utilizados pelo bootloader</p><p>● SRAM: 2 Kb</p><p>● EEPROM: 1Kb</p><p>● Velocidade de Clock: 16 MHz</p><p>10.5 - Arduino Pro Mini</p><p>A placa Arduino Pro Mini é uma das placas menores da categoria de</p><p>microcontroladora Arduino, projetada para se adaptar a espaços minúsculos</p><p>de montagens, sua estrutura também segue a mesma baseada no</p><p>ATmega328, ele não tem comunicação USB integrada, o que deverá fazer</p><p>essa comunicação com um conversor USB Serial, FTDI.</p><p>Figura - Arduino Pro Mini</p><p>Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html</p><p>Especificações do Arduino Pro Mini</p><p>● Microcontrolador: ATmega328p</p><p>139</p><p>● Tensão de Operação: 5v</p><p>● Tensão de Entrada: 5-12v</p><p>● Entradas e Saídas digitais: 14 (das quais 6 podem ser usadas como saídas</p><p>PWM)</p><p>● Entradas Analógicas: 8</p><p>● Corrente DC de Operação: 40mA</p><p>● Memória Flash: 32KB</p><p>● SRAM: 1KB</p><p>● EEPROM: 1KB</p><p>● Velocidade de Clock: 16MHz</p><p>10.6 - Arduino LilyPad</p><p>Esta placa é um Microcontrolador Programável Arduíno e foi projetada</p><p>para se integrar facilmente em projetos de e-textiles & wearable. As outras</p><p>placas Arduino têm a mesma funcionalidade, como um pacote leve e redondo,</p><p>projetado para minimizar o entalamento e o perfil, com abas largas que podem</p><p>ser costuradas e conectadas com roscas condutoras.</p><p>Figura - Arduino LilyPad</p><p>Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html</p><p>Esta placa consiste em um Atmega328 com o boot-loader Arduino e</p><p>para mantê-lo como um pequeno componente externo mínimo são</p><p>necessários. A fonte de alimentação desta placa é de 2 a 5 V e oferece</p><p>grandes orifícios de fixação que facilitam a costura e a conexão. Cada pino é</p><p>conectado a terminais positivos e negativos e para controlar os dispositivos de</p><p>entrada e saída, como luz, motor e interruptor.</p><p>11 - Tabela Comparativa de Placas Arduíno</p><p>Nesta tabela temos a comparação entre as placas Arduino e suas</p><p>características de memória, processamento, IO, Conexões entre outros.</p><p>http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.html</p><p>140</p><p>Figura: tabela comparativa das placas Arduino</p><p>Fonte: http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.htm</p><p>12 -</p><p>MOTORES ARDUINO</p><p>12.1 - Motor de corrente contínua (motor DC)</p><p>O princípio básico de funcionamento do motor CC é o seguinte:</p><p>“Sempre que um condutor conduz uma corrente elétrica é colocado em um</p><p>campo magnético, este condutor experimenta uma força mecânica gerando o</p><p>torque e o giro do eixo do motor”.</p><p>Os motores são separados pela sua potência, tensão de</p><p>funcionamento, rotação e tamanho. Por conta da sua alta compatibilidade o</p><p>Arduíno pode utilizar quase todas as especificações de motores de corrente</p><p>contínua e alternada, os motores mais utilizados são de corrente contínua por</p><p>conta do custo benefício.</p><p>Figura - imagem do motor para Arduino</p><p>Fonte: https://howtomechatronics.com/tutorials/arduino</p><p>Sugestão de material de apoio:</p><p>1. https://www.youtube.com/watch?v=yyCX9oP2cso</p><p>Aprenda a controlar motores com o arduino</p><p>2. https://www.youtube.com/watch?v=C2jWtdoR9gc</p><p>Usando motores DC com Arduino P1</p><p>http://www.fvml.com.br/2018/12/tipos-de-arduinos-quais-sao-as.htm</p><p>https://howtomechatronics.com/tutorials/arduino</p><p>https://www.youtube.com/watch?v=yyCX9oP2cso</p><p>https://www.youtube.com/watch?v=C2jWtdoR9gc</p><p>141</p><p>12.2 - Servo motor</p><p>Servo motores são pequenos motores que já possuem um driver</p><p>embutido e de uma forma simples você pode fazer seu controle. Controle o</p><p>ângulo que desejar em seus eixos. São mais utilizados para movimento de</p><p>garras e braços mecânicos.</p><p>As ligações desse motor com a placa Arduino são bastante simples.</p><p>Tudo o que é preciso fazer é conectar a alimentação do Micro Servo 9g ao</p><p>Arduino: Fio Marrom com GND, depois do fio Vermelho no pino 5v da placa.</p><p>Por fim, conecte o Fio Laranja na Porta Digital PWM.</p><p>Figura - imagem do servo motor para Arduino</p><p>Fonte: https://howtomechatronics.com/tutorials/arduino</p><p>Sugestão de material de apoio:</p><p>1. https://www.youtube.com/watch?v=PRyR8DN7qEk</p><p>Servo motor o que é? Como usar no Arduino?</p><p>2. https://www.youtube.com/watch?v=VitG0Sq6kNY</p><p>Como usar um servo motor</p><p>13 - SENSORES ARDUINO</p><p>13.1 - Sensor de Distância Ultrassônico HC-SR04</p><p>O Sensor ultrassônico HC-SR04 é capaz de medir distâncias de 2cm</p><p>a 4m com ótima precisão e baixo preço. Este módulo possui um circuito pronto</p><p>com emissor e receptor acoplados e 4 pinos (VCC, Trigger, ECHO, GND) para</p><p>medição.</p><p>Figura - imagem sensor ultrassônico para Arduino</p><p>Fonte:https://howtomechatronics.com/tutorials/arduino</p><p>https://howtomechatronics.com/tutorials/arduino</p><p>https://www.youtube.com/watch?v=PRyR8DN7qEk</p><p>https://www.youtube.com/watch?v=VitG0Sq6kNY</p><p>https://howtomechatronics.com/tutorials/arduino</p><p>142</p><p>Sugestão de material de apoio:</p><p>1. https://www.youtube.com/watch?v=O3DioJ8f638</p><p>Como usar sensor ultrassônico hc-sr04</p><p>13.2 - Sensor de Umidade e Temperatura</p><p>É um sensor de temperatura e umidade que permite fazer leituras de</p><p>temperaturas entre -40 a +80 graus Celsius e umidade entre 0 a 100%, sendo</p><p>muito fácil de usar com Arduino, Raspberry e outros microcontroladores pois</p><p>possui apenas 1 pino com saída digital.</p><p>Figura - imagem do sensor de temperatura para Arduino</p><p>Fonte:https://howtomechatronics.com/tutorials/arduino</p><p>Sugestão de material de apoio:</p><p>https://www.youtube.com/watch?v=-bVEFiogrBc</p><p>Sensor de umidade e temperatura DHT11</p><p>13.3 - Sensor de Obstáculo Infravermelho IR</p><p>O sensor de obstáculo é um circuito composto por um emissor e um</p><p>receptor IR, mais o CI comparador LM393, que facilita sua conexão com</p><p>Arduino, PIC e Raspberry Pi, visto que sua tensão é de 3,3-5V.</p><p>Figura - imagem do sensor infravermelho para Arduino</p><p>Fonte:https://howtomechatronics.com/tutorials/Arduino</p><p>Sugestão de material de apoio:</p><p>https://www.youtube.com/watch?v=DT1eynbgu8k</p><p>Como usar um sensor de refletância para identificar uma faixa - arduino</p><p>https://www.youtube.com/watch?v=O3DioJ8f638</p><p>https://howtomechatronics.com/tutorials/arduino</p><p>https://www.youtube.com/watch?v=-bVEFiogrBc</p><p>https://www.youtube.com/watch?v=DT1eynbgu8k</p><p>143</p><p>13.4 - Sensor de Cor</p><p>Detecte a cor dos objetos de forma rápida e precisa com o sensor de</p><p>reconhecimento de cor TCS3200. O sensor TCS3200 reconhece níveis de luz</p><p>RGB (Red, Green e Blue, ou vermelho, verde e azul) e envia esses dados</p><p>para um microcontrolador como Arduino, Raspberry, PIC e outros modelos,</p><p>permitindo que você crie eficientes sistemas de detecção de cor.</p><p>Figura - imagem do sensor de cor para Arduino</p><p>Fonte: https://howtomechatronics.com/tutorials/Arduino</p><p>Sugestão de material de apoio:</p><p>https://www.youtube.com/watch?v=ZJpQ3tjyhOY</p><p>Arduino – sensor de cores – TCS230</p><p>14. CÓDIGO DE CORES PARA RESISTORES</p><p>O código de cores é a convenção utilizada para identificação de</p><p>resistores de uso geral. Compreende as séries E6, E12 e E24 da norma</p><p>internacional IEC.</p><p>https://www.youtube.com/watch?v=ZJpQ3tjyhOY</p><p>144</p><p>Procedimento para Determinar o Valor do Resistor: Identificar a cor</p><p>do primeiro anel, e verificar através da tabela de cores o algarismo</p><p>correspondente à cor. Este algarismo será o primeiro dígito do valor do</p><p>resistor. Identificar a cor do segundo anel. Determinar o algarismo</p><p>correspondente ao segundo dígito do valor da resistência. Identificar a cor do</p><p>terceiro anel. Determinar o valor para multiplicar o número formado pelos itens</p><p>1 e 2. Efetuar a operação e obter o valor da resistência. Identificar a cor do</p><p>quarto anel e verificar a porcentagem de tolerância do valor nominal da</p><p>resistência do resistor. OBS.: A primeira faixa será a faixa que estiver mais</p><p>perto de qualquer um dos terminais do resistor.</p><p>15 PRÁTICAS EXPERIMENTAIS</p><p>15. 1 Prática experimental 1 – Projeto led</p><p>Objetivo: fazer um botão acender um led quando pressionado e,</p><p>quando solto, o led deverá apagar.</p><p>Componentes: 1 Led Vermelho, 1 Resistor de 300k, 1 PushButton, 1</p><p>Resistor de 10k e cabos diversos.</p><p>Procedimento: 1. Colocar os componentes como está sendo</p><p>mostrado na imagem abaixo, bem como suas ligações:</p><p>Código:</p><p>int ledPin = 13; //led no pino 13</p><p>int Botao = 2; //botão no pino 2</p><p>145</p><p>int EstadoBotao = 0; //Variável para ler o status do PushButton</p><p>void setup(){</p><p>pinMode(ledPin, OUTPUT); //Pino do led será saída</p><p>pinMode(Botao, INPUT); //Pino com botão será entrada</p><p>}</p><p>void loop(){</p><p>EstadoBotao = digitalRead(Botao); /*novo estado do botão vai ser igual ao que Arduino</p><p>ler no pino onde está o botão.</p><p>Poderá ser ALTO (HIGH) se o botão estiver</p><p>Pressionado, ou BAIXO (LOW), se o botão</p><p>estiver solto */</p><p>if (EstadoBotao == HIGH){ //Se botão estiver pressionado (HIGH)</p><p>digitalWrite(ledPin, HIGH);// acende o led do pino 13.</p><p>}</p><p>else{ //se não estiver pressionado</p><p>digitalWrite(ledPin, LOW); //deixa o led do pino 13 apagado</p><p>}</p><p>}</p><p>2. Após compilar o código e fazer o upload na sua placa, você já deve</p><p>poder apertar o botão e o led da protoboard acender e, quando soltar, o led deve</p><p>apagar.</p><p>OBS: Recomenda-se que você tente entender passo a passo o</p><p>programa anterior, para não ter problemas quando os códigos começarem a ficar</p><p>mais complexos.</p><p>15.2 Prática experimental 2 – Projeto led com expansão</p><p>Este experimento é uma expansão do experimento anterior. A diferença</p><p>deste com o experimento 1, é que neste teremos mais 2 botões e mais 2 leds de</p><p>cores diferentes. Você pode tentar montar sozinho o novo circuito, ou utilizar o</p><p>modelo de ligações abaixo:</p><p>Componentes: 1 Led Verde, 1 Led Amarelo, 1 Led Vermelho, 3 Resistores de</p><p>300k 3 Resistores de 10k, 3 Pushbutton e cabos diversos.</p><p>146</p><p>Código:</p><p>int ledPin1 = 13;</p><p>int ledPin2 = 12;</p><p>int ledPin3 = 11;</p><p>int Botao1 = 2;</p><p>int Botao2 = 3;</p><p>int Botao3 = 4;</p><p>int EstadoBotao1 = 0;</p><p>int EstadoBotao2 = 0;</p><p>int EstadoBotao3 = 0;</p><p>void setup(){</p><p>pinMode(ledPin1, OUTPUT);</p><p>pinMode(Botao1, INPUT);</p><p>pinMode(ledPin2, OUTPUT);</p><p>pinMode(Botao2, INPUT);</p><p>pinMode(ledPin3, OUTPUT);</p><p>pinMode(Botao3, INPUT);</p><p>}</p><p>void loop(){</p><p>EstadoBotao1 = digitalRead(Botao1);</p><p>EstadoBotao2 = digitalRead(Botao2);</p><p>EstadoBotao3 = digitalRead(Botao3);</p><p>if (EstadoBotao1 == HIGH){</p><p>digitalWrite(ledPin1, HIGH);</p><p>}</p><p>else{</p><p>digitalWrite(ledPin1, LOW);</p><p>}</p><p>if (EstadoBotao2 == HIGH){</p><p>digitalWrite(ledPin2, HIGH);</p><p>}</p><p>else{</p><p>digitalWrite(ledPin2, LOW);</p><p>147</p><p>}</p><p>if (EstadoBotao3 == HIGH){</p><p>digitalWrite(ledPin3, HIGH);</p><p>}</p><p>else{</p><p>digitalWrite(ledPin3, LOW);</p><p>}</p><p>}</p><p>Lembrete: Nunca se esqueça dos pontos e vírgula (;) no final dos</p><p>comandos em seu programa em C.</p><p>15.3 Prática experimental 3 - Projeto Piano</p><p>Objetivo: Fazer com que cada botão toque uma nota musical diferente</p><p>e acende um led.</p><p>Componentes: 1 Led Verde, 1 Led Amarelo, 1 Led Vermelho, 3</p><p>Resistores de 300k, 3 Resistores de 10k, 3 Pushbutton, cabos diversos e 1</p><p>Buzzer 5V.</p><p>Procedimento: Neste experimento cada um dos 3 botões tocará uma</p><p>nota musical diferente. Para montar o projeto usa-se um novo componente: o</p><p>Buzzer, que nada mais é do que um pequeno alto-falante. Ele não consegue</p><p>tocar músicas, mas consegue fazer apitos soarem, como sirenes ou alarmes. A</p><p>maioria dos alarmes de pequenos equipamentos eletrônicos é feito através de</p><p>um Buzzer. Ele funciona da seguinte maneira: quando alimentado por uma fonte,</p><p>componentes metálicos internos vibram da frequência da fonte, produzindo</p><p>assim um som. Para este experimento, também poderá ser utilizado um pequeno</p><p>alto-falante (o som sai mais puro e a diferença entre as notas musicais é mais</p><p>nítida). O Buzzer tem polaridade.</p><p>Retirando-se o adesivo superior do Buzzer poderá ser visto um sinal de</p><p>positivo (+), o qual mostra onde está o pino positivo do componente. Sempre</p><p>ligue este a uma saída digital do Arduino e o outro em GND. Para fazer a</p><p>montagem, o modelo a seguir pode ser seguido:</p><p>148</p><p>Código:</p><p>const int ledPin1 = 13;</p><p>const int ledPin2 = 12;</p><p>const int ledPin3 = 11;</p><p>const int Botao1 = 2;</p><p>const int Botao2 = 3;</p><p>const int Botao3 = 4;</p><p>const int Buzzer = 10; //O Buzzer está colocado no pino 10</p><p>int EstadoBotao1 = 0;</p><p>int EstadoBotao2 = 0;</p><p>int EstadoBotao3 = 0;</p><p>int Tom = 0; //Variável para armazenar a nota musical</p><p>void setup() {</p><p>pinMode(Buzzer, OUTPUT);</p><p>pinMode(ledPin1, OUTPUT);</p><p>pinMode(Botao1, INPUT);</p><p>pinMode(ledPin2, OUTPUT);</p><p>pinMode(Botao2, INPUT);</p><p>pinMode(ledPin3, OUTPUT);</p><p>pinMode(Botao3, INPUT);</p><p>}</p><p>void loop(){</p><p>EstadoBotao1 = digitalRead(Botao1);</p><p>EstadoBotao2 = digitalRead(Botao2);</p><p>EstadoBotao3 = digitalRead(Botao3);</p><p>if(EstadoBotao1 && !EstadoBotao2 && !EstadoBotao3) {</p><p>Tom = 100;</p><p>digitalWrite(ledPin1, HIGH);</p><p>}</p><p>if(EstadoBotao2 && !EstadoBotao1 && !EstadoBotao3) {</p><p>Tom = 200;</p><p>digitalWrite(ledPin2, HIGH);</p><p>}</p><p>if(EstadoBotao3 && !EstadoBotao2 && !EstadoBotao1) {</p><p>Tom = 500;</p><p>149</p><p>digitalWrite(ledPin3, HIGH);</p><p>}</p><p>while(Tom > 0) { //enquanto Tom for maior que zero faça o que está descrito baixo:</p><p>digitalWrite(Buzzer, HIGH); // Liga Buzzer</p><p>delayMicroseconds(Tom); // Espera o tempo proporcional ao comprimento de onda da nota</p><p>musical em milissegundos</p><p>digitalWrite(Buzzer, LOW); // Desliga Buzzer</p><p>delayMicroseconds(Tom); // Espera o tempo proporcional ao comprimento de onda da nota</p><p>musical em milissegundos</p><p>Tom = 0; // Resetar o Tom para zero, para sair do loop while e não tocar o som</p><p>constantemente</p><p>digitalWrite(ledPin1, LOW);</p><p>digitalWrite(ledPin2, LOW);</p><p>digitalWrite(ledPin3, LOW);</p><p>}</p><p>}</p><p>15.4 Prática experimental 4 – Projeto registro de temperatura</p><p>Objetivo: Registrar temperatura ambiente.</p><p>Componentes: 1 NTC (sensor de temperatura), 1 Resistor de 10k e</p><p>cabos diversos.</p><p>Procedimento: fazer a primeira aquisição de dados do mundo externo</p><p>para dentro do Arduino. Será usado um sensor de temperatura ligado a uma das</p><p>entradas analógicas da placa. O circuito a ser montado é o seguinte:</p><p>Código:</p><p>const int PinoSensor = 0;//pino Analógico de Entrada 0</p><p>int ValorSensor = 0;</p><p>void setup(){</p><p>Serial.begin(9600);</p><p>}</p><p>void loop(){</p><p>150</p><p>ValorSensor = analogRead(PinoSensor);</p><p>Serial.print("Valor do Sensor = ");</p><p>Serial.println(ValorSensor);</p><p>delay(500);</p><p>}</p><p>15.5 Prática experimental 5 – Projeto Alarme</p><p>Objetivo: Montar um alarme que, se a temperatura de onde o sensor</p><p>estiver localizado for maior, ou menor, ele soará a partir dos valores colhidos no</p><p>experimento 3.</p><p>Componentes: 1 NTC (sensor de temperatura), 1Resistor de 10k, cabos</p><p>diversos e1 Buzzer 5V.</p><p>OBS: Quando a temperatura for maior que um valor, escolhido por você,</p><p>o Buzzer começará a soar até que a temperatura volte ao estado perfeito.</p><p>O circuito é o seguinte</p><p>Código:</p><p>const int PinoSensor = 0;</p><p>const int Buzzer = 6;</p><p>int ValorSensor = 0;</p><p>void setup(){</p><p>pinMode(Buzzer, OUTPUT);</p><p>Serial.begin(9600);</p><p>}</p><p>void loop(){</p><p>ValorSensor = analogRead(PinoSensor);</p><p>Serial.print("Valor do Sensor = ");</p><p>Serial.println(ValorSensor);</p><p>if (ValorSensor > 912){</p><p>digitalWrite(Buzzer, HIGH);</p><p>151</p><p>}</p><p>else{</p><p>digitalWrite(Buzzer, LOW);</p><p>}</p><p>}</p><p>15.6 Prática experimental 6 – Projeto Termômetro</p><p>Objetivo: Acender leds coloridos conforme a temperatura do ambiente</p><p>aumenta ou diminui.</p><p>Componentes: 1 NTC (sensor de temperatura), 1 Resistor de 10k,</p><p>cabos diversos, 1 Buzzer 5V, 2 Leds Verdes, 2x Leds Amarelos, 2 Leds</p><p>Vermelhos e 6 Resistores de 300k.</p><p>Procedimento: Conforme a temperatura do ambiente onde o sensor</p><p>NTC está localizado aumenta, os leds coloridos acendem, como um termômetro.</p><p>Se por algum motivo todos os 6 Leds forem acesos, um alarme deverá soar.</p><p>OBS: Implícito neste experimento está o conceito de um bargraf, que</p><p>nada mais é do que uma barra de leds que acendem conforme algum parâmetro.</p><p>Bargrafs muito conhecidos são os de equipamentos de som. Quando o som está</p><p>alto, ou com os graves altos, as luzes acendem do verde até o vermelho, como</p><p>na figura a seguir:</p><p>Código:</p><p>const int PinoSensor = 0;</p><p>const int Buzzer = 6;</p><p>const int led1 = 8;</p><p>152</p><p>const int led2 = 9;</p><p>const int led3 = 10;</p><p>const int led4 = 11;</p><p>const int led5 = 12;</p><p>const int led6 = 13;</p><p>int ValorSensor = 0;</p><p>void setup(){</p><p>pinMode(Buzzer, OUTPUT);</p><p>pinMode(led1, OUTPUT);</p><p>pinMode(led2, OUTPUT);</p><p>pinMode(led3, OUTPUT);</p><p>pinMode(led4, OUTPUT);</p><p>pinMode(led5, OUTPUT);</p><p>pinMode(led6, OUTPUT);</p><p>Serial.begin(9600);</p><p>}</p><p>void loop(){</p><p>ValorSensor = analogRead(PinoSensor);</p><p>Serial.print("Valor do Sensor = ");</p><p>Serial.println(ValorSensor);</p><p>if (ValorSensor > 0){</p><p>digitalWrite(led1, HIGH);</p><p>}</p><p>else{</p><p>digitalWrite(led1, LOW);</p><p>}</p><p>if (ValorSensor > 915){</p><p>digitalWrite(led2, HIGH);</p><p>}</p><p>else{</p><p>digitalWrite(led2, LOW);</p><p>}</p><p>if (ValorSensor > 920){</p><p>digitalWrite(led3, HIGH);</p><p>}</p><p>else{</p><p>digitalWrite(led3, LOW);</p><p>}</p><p>if (ValorSensor > 930){</p><p>digitalWrite(led4, HIGH);</p><p>}</p><p>else{</p><p>digitalWrite(led4, LOW);</p><p>}</p><p>153</p><p>if (ValorSensor > 935){</p><p>digitalWrite(led5, HIGH);</p><p>}</p><p>else{</p><p>digitalWrite(led5, LOW);</p><p>}</p><p>if (ValorSensor > 940){</p><p>digitalWrite(led6, HIGH);</p><p>digitalWrite(Buzzer, HIGH);</p><p>}</p><p>else{</p><p>digitalWrite(led6, LOW);</p><p>digitalWrite(Buzzer, LOW);</p><p>}</p><p>}</p><p>15.7 Prática experimental 7 - Potenciômetro</p><p>Objetivo: Fazer um led piscar de forma mais rápida ou mais lenta</p><p>conforme os parâmetros de um potenciômetro.</p><p>Componentes: 1 Potenciômetro de 10k, 1 Led de Alto Brilho, 01</p><p>Resistor de 300k e cabos diversos.</p><p>Procedimento: Conforme o valor do potenciômetro é alterado, o led</p><p>pisca de forma mais rápida ou mais lenta. Veja a figura a seguir:</p><p>Código:</p><p>154</p><p>const int PinoPotenciometro = 0;</p><p>const int Led = 13;</p><p>int ValorPot = 0;</p><p>void setup() {</p><p>pinMode(Led, OUTPUT);</p><p>}</p><p>void loop() {</p><p>ValorPot = analogRead(PinoPotenciometro);</p><p>digitalWrite(Led, HIGH);</p><p>delay(ValorPot);</p><p>digitalWrite(Led, LOW);</p><p>delay(ValorPot);</p><p>}</p><p>Este código deve ser de fácil entendimento. Primeiro declara-se que o</p><p>pino do potenciômetro será o Analógico</p><p>0 e será constante:</p><p>const int PinoPotenciometro = 0;</p><p>Depois tem-se um led no pino13 que também será constante:</p><p>const int Led = 13;</p><p>Então declara-se uma variável do tipo inteira para armazenar os valores</p><p>do potenciômetro. Esta variável irá de 0 a 1023, pois estes são os valores que a</p><p>entrada analógica pode variar por termos uma resolução de 10 bits.</p><p>Declara-se o pino do Led como saída no setup, como já feito na maioria</p><p>dos programas e então vem o loop principal:</p><p>void loop() {</p><p>ValorPot = analogRead(PinoPotenciometro);</p><p>digitalWrite(Led, HIGH);</p><p>delay(ValorPot);</p><p>digitalWrite(Led, LOW);</p><p>delay(ValorPot);</p><p>}</p><p>Primeiramente, assimila-se o valor lido no Pino do Potenciômetro à</p><p>variável ValorPot, ou seja, ao valor do potenciômetro. Então liga-se o Led.</p><p>Espera-se um tempo, que varia de 0 a 1023 porque são esses valores que o</p><p>potenciômetro pode ter, e desliga-se o led. Novamente espera-se o tempo e</p><p>volta-se para a primeira instrução do loop para fazer a nova leitura de uma nova</p><p>posição do potenciômetro.</p><p>155</p><p>15.8 Prática experimental 8 - Projeto Sensor de Estacionamento</p><p>Fundamentação teórica: O Sensor Ultrassônico HC-SR04 registra a</p><p>posição dos objetos, realiza a medição de distâncias, mede níveis e conta</p><p>objetos. É capaz de medir distâncias de 2cm a 4m com ótima precisão.</p><p>Objetivo: conhecer o Sensor Ultrassônico e desenvolver um projeto</p><p>semelhante aos sensores de estacionamento utilizados nos carros.</p><p>Componentes: Sensor Ultrassônico HC-SR04, 4 pinos (VCC, Trigger,</p><p>ECHO, GND), Protoboard, Leds: verde, amarelo, vermelho, resistores de 300K.</p><p>Procedimento: Este possui um circuito pronto com emissor e receptor</p><p>acoplados e 4 pinos (VCC, Trigger, ECHO, GND) para realizar a medição.</p><p>3. Para começar a medição é necessário alimentar o módulo e colocar o</p><p>pino Trigger em nível alto por mais de 10s. Assim o sensor emitirá uma onda</p><p>sonora que ao encontrar um obstáculo rebaterá de volta em direção ao módulo,</p><p>sendo que neste tempo de emissão e recebimento do sinal o pino ECHO ficará</p><p>em nível alto. Logo o cálculo da distância pode ser feito de acordo com o tempo</p><p>em que o pino ECHO permaneceu em nível alto após o pino Trigger ter sido</p><p>colocado em nível alto.</p><p>4. Alimentando o Circuito: o primeiro passo para montar o circuito é</p><p>alimentar a Protoboard com os pinos 5V e GND do Arduino.</p><p>5. LEDs e Resistores:</p><p>Agora, coloca-se os LEDs e os Resistores na Protoboard.</p><p>156</p><p>6. Lembrando:</p><p>A maior perna do LED é o positivo e a menor o negativo!!</p><p>OBS: Não faz diferença se conectar os resistores no positivo ou</p><p>negativo dos LEDs, caso conectado no negativo, basta ligar o positivo do</p><p>LED no 5V, o resistor no negativo e na porta digital.</p><p>7. Conectando os LEDs:</p><p>Conectar os Resistores que estão no positivo dos LEDs nas portas</p><p>digitais do Arduino.</p><p>Assim temos:</p><p>LED Verde: Porta 2</p><p>LED Amarelo: Porta 3</p><p>LED Vermelho: Porta 4</p><p>8. Conectando os LEDs:</p><p>Conectar os Resistores que estão no positivo dos LEDs nas portas digitais</p><p>do Arduino.</p><p>9. Alimentação Ultrassônico:</p><p>Conectar o Sensor Ultrassônico na Protoboard e ligar o pino VCC nos 5V e</p><p>o pino GND no negativo.</p><p>157</p><p>10. Conectando no Arduino:</p><p>Conectar o Sensor Ultrassônico na Protoboard e ligar o pino VCC nos 5V e</p><p>o pino GND no negativo.</p><p>Dessa forma tem-se:</p><p>Trig: Porta 5</p><p>Echo: Porta 6</p><p>11. Conectando Buzzer:</p><p>Adicionar o Buzzer ao circuito para se ter efeitos sonoros.</p><p>Código:</p><p>#include</p><p>#define TRIGGER_PIN 12</p><p>#define ECHO_PIN 13</p><p>Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);</p><p>158</p><p>void setup()</p><p>{</p><p>Serial.begin(9600);</p><p>}</p><p>void loop()</p><p>{</p><p>float cmMsec, inMsec;</p><p>long microsec = ultrasonic.timing();</p><p>cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);</p><p>inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);</p><p>Serial.print("MS: ");</p><p>Serial.print(microsec);</p><p>Serial.print(", CM: ");</p><p>Serial.print(cmMsec);</p><p>Serial.print(", IN: ");</p><p>Serial.println(inMsec);</p><p>delay(1000);</p><p>}</p><p>Incluindo Biblioteca</p><p>Para programar o sensor, é necessário adicionar-se a biblioteca</p><p>“Ultrasonic.h”. Pode ser baixada pelo link. http://portaldoarduino.com.br/wp-</p><p>content/uploads/2019/03/Ultrasonic.zip</p><p>12. Para adicionar a biblioteca no Arduino, seguir o passo a passo abaixo:</p><p>1- Abra a IDE do Arduino</p><p>2- Clique em Sketch</p><p>3- Selecione Incluir Biblioteca</p><p>4- Clique em Adicionar Biblioteca.zip</p><p>http://portaldoarduino.com.br/wp-content/uploads/2019/03/Ultrasonic.zip</p><p>http://portaldoarduino.com.br/wp-content/uploads/2019/03/Ultrasonic.zip</p><p>159</p><p>Selecione o arquivo .zip e clique em abrir.</p><p>Pronto, a biblioteca necessária já está instalada.</p><p>Código:</p><p>#include "Ultrasonic.h" // Esse comando é para incluir a biblioteca no programa</p><p>Ultrasonic ultrasonic (8,9); // são as portas do sensor, Trigger na porta 5 e Echo na</p><p>porta 6</p><p>// declarando os LEDs e o Buzzer e suas portas onde estão conectados</p><p>int ledVerde = 2;</p><p>int ledAmarelo = 3;</p><p>int ledVermelho =4;</p><p>int buzzer = 5;</p><p>// Variáveis de controle</p><p>long microsec = 0;</p><p>float distanciaCM = 0;</p><p>void setup() {</p><p>Serial.begin(9600); // iniciando o monitor serial na velocidade 9600</p><p>// Declarando os LEDs e o Buzzer com saídas</p><p>pinMode(ledVerde,OUTPUT);</p><p>pinMode(ledAmarelo,OUTPUT);</p><p>pinMode(ledVermelho,OUTPUT);</p><p>pinMode(buzzer,OUTPUT);</p><p>}</p><p>void loop() {</p><p>160</p><p>// lendo o sensor</p><p>microsec = ultrasonic.timing();</p><p>// convertendo a distância para centímetros</p><p>distanciaCM = ultrasonic.convert(microsec, Ultrasonic::CM);</p><p>ledDistancia();</p><p>// mostrar a distância no monitor serial</p><p>Serial.print(distanciaCM);</p><p>// unidade de medida</p><p>Serial.println(" cm");</p><p>delay(500);</p><p>}</p><p>void ledDistancia() {</p><p>// se inicia com todos os LEDs apagados</p><p>digitalWrite(ledVerde,LOW);</p><p>digitalWrite(ledAmarelo,LOW);</p><p>digitalWrite(ledVermelho,LOW);</p><p>// Se a distância for menor ou igual a 30cm e maior ou igual 20</p><p>if (distanciaCM = 20) {</p><p>digitalWrite(ledVerde,HIGH); // LED Verde liga</p><p>}</p><p>// Se a distância for menor ou igual a 20 cm e maior ou igual 10</p><p>if (distanciaCM = 10) {</p><p>digitalWrite(ledAmarelo,HIGH); // LED amarelo acende</p><p>tone (buzzer, 2500, 100); // buzzer começa a emitir som</p><p>}</p><p>// se a distância for menor que 10cm</p><p>if (distanciaCM</p><p>isso o pino 9 foi o escolhido por ser um pino com saída</p><p>PWM no Arduino UNO.</p><p>4. Quando necessária a senha, o programa mapeará os botões</p><p>pressionados no teclado e apresentará ao usuário através do display LCD. Para</p><p>este protótipo o alarme sonoro é realizado por um Buzzer, mas para cada</p><p>aplicação este dispositivo sonoro pode ser alterado, adaptando buzinas ou</p><p>sirenes (nestes casos realizando os acionamentos por relé).</p><p>A montagem do protótipo pode ser observada pela figura abaixo:</p><p>https://www.arduinoomega.com/arduino-uno-r3?utm_campaign=blog-alarme</p><p>https://www.arduinoomega.com/modulo-sensor-de-vibracao-sw-420-arduino-pic-raspberry?utm_campaign=blog-alarme</p><p>https://www.arduinoomega.com/modulo-sensor-de-vibracao-sw-420-arduino-pic-raspberry?utm_campaign=blog-alarme</p><p>https://www.arduinoomega.com/teclado-matricial-de-membrana-16-teclas?utm_campaign=blog-alarme</p><p>https://www.arduinoomega.com/display-lcd-162-backlight-azul?utm_campaign=blog-alarme</p><p>https://www.arduinoomega.com/modulo-buzzer-5v-passivo?utm_campaign=blog-alarme</p><p>https://www.arduinoomega.com/resistores-selecione-o-valor-10-unidades?utm_campaign=blog-alarme</p><p>https://www.arduinoomega.com/resistores-selecione-o-valor-10-unidades?utm_campaign=blog-alarme</p><p>https://www.arduinoomega.com/led-difuso-5mm-vermelho?utm_campaign=blog-alarme</p><p>162</p><p>Abaixo tem-se na prática a montagem do protótipo:</p><p>Código:</p><p>#include //inclui a biblioteca do teclado matricial 4x4</p><p>#include //inclui a biblioteca para o display Lcd 16x2</p><p>#define buzzer 9 // define o pino 9 para o buzzer</p><p>#define sinal_sensor A2 // define o pino A2 para a entrada de sinal</p><p>#define led_alarme A4 // define o pino A4 para o led rgb de alarme</p><p>#define button_desativador A1 // define o pino A1 como desativador</p><p>alternativo</p><p>int ativa_alarme; // Cria uma variavel int de nome ativa_alarme</p><p>int desliga_alarme; // cria uma variavel int de nome desliga_alarme</p><p>int leitura_sensor; // cria uma variavel int de nome leitura_sensor</p><p>byte pinosLinhas[] = {8,A3,10,11}; // cria um vetor de 4 colunas</p><p>byte pinosColunas[] = {A0,A5,12,13}; // cria um vetor de 4 colunas</p><p>char senha[4] = {'5','9','3','8'}; // cria um vetor char de nome senha de</p><p>4 colunas com caracteres definidos</p><p>char vetor[4]; // cria um vetor char para armazenar os digitos do teclado</p><p>int i; // cria uma variavel de nome i</p><p>char teclas[4][4] = {{'1','2','3','A'}, // matriz 4x4 com caracteres</p><p>definidos</p><p>{'4','5','6','B'},</p><p>{'7','8','9','C'},</p><p>{'*','0','#','D'}};</p><p>Keypad teclado1 = Keypad( makeKeymap(teclas), pinosLinhas, pinosColunas,</p><p>4, 4); // cria a variavel de nome teclado1 para armazenar os caracteres</p><p>LiquidCrystal lcd ( 7, 6, 5, 4, 3, 2); // define os pinos para</p><p>comunicação com o display lcd</p><p>void setup() {</p><p>pinMode(buzzer, OUTPUT); // define o pino buzzer como saída</p><p>pinMode(sinal_sensor,INPUT); // define o pino de sinal do sensor de</p><p>vibrações como entrada</p><p>163</p><p>pinMode(led_alarme, OUTPUT); // define o pino do led como saída</p><p>pinMode(button_desativador,INPUT); //define o desativador alternativo</p><p>como entrada</p><p>lcd.begin(16,2); // inicia a comunicação com o display lcd</p><p>lcd.setCursor(0,0); lcd.print("ALARME");} // escreve ALARME no display na</p><p>posição (0,0)</p><p>void loop() {</p><p>lcd.setCursor(8,0);</p><p>lcd.print("OFF"); // indica que o alarme está desabiitado no display</p><p>digitalWrite (led_alarme ,LOW); // deixa o led de alarme desligado</p><p>char tecla_pressionada = teclado1.getKey(); // verifica se alguma tecla</p><p>foi pressionada</p><p>if (tecla_pressionada == '#' ) { // se # for pressionado executa o</p><p>codigo abaixo</p><p>lcd.setCursor(8,0); lcd.print("ON "); // indica no display que o alarme</p><p>está ativo</p><p>digitalWrite (buzzer, HIGH); delay(50); // sonorização</p><p>while ( tecla_pressionada != '*') { // enquanto * não for</p><p>pressionado o programa executa no laço abaixo</p><p>leitura_sensor = digitalRead(sinal_sensor); // realiza a leitura de sinal</p><p>advindo do sensor de vibrações</p><p>tecla_pressionada = teclado1.getKey(); // verifica se alguma tecla foi</p><p>pressionada</p><p>//******************************************ALARME</p><p>if (leitura_sensor == HIGH) { // se receber sinais do sensor de</p><p>vibração, executa o codigo abaixo</p><p>analogWrite (buzzer, 130); delay(100); // sonorizaão alarme inicial</p><p>analogWrite (buzzer, 150); delay(200); // sonorização alarme inicial</p><p>analogWrite (buzzer, 255); delay(100); // sonorização alarme inicial</p><p>analogWrite (buzzer, 100); delay(300); // sonorização alarme inicial</p><p>while ( desliga_alarme != HIGH){ // enquanto o botão de</p><p>desativador alternativo não for ativo, executa o laço abaixo</p><p>desliga_alarme = digitalRead(button_desativador); // realiza a leitura do</p><p>botao alternativo</p><p>digitalWrite (led_alarme ,HIGH); // liga o led rgb de alarme</p><p>digitalWrite (buzzer, HIGH); delay(100); // Alarme</p><p>digitalWrite (buzzer, LOW); delay(100); // Alarme</p><p>164</p><p>tecla_pressionada = teclado1.getKey(); // verifica se alguma tecla foi</p><p>pressionada</p><p>//******************************************SENHA</p><p>if (tecla_pressionada){ // se alguma tecla for pressionada executa</p><p>abaixo</p><p>vetor[i] = tecla_pressionada; // armazena no vetor[4] as teclas</p><p>pressionadas</p><p>lcd.setCursor(i,1); lcd.print(tecla_pressionada); // indica no display a</p><p>tecla pressionada</p><p>i++; // contador para definir que a senha seja de 4 digitos</p><p>if(i==4){ // se o ultimo digito da senha for pressionado, executa</p><p>abaixo</p><p>if(vetor[0] == senha[0] &&</p><p>vetor[1] == senha[1] &&</p><p>vetor[2] == senha[2] &&</p><p>vetor[3] == senha[3]){ // compara o vetor das teclas</p><p>pressionadas com a senha pré definida</p><p>lcd.setCursor(7,1); lcd.print("OK"); delay(1000); // indica que a senha</p><p>digitada foi correta</p><p>lcd.setCursor(0,1); lcd.print(" "); // limpa o display</p><p>lcd.setCursor(6,0); lcd.print(" "); // limpa o display</p><p>i=0; // zera o contador</p><p>return 0;} // desativa o alarme retornando o codigo para o inicio</p><p>else { // se a senha não for correta, executa abaixo</p><p>lcd.setCursor(0,1); lcd.print("SENHA INVALIDA "); digitalWrite (buzzer,</p><p>HIGH); delay(1000); // indica no display que a senha digitada não é</p><p>correta</p><p>lcd.setCursor(0,1); lcd.print(" "); //limpa o display</p><p>i=0;} //zera o contador</p><p>}}}}</p><p>//******************************************FIM DO ALARME</p><p>else { analogWrite(buzzer,0); // caso o alarme não estiver ativo, garante</p><p>o buzzer desativado</p><p>}}}}</p><p>Mergulhando no projeto - Software</p><p>165</p><p>5. Inicialmente instala-se a biblioteca KEYPAD, que pode ser encontrada</p><p>facilmente na web para download. Já no sketch incluímos a biblioteca</p><p>posteriormente instalada e do LCD.</p><p>6. Logo após, são nomeados os pinos do LED, Buzzer, entrada de sinal</p><p>e botão desativador. Variáveis do tipo ‘’int’’ são criadas para controle e</p><p>recebimento de dados do sensor e vetores ‘’Byte’’ para mapeamento dos pinos</p><p>do teclado byte pinosLinhas[], byte pinosColunas[]. Um vetor ‘’Char’’ criado para</p><p>pré-definir a senha e outro para armazenar os dígitos no momento de alarme</p><p>para comparação entre eles no programa, char teclas [4][4] indica os caracteres</p><p>de cada tecla.</p><p>7. Uma variável de nome teclado1 é criada na biblioteca Keypad para</p><p>armazenar o caractere pressionado no teclado. Essa série de definições e</p><p>inclusões termina com o mapeamento dos pinos utilizados no display LCD</p><p>LiquidCrystal lcd (7, 6, 5, 4, 3, 2).</p><p>Função Setup</p><p>8. Na função setup define-se as portas onde conectados o Buzzer e LED</p><p>de alarme como saídas digitais:</p><p>pinMode (led_alarme, OUTPUT)</p><p>E os sinais do sensor de vibração e o botão desativador como entradas:</p><p>PinMode(sinal_sensor, INPUT)</p><p>Em</p><p>lcd.begin(16,2)</p><p>Inicia-se a comunicação com o display LCD e escreve na linha 1 do</p><p>display a palavra “ALARME” com:</p><p>lcd.print("ALARME")</p><p>Função Loop</p><p>Alarme</p><p>A função Loop se inicia escrevendo no display a palavra OFF:</p><p>lcd.setCursor(8,0);</p><p>lcd.print("OFF")</p><p>Indicando que o alarme está no momento desativado. A variável char</p><p>tecla_pressionada monitora e armazena as teclas pressionadas no teclado:</p><p>tecla_pressionada = teclado1.getKey()</p><p>166</p><p>Caso a tecla ‘’#’’ for pressionada, o programa entra para realizar os</p><p>comandos do bloco IF que ativando o alarme escrevendo ON no display. Neste</p><p>estágio do programa, o sistema monitora o sensor de vibrações constantemente</p><p>mas esta ação ainda pode ser revertida ao pressionar a tecla‘’*’’.</p><p>Enquanto a tecla ‘’*’’ não for pressionada ou o sensor de vibrações if</p><p>(leitura_sensor == HIGH) não enviar o comando para o Arduino, o programa roda</p><p>dentro do laço while:</p><p>while( tecla_pressionada != '*')</p><p>No momento que o Arduino recebe o sinal HIGH do sensor, ele interpreta</p><p>que uma vibração foi detectada e que o alarme deve ser disparado:</p><p>if (leitura_sensor == HIGH)</p><p>Com o alarme ativo o programa desce uma sequência de sonorização e</p><p>cai no laço while:</p><p>while ( desliga_alarme != HIGH)</p><p>que dispara o aviso sonoro do Buzzer intermitente. Para desativar o</p><p>alarme e sair deste laço o programa tem duas opções, ou o botão desativador</p><p>de emergência seja acionado levando a variável desliga_alarme para nível LOW</p><p>ou por senha.</p><p>O botão desativador no nosso protótipo está diretamente ligado ao nível</p><p>alto HIGH, deixando assim a opção de desativar o alarme somente por senha.</p><p>Já com o alarme ativo e o aviso sonoro intermitente o programa e o display</p><p>aguardam a senha correta ser digitada para a desativação do sistema. A senha</p><p>foi definida inicialmente mas pode ser alterada de acordo com a</p><p>preferência do usuário em:</p><p>char senha[4] = {'5', '9', '3', '8'} //um vetor de 4 posições</p><p>Senha</p><p>Se alguma tecla for pressionada if (tecla_pressionada), o programa</p><p>armazena está tecla em:</p><p>vetor[i] = tecla_pressionada;</p><p>O contador i++ auxilia até o preenchimento por completo da senha de 4</p><p>dígitos. Após o preenchimento da senha digitada por completo ele é comparado</p><p>com a senha pré-definida:</p><p>if(vetor[0] == senha[0] && vetor[1] == senha[1] && vetor[2] ==</p><p>senha[2] && vetor[3] == senha[3])</p><p>167</p><p>O programa interpreta que a senha é correta quando está comparação</p><p>acima seja verdadeira. Caso a comparação for verdadeira o alarme é desativado</p><p>desabilitando o Buzzer, e escreve OK no display e por fim zera o contador i++ .</p><p>Caso a senha for esteja incorreta escreve no display :</p><p>lcd.print("SENHA INVALIDA")</p><p>e retorna o programa para o laço de alarme com o Buzzer emitindo som</p><p>intermitente zerando também o contador i++ para uma nova tentativa de senha.</p><p>Hardware</p><p>Módulo Sensor de Vibração SW-420</p><p>9. O módulo SW-420 foi desenvolvido para detecção de vibrações,</p><p>através do trimpot na PCI é possível ajustar a sua sensibilidade de acordo</p><p>com sua aplicação.</p><p>Quando houverem vibrações na superfície onde instalado o sensor,</p><p>um nível alto HIGH será aplicado no pino D0 no mesmo instante também</p><p>ascenderá o LED verde na PCI sinalizando a captação de vibração. As</p><p>aplicações para este tipo de sensor são inúmeras.</p><p>Pinagem:</p><p>– VCC: 3,3 – 5V</p><p>– GND: GND</p><p>– D0: Saída Digital</p><p>Teclado Matricial 4×4</p><p>10. O teclado matricial 4×4 como o nome diz é uma matriz de contatos</p><p>que quando algum digito é pressionando o contato se fecha de um pino para</p><p>outro. O esquema de contatos pode ser observado abaixo, linhas e colunas com</p><p>https://www.arduinoomega.com/modulo-sensor-de-vibracao-sw-420-arduino-pic-raspberry</p><p>https://www.arduinoomega.com/teclado-matricial-de-membrana-16-teclas</p><p>168</p><p>8 pinos. Exemplo: Quando a tecla 1 é pressionada os pinos 1 e 5 se fecham</p><p>(Linha 1, Coluna 1).</p><p>Display LCD 16×2 BackLight Azul</p><p>11. O Display LCD 16×2 possibilita e interação do programa com o</p><p>usuário. As mensagens podem ser enviadas simultaneamente com o</p><p>processamento no programa possibilitando assim o envio de dados, texto e</p><p>sinais lidos nas entradas do microprocessador. O LCD possui 16 colunas e 2</p><p>linhas com luz de fundo azul e escrita branca.</p><p>15.10 Prática experimental 10 - Sensor de Luz</p><p>Fundamentação teórica: Fotoresistor LDR é um componente eletrônico</p><p>muito utilizado, sua função é semelhante ao resistor comum de limitar a corrente</p><p>elétrica que passa sobre ele, porém sua resistência varia de acordo com a</p><p>intensidade da luz. Quanto mais luz incidir sobre o componente, menor a</p><p>resistência. Este sensor de luminosidade pode ser utilizado em projetos com</p><p>Arduino e outros microcontroladores para alarmes, automação residencial,</p><p>sensores de presença e etc.</p><p>Objetivo: Utilizar um Fotoresistor LDR para criar um sistema de</p><p>iluminação muito semelhante aos utilizado nos postes de iluminação de cidades,</p><p>onde sempre que o LDR detectar baixa luminosidade um LED é acesso.</p><p>https://www.arduinoomega.com/display-lcd-162-backlight-azul</p><p>169</p><p>Componentes: 1 placa a protoboard, sensor LDR, 1 resistor de 10KΩ,</p><p>1 resistor de 1KΩ e 1 LED azul.</p><p>Procedimento: 1. Primeiro é preciso alimentar a protoboard com o GND</p><p>e o 5V do Arduino. Depois, encaixe o Sensor LDR na protoboard, um dos</p><p>terminais deve ser ligado aos 5V e outro ao GND, a um resistor de 10KΩ e na</p><p>Porta Analógica A0. Por fim, o menor terminal do LED deve estar conectado ao</p><p>GND e o maior a um resistor de 1KΩ e na Porta Digital 4.</p><p>2. Conhecer as novas funções que a serem utilizadas: Serial.begin</p><p>Essa é a primeira função utilizada quando faz-se a comunicação serial,</p><p>ela configura a taxa de comunicação em bits por segundo. Deve ser escrita</p><p>dessa forma: Serial.begin(velocidade);</p><p>3. Serial.println</p><p>Essa função imprime dados no monitor serial como texto. Deve ser</p><p>escrita da seguinte maneira: Serial.println(valor);</p><p>Código:</p><p>int led = 4; // Definindo que o LED está na porta digital 4</p><p>int sensor = A0; // Definindo que o Sensor está na porta analógica A0</p><p>int valorsensor = 0;// Variável que armazena o valor da leitura do sensor</p><p>void setup() { // inicia o void setup</p><p>Serial.begin(9600); // Inicia a comunicação serial na velocidade de 9600</p><p>pinMode (led, OUTPUT); //Define LED como saída</p><p>pinMode (sensor, INPUT); //Define sensor como entrada</p><p>}</p><p>void loop() { // Inicia o void loop</p><p>Serial.println(valorsensor); // Imprimi o valor do sensor no monitor serial</p><p>valorsensor = analogRead (sensor);// Faz a leitura analógica da porta em que o Sensor</p><p>esta conectado</p><p>if((valorsensor)</p><p>8 PLACA ARDUINO (HARDWARE).....................................................................................................124</p><p>8.1 Alimentação da placa Arduino.....................................................................................................124</p><p>8.2 Comunicação USB da placa arduino UNO..................................................................................125</p><p>8.3 Microcontrolador do Arduino.......................................................................................................126</p><p>8.4 Entradas e saídas do Arduino......................................................................................................127</p><p>8.4.1Grandezas digitais e analógicas................................................................................................127</p><p>8.4.2 Caraterísticas de uma entrada digital (pull-up e pull-down)....................................................128</p><p>8.4.3 Caraterísticas de uma saída digital..........................................................................................130</p><p>8.4.4 Entradas e saídas analógicas....................................................................................................131</p><p>8.4.5 Entradas analógicas..................................................................................................................131</p><p>8.5 Programação da placa..................................................................................................................133</p><p>8.6 Resumo da placa arduino UNO....................................................................................................133</p><p>9. ARDUINO IDE (SOFTWARE)……………………………………………………………………………..134</p><p>9.1 Void………………………………………………………………………………………………………... 134</p><p>9.2 pinMode ......................................................................................................................................134</p><p>10 TIPOS DE PLACAS DE ARDUINO.................................................................................................135</p><p>10.1 Arduino UNO R3..........................................................................................................................136</p><p>10.2 Arduino Mega (R3) ......................................................................................................................135</p><p>10.3 Arduino Leonardo.......................................................................................................................137</p><p>10.4 Arduíno Nano ..............................................................................................................................137</p><p>10.5 Arduino Pro Mini..........................................................................................................................138</p><p>10.6 Arduino LilyPad...........................................................................................................................139</p><p>11 TABELA COMPARATIVA DE PLACAS ARDUÍNO........................................................................139</p><p>12 MOTORES ARDUINO......................................................................................................................140</p><p>12.1 Motor de corrente contínua (motor dc) ....................................................................................140</p><p>12.2 Servo motor.................................................................................................................................141</p><p>13 SENSORES ARDUINO ...............................................................................................................141</p><p>13.1 Sensor de distância ultrassônico HC-SR04..............................................................................141</p><p>13.2 Sensor de umidade e temperatura............................................................................................142</p><p>13.3 Sensor de obstáculo infravermelho IR......................................................................................142</p><p>13.4 Sensor de cor ...........................................................................................................................143</p><p>14 CÓDIGO DE CORES PARA RESISTORES ............................................................................143</p><p>15 PRÁTICAS EXPERIMENTAIS ...................................................................................................144</p><p>15.1 Prática experimental 1 – Projeto led..........................................................................................144</p><p>15.2 Prática experimental 2 – Projeto led com expansão................................................................145</p><p>15.3 Prática experimental 3 – Projeto piano.....................................................................................147</p><p>15.4 Prática experimental 4 – Projeto registro de temperatura.......................................................149</p><p>15.5 Prática experimental 5 – Projeto alarme....................................................................................149</p><p>15.6 Prática experimental 6 – Projeto termômetro...........................................................................150</p><p>15.7 Prática experimental 7 – Potenciômetro...................................................................................153</p><p>15.8 Prática experimental 8 – Projeto sensor de estacionamento..................................................154</p><p>15.9 Prática experimental 9 – Sistema de alarme codificado com arduino, display 16×2 e sensor</p><p>de vibração SW-40...............................................................................................................................160</p><p>15.10 Prática experimental 10 – Sensor de luz..................................................................................168</p><p>15.11 Prática experimental 11 – Incrementando sensor de luz no módulo relé............................168</p><p>15.12 Prática experimental 12– Controlando servo motor...............................................................171</p><p>15.13 Prática experimental 13 – Sensor de som...............................................................................173</p><p>15.14 Prática experimental 14 – Incrementando sensor de som.....................................................174</p><p>15.15 Prática experimental 15 – Monitoramento de temperatura....................................................175</p><p>15.16 Prática experimental 16 – Sensor de movimento e presença.................................................177</p><p>15.17 Prática experimental 17 – Controle de acesso por RFID com arduino.................................179</p><p>15.18 Prática experimental 18 – Robô autônomo.............................................................................183</p><p>15.19 Prática experimental 19 – Robô autônomo via bluetooth......................................................189</p><p>15.20 Prática experimental 20 – Carregar uma sequência de LED usando o arduinoblocks.........193</p><p>15.21 Prática experimental 21- LCD usando o ArduinoBlocks........................................................196</p><p>15.22 Prática experimental - Comunicação arduino e bluetooth usando o arduinoblocks ...........199</p><p>15. 23 Prática experimental – Programe o ESP8266 com arduinoblocks: .....................................200</p><p>16 REFERÊNCIAS ...............................................................................................................................203</p><p>10</p><p>APRESENTAÇÃO</p><p>A coordenação de Robótica do Instituto de Educação, Ciência e</p><p>Tecnologia do Maranhão - IEMA, buscando uma formação sintonizada com o</p><p>desenvolvimento do conhecimento e da criatividade, traz a Apostila de Robótica</p><p>Educacional em Arduino para os demais IEMAs Plenos, que servirá como</p><p>material de apoio teórico e prático para os professores.</p><p>Além de uma introdução sobre a plataforma Arduino, instalação e</p><p>configuração, mostra-se como utilizar todos os recursos que uma placa Arduino</p><p>oferece, através de experimentos</p><p>Arduino. A partir das saídas</p><p>digitais pode-se, através do relé, controlar cargas maiores e dispositivos como</p><p>motores AC ou DC, eletroímãs, solenoides e lâmpadas incandescentes.</p><p>171</p><p>OBS 2: Este módulo tem um canal sendo assim concebido para ser</p><p>integrado para controlar até 1 relé. O módulo é equipado com um relé de alta</p><p>qualidade, com carga nominal 10A/250VAC, 10A/125VAC, 10A/30VDC. Cada</p><p>canal possui um LED para indicar o estado da saída do relé.</p><p>Código:</p><p>int rele= 4; // Definindo que o Relé está na porta digital 4</p><p>int sensor = A0; // Definindo que o Sensor está na porta analógica A0</p><p>int valorsensor = 0; // Variável que armazena o valor da leitura do sensor</p><p>void setup() { // inicia o void setup</p><p>Serial.begin(9600); // Inicia a comunicação serial na velocidade de 9600</p><p>pinMode (rele, OUTPUT); //Define Relé como saída</p><p>pinMode (sensor, INPUT); //Define sensor como entrada</p><p>}</p><p>void loop() { // Inicia o void loop</p><p>Serial.println(valorsensor); // Imprimi o valor do sensor no monitor serial</p><p>valorsensor = analogRead (sensor);// Faz a leitura analógica da porta em que o Sensor</p><p>esta conectado</p><p>if((valorsensor) // Incluindo a biblioteca</p><p>Servo servo; // Objeto do tipo Servo</p><p>int pot = A0; // Definindo que o Potenciômetro está na porta analógica A0</p><p>int servomotor = 3; // Definindo que o Servo Motor está na porta digital 3</p><p>173</p><p>int valorpot; // Variável que armazena o valor da leitura do potenciômetro</p><p>void setup(){ // Inicia o void setup</p><p>servo.attach(servomotor); // Associando o pino digital ao objeto servo</p><p>pinMode(pot, INPUT); // Defininindo o Potenciômetro como Entrada</p><p>}</p><p>void loop(){ // Inicia o void loop</p><p>valorpot = analogRead(pot); //Lê o valor do potenciômetro</p><p>valorpot = map(valorpot, 0, 1023, 0, 180); // transformando uma escala de 0-1023 em</p><p>uma escala 0 a 180</p><p>servo.write(valorpot); //Faz com que o servo se movimente de acordo com o valor do</p><p>potenciômetro</p><p>delay(1);</p><p>}</p><p>15. 13 Prática experimental 13 - Sensor de Som</p><p>Objetivo: Acionar um LED quando batermos palmas.</p><p>Componentes: 1 protoboard, 1 sensor de som, 1 resistor de 1KΩ e 1</p><p>LED azul.</p><p>Fundamentação teórica: O Módulo Sensor de Som, possibilita a</p><p>detecções de sons, variando o estado de sua saída digital caso detectado um</p><p>sinal sonoro. Possui um microfone de condensador elétrico e pode ser usado em</p><p>sistemas de alarme por exemplo.</p><p>O limite de detecção pode ser ajustado através do trimpot presente no</p><p>sensor que regulará a que nível de sinal sonoro a saída digital vai alterar seu</p><p>estado.</p><p>174</p><p>OBS: Esse tipo de sistema é muito utilizado na automação residencial.</p><p>Procedimento: Primeiro é preciso alimentar a protoboard com o GND e</p><p>o 5V do Arduino. Depois, encaixe o Sensor de Som na protoboard, o pino VCC</p><p>deve ser conectado aos 5V, o GND ao GND e o pino OUT na Porta Digital 2 do</p><p>Arduino. O menor terminal do LED deve ser conectado ao GND e o maior a um</p><p>resistor de 1KΩ e na Porta Digital 3 do Arduino.</p><p>Código:</p><p>int led = 3; // Definindo que o LED está na porta digital 3</p><p>int sensor = 2; // Definindo que o Sensor está na porta digital 2</p><p>int estadoSensor; // Variável que armazena o valor da leitura do sensor</p><p>void setup () { // inicia o void setup</p><p>pinMode(led, OUTPUT); // Define LED como saída</p><p>pinMode(sensor, INPUT); // Define Sensor como entrada</p><p>}</p><p>void loop () { // incia o void loop</p><p>if (digitalRead(sensor) == HIGH){ // Se a leitura do Sensor for igual a HIGH (alto)</p><p>estadoSensor = digitalRead(led); // Lê o estado atual do LED e armazena</p><p>digitalWrite(led, !estadoSensor); // Muda o estado do LED, ou seja, o LED acende</p><p>delay(500); // Tempo de 500 milissegundos</p><p>}</p><p>}</p><p>15.14 Prática experimental 14 – Incrementando Sensor de Som</p><p>Objetivo: Acionar uma Lâmpada quando batermos palmas.</p><p>Componentes: 1 protoboard, 1 sensor de som, 1 resistor de 1KΩ,1</p><p>lâmpada e 1 módulo relé.</p><p>OBS: Ao invés de se utilizar o LED, pode-se fazer uma alteração no</p><p>circuito e se utilizar uma lâmpada, logo será necessário usar o Módulo Relé.</p><p>175</p><p>Procedimento: 1. Primeiro é preciso alimentar a protoboard com o GND</p><p>e o 5V do Arduino. Depois, encaixe o Sensor de Som na protoboard, o pino VCC</p><p>deve ser conectado aos 5V, o GND ao GND e o pino OUT na Porta Digital 2 do</p><p>Arduino.</p><p>2. O pino IN do relé deve ser conectado na Porta Digital 3, o pino GND</p><p>no GND e o pino VCC no 5V.</p><p>3. Um fio deve ser conectado a lâmpada e no contato COM do relé, outro</p><p>na rede elétrica.</p><p>4. Um fio da rede elétrica precisa estar conectado ao contato NO</p><p>(normalmente aberto) do relé.</p><p>Atenção: Caso você não tenha experiência com circuitos elétricos, para</p><p>evitar o risco de choques peça ajuda a uma pessoa capacitada.</p><p>Código:</p><p>int rele = 3; // Definindo que o Relé está na porta digital 3</p><p>int sensor = 2; // Definindo que o Sensor está na porta digital 2</p><p>int estadoSensor; // Variável que armazena o valor da leitura do sensor</p><p>void setup () { // inicia o void setup</p><p>pinMode(rele, OUTPUT); // Define o Relé como saída</p><p>pinMode(sensor, INPUT); // Define Sensor como entrada</p><p>digitalWrite(rele, HIGH); // O relé inicia desligado</p><p>}</p><p>void loop () { // incia o void loop</p><p>if (digitalRead(sensor) == HIGH){ // Se a leitura do Sensor for igual a HIGH (alto)</p><p>estadoSensor = digitalRead(rele); // Lê o estado atual do Relé e armazena</p><p>digitalWrite(rele, !estadoSensor); // Muda o estado do Relé, ou seja, o Relé é</p><p>acionado</p><p>delay(500); // Tempo de 500 milissegundos</p><p>}</p><p>}</p><p>176</p><p>15.15 Prática experimental 15 - Monitoramento de Temperatura</p><p>Objetivo: Criar um sistema de monitoramento de temperatura utilizando</p><p>o Display LCD e o sensor de temperatura LM35.</p><p>OBS: O Sensor de Temperatura LM35DZ pode ser uma ótima opção se</p><p>você busca precisão, além de ter uma fácil comunicação com microcontroladores</p><p>como o Arduino. Esse sensor é muito usado para projetos de automação</p><p>residencial ou até mesmo industrial, ele possui faixa de leitura de 0°C a 100°C.</p><p>Componentes: 1 placa protoboard, display LCD e sensor de</p><p>temperatura.</p><p>Procedimento: Primeiro é necessário se alimentar</p><p>vetor através da estrutura de repetição “for” e</p><p>atribuímos true a variável caso a tag esteja no vetor. A última verificação executa</p><p>as funções de acesso liberado e acesso negado dependendo do valor da variável</p><p>booleana de liberação.</p><p>7. As funções acessoLiberado() e acessoNegado() simplesmente</p><p>escrevem nos pinos dos leds e do buzzer(na frequência 1500hz) os valores de</p><p>ligado ou desligado. Abaixo segue o código deste tutorial:</p><p>https://www.arduinomega.com.br/kit-modulo-rfid-mfrc522-1356-mhz</p><p>182</p><p>Código:</p><p>#include</p><p>#include</p><p>#define verde 6</p><p>#define vermelho 7</p><p>#define buzzer 8</p><p>#define sda 10</p><p>#define rst 9</p><p>String tagID = "";</p><p>bool liberado = false;</p><p>//Vetor de ID's cadastrados</p><p>String tagsPermitidas[] = {"3d7f7d63","75f8375f"};</p><p>MFRC522 RFID(sda, rst);</p><p>void setup() {</p><p>Serial.begin(9600); // Comunicação Serial</p><p>SPI.begin(); // Comunicacao SPI</p><p>RFID.PCD_Init(); // Leitor RFID</p><p>pinMode(verde, OUTPUT);</p><p>pinMode(vermelho, OUTPUT);</p><p>pinMode(buzzer, OUTPUT);</p><p>}</p><p>void loop() {</p><p>// Verificação de existência de tag</p><p>if ( !RFID.PICC_IsNewCardPresent() || !RFID.PICC_ReadCardSerial() ) {</p><p>delay(50);</p><p>return;</p><p>}</p><p>tagID = "";</p><p>// Estrutura de repetição padrão para coleta dos valores das tags pela função uid</p><p>for (byte i = 0; i ; // incluindo a biblioteca para o Sensor Ultrassônico</p><p>#define TRIGGER_PIN 3 // Pino Trigger do sensor na porta 3</p><p>#define ECHO_PIN 2 // Pino Trigger do sensor na porta 2</p><p>Ultrasonic ultrasonic(TRIGGER_PIN, ECHO_PIN);</p><p>// definindo as portas onde estão conectados os motores</p><p>#define IN1 7 //Pinos motor A (Direita)</p><p>#define IN2 6 //Pinos motor A (Direita)</p><p>#define IN3 5 //Pinos motor B (Esquerda)</p><p>#define IN4 4 //Pinos motor B (Esquerda)</p><p>#define ENA 10 //Pino velocidade motor A (Enable A)</p><p>#define ENB 11 //Pino velocidade motor B (Enable B)</p><p>void setup()</p><p>{</p><p>187</p><p>//Definindo os motores como saídas</p><p>pinMode(IN1,OUTPUT); //Saída para motor A</p><p>pinMode(IN2,OUTPUT); //Saída para motor A</p><p>pinMode(IN3,OUTPUT); //Saída para motor B</p><p>pinMode(IN4,OUTPUT); //Saída para motor B</p><p>pinMode(ENA,OUTPUT); //Controle velocidade motor A</p><p>pinMode(ENB,OUTPUT); //Controle velocidade motor B</p><p>//velocidades dos motores, caso note que seu robô está muito lento, altere os</p><p>valores.</p><p>analogWrite(ENA,120); //Controle PWM do motor A (0 a 255)</p><p>analogWrite(ENB,120); //Controle PWM do motor B (0 a 255)</p><p>delay(1000); //Aguarda 1 segundo antes de iniciar</p><p>} //end setup</p><p>void loop() //loop principal</p><p>{</p><p>//Robô inicia andando para frente</p><p>robo_frente();</p><p>float dist_cm = distancia(); //Declara variável que armazena a distância do</p><p>obstáculo</p><p>if(dist_cm</p><p>digitalWrite(IN4,HIGH);</p><p>}</p><p>void robo_parado() //função para parar o robô</p><p>{</p><p>digitalWrite(IN1,LOW);</p><p>digitalWrite(IN2,LOW);</p><p>digitalWrite(IN3,LOW);</p><p>digitalWrite(IN4,LOW);</p><p>}</p><p>void decisao() //função para decidir a ação do robô</p><p>{</p><p>robo_parado();</p><p>delay(500);</p><p>robo_esquerda();</p><p>//esse tempo precisa ser avaliado para que o robô vire por volta de 90 graus</p><p>delay(400);</p><p>robo_parado();</p><p>delay(500);</p><p>}</p><p>189</p><p>Possíveis Problemas</p><p>1- O robô não anda ou está muito lento</p><p>Esse problema também é causado pela bateria.</p><p>OBS: Para evitar outros tipos de problemas, siga o passo a passo para</p><p>montar o circuito.</p><p>Esse problema acontece por conta da bateria. O robô consome muita</p><p>energia e as baterias comuns não suportam muito tempo, é aconselhável utilizar</p><p>baterias recarregáveis e fontes de 9V para realização dos testes.</p><p>Caso a bateria seja nova e o robô continuar lento, modifique o código na</p><p>seguinte parte:</p><p>analogWrite(ENA,120);</p><p>analogWrite(ENB,120);</p><p>Escolha uma valor entre 0 a 255 e teste.</p><p>2- O robô anda, mas começa a rodar e não para.</p><p>Esse problema também é causado pela bateria.</p><p>OBS: Para evitar outros tipos de problemas, siga o passo a passo para</p><p>montar o circuito.</p><p>15.19 Prática experimental 19 – Bobô autônomo via bluetooth</p><p>Fundamentação teórica: O Módulo Bluetooth HC-06 é feito para</p><p>comunicação sem fio em pequeno alcance, capaz de enviar dados para outro</p><p>dispositivo via Bluetooth com segurança e agilidade. Ele trabalha apenas como</p><p>Slave, ou seja, apenas recebe informações.</p><p>Aqui será possível controlar servos, motores, LEDs e outras diversas</p><p>aplicações.</p><p>Objetivo: Transformar o robô autônomo em um robô controlado Por App</p><p>via Bluetooth utilizando Smartphone.</p><p>Componentes: Smartphone, protoboard e resistores de 1KΩ.</p><p>Procedimento: Será realizada pequenas alterações no circuito anterior.</p><p>190</p><p>2. Primeiro remove-se o sensor ultrassônico e adiciona-se o Módulo</p><p>Bluetooth.</p><p>3. Sabe-se que apesar dele aceitar 5V para sua alimentação, o módulo</p><p>opera com a tensão máxima de 3.3V, e o Arduino fornece em suas portas 5V.</p><p>Assim, é necessário se fazer um divisor de tensão. Para isso será utilizado</p><p>os resistores de 1KΩ, dessa forma a tensão ficará em 2,5V.</p><p>4. O pino VCC do Módulo deve estar conectado nos 5V da protoboard, o pino</p><p>GND no GND, o pino TXD na porta RXD e o pino RXD deve estar conectado a</p><p>dois resistores de 1KΩ e na porta TXD do Arduino.</p><p>OBS: um dos resistores deve estar no GND da Protoboard.</p><p>VCC ---- 5V</p><p>GND ---- GND</p><p>TXD ---- RXD</p><p>RXD ---- TXD</p><p>Será conectado dois LEDs para simularmos um farol no robô.</p><p>191</p><p>4. As menores pernas dos LEDs são negativas, devem ser conectadas no</p><p>GND da Protoboard.</p><p>5. As pernas positivas devem ser conectadas aos resistores de 1KΩ e nas</p><p>portas 3 e 4 do Arduino.</p><p>Código:</p><p>//Definição dos pinos de saída para os dois motores e os LEDs</p><p>#define IN1 7</p><p>#define IN2 6</p><p>#define IN3 5</p><p>#define IN4 4</p><p>int led1 = 2;</p><p>int led2 = 3;</p><p>//Definindo pinos para o controle de velocidade dos motores</p><p>#define ENA 10</p><p>#define ENB 11</p><p>void setup() {</p><p>Serial.begin(9600); // inicia a porta serial, configura a taxa de dados para 9600</p><p>bps</p><p>// Declarando os motores e os LEDs como Saídas</p><p>pinMode(IN1,OUTPUT);</p><p>pinMode(led1,OUTPUT);</p><p>pinMode(led2,OUTPUT);</p><p>pinMode(IN2,OUTPUT);</p><p>192</p><p>pinMode(IN3,OUTPUT);</p><p>pinMode(IN4,OUTPUT);</p><p>pinMode(ENA,OUTPUT);</p><p>pinMode(ENB,OUTPUT);</p><p>// Velocidade dos Motores, Caso esteja muito lento ou muito rápido altere os números</p><p>entre 0 a 255</p><p>analogWrite(ENA,110);</p><p>analogWrite(ENB,110);</p><p>}</p><p>char cha;</p><p>void loop() {</p><p>if (Serial.available() > 0) {</p><p>cha = Serial.read();</p><p>delay(2);</p><p>//Movimenta para frente</p><p>if(cha == 'F'){</p><p>digitalWrite(IN1,HIGH);</p><p>digitalWrite(IN2,LOW);</p><p>digitalWrite(IN3,HIGH);</p><p>digitalWrite(IN4,LOW);</p><p>}</p><p>//Movimenta para trás</p><p>if(cha == 'B'){</p><p>digitalWrite(IN1,LOW);</p><p>digitalWrite(IN2,HIGH);</p><p>digitalWrite(IN3,LOW);</p><p>digitalWrite(IN4,HIGH);</p><p>}</p><p>//movimenta para direita</p><p>if(cha == 'R'){</p><p>digitalWrite(IN1,LOW);</p><p>digitalWrite(IN2,HIGH);</p><p>digitalWrite(IN3,HIGH);</p><p>digitalWrite(IN4,LOW);</p><p>}</p><p>//movimenta para esquerda</p><p>if(cha == 'L'){</p><p>digitalWrite(IN1,HIGH);</p><p>digitalWrite(IN2,LOW);</p><p>digitalWrite(IN3,LOW);</p><p>digitalWrite(IN4,HIGH);</p><p>}</p><p>193</p><p>//Sem movimento</p><p>if(cha == '0'){</p><p>digitalWrite(IN1,LOW);</p><p>digitalWrite(IN2,LOW);</p><p>digitalWrite(IN3,LOW);</p><p>digitalWrite(IN4,LOW);</p><p>}</p><p>// Liga os LEDs</p><p>if(cha == '3'){</p><p>digitalWrite(led1,HIGH);</p><p>digitalWrite(led2,HIGH);</p><p>}</p><p>//Desliga LEDs</p><p>if(cha == '4'){</p><p>digitalWrite(led1,LOW);</p><p>digitalWrite(led2,LOW);</p><p>}</p><p>}</p><p>}</p><p>6. Ative o Bluetooth do celular e procure na lista o nome HC-06.</p><p>7. Ao clicar sobre o nome HC-06 é necessário inserir uma senha para</p><p>parear o celular com o módulo. A senha é 1234.</p><p>OBS: Caso essa senha não funcione tente 0000.</p><p>8. O robô será controlado baixando o aplicativo Arduino Bluetooth</p><p>Controller na Play Store.</p><p>Link:</p><p>https://play.google.com/store/apps/details?id=com.giumig.apps.bluetoothserial</p><p>monitor&hl=pt_BR&gl=US&pli=1</p><p>15.20 Prática experimental 20 – Carregar uma Sequência de LED usando o</p><p>ArduinoBlocks</p><p>Objetivo: Carregar uma sequência de LED usando o ArduinoBlocks</p><p>Componentes: LEDs, placa Arduino, resistor de 220 Ω.</p><p>Procedimento: 1. Conectar 5 LEDs à placa Arduino nos pinos 2, 3, 4, 5,</p><p>6 conectando um resistor de 220 Ω antes do led led anode (pin longo) e todos os</p><p>cátodos dos LEDs (short pin) serão unidos diretamente para GND:</p><p>194</p><p>3. Programação 1 para Sequência de Leds Pares e depois ímpares:</p><p>4. Ligue os Leds Pares e depois ímpares.</p><p>Código:</p><p>5. Programação 2 para Desligar o LED:</p><p>6. Ligue um led consecutivamente um atrás do outro da esquerda para a</p><p>direita (apenas um LED aceso). Quando chegar ao último, inicie a sequência</p><p>novamente.</p><p>Código:</p><p>195</p><p>7. Ligue os leds consecutivamente um após o outro da esquerda para a</p><p>direita até que todos continuem, então eles desligam consecutivamente na</p><p>ordem inversa em que foram ligados até que todos estão desligados e começam</p><p>de novo. Sequências.</p><p>8. Programação 3 para Leds Ligado / Apagado progressivo:</p><p>Código:</p><p>9. Programação 4 para de Leds Carro Fantasma:</p><p>Código:</p><p>10. Programação 5 para Leds de dentro para fora:</p><p>11. Faça uma sequência de LEDs que os LEDs iluminem de fora para</p><p>dentro e vice-versa, a velocidade, pode-se ajustá-la simplesmente mudando o</p><p>valor de uma variável.</p><p>196</p><p>Código:</p><p>15.21 Prática experimental 21 – LCD usando o ArduinoBlocks</p><p>Fundamentação teórica: Os LCDs permitem que você exiba caracteres</p><p>enviados de um controlador. Eles têm um baixo consumo para que possa ser</p><p>alimentado a partir da placa Arduino. Com ArduinoBlocks você pode se</p><p>comunicar com a tela através do protocolo de comunicação I2C, graças a</p><p>isso, a fiação é reduzida a apenas dois cabos de dados (mais dois cabos de</p><p>alimentação).</p><p>No protocolo de comunicação I2C, os cabos de dados são chamados de</p><p>SCL e SDA. O conector SCL se conecta ao pino Arduino A5 e o SDA ao pino</p><p>A4. Isso porque, no Arduino UNO, os pinos A4 e A5, além de atuarem como</p><p>entradas analógicas, funcionam como conectores para comunicação I2C.</p><p>Objetivo: Digitar um texto para que o dispositivo LCD informe na tela</p><p>essa informação.</p><p>Componentes: LCD, placa Arduino UNO,</p><p>197</p><p>Procedimento:</p><p>OBS: Os blocos de programação são encontrados na seção de</p><p>tela LCD. Os</p><p>blocos mais proeminentes são os seguintes:</p><p>1. Início do LCD (I2C). Primeiro defini-se o tipo de tela que se tem,</p><p>adicionando o seguinte bloco na seção Inicializar:</p><p>Vários elementos podem ser instalados na comunicação I2C. Cada</p><p>componente tem um endereço individual a ser identificado. Na lista suspensa ao</p><p>lado de ADDR, selecionamos esse endereço individual. Os mais comuns por</p><p>padrão são 0x27 ou 0x3F, que são marcados com um asterisco.</p><p>2. Impressão LCD: Este é o bloco principal para imprimir dados na tela.</p><p>Na caixa entre aspas, inseri-se o texto ou os dados que se quer enviar. Na coluna</p><p>e na linha, seleciona-se a posição em que se quer que ela apareça.</p><p>3. LCD limpo: Toda vez que se quiser causar uma nova impressão,</p><p>terá que remover os personagens anteriores.</p><p>4. Símbolo de definição do LCD: Este é o bloco que permite criar</p><p>personagens personalizados.</p><p>5. Para fazer isso, clica-se com o botão direito do mouse no bloco e em</p><p>seguida clica-se na ajuda:</p><p>Isso abrirá uma nova guia no navegador na qual um editor aparece para</p><p>criar caracteres clicando na caixa dividida em pixels:</p><p>198</p><p>6. Copia-se os dados gerados e colaca-se no bloco LCD. Define Symbol.</p><p>7. Finalmente, com o seguinte bloco, escolhe-se onde na tela imprimir o</p><p>caractere definido:</p><p>8. Com os dois blocos a seguir, pode-se inserir a posição de cada</p><p>elemento, tanto em linha quanto em coluna, usando variáveis. Desta forma,</p><p>pode-se automatizar os movimentos dos personagens:</p><p>9. Programação 1 para Exemplo: LCD imprimir palavras</p><p>alternadamente usando ArduinoBlocks. O esquema a seguir será usado, embora</p><p>para o primeiro programa proposto não seja necessário usar o botão.</p><p>10. Programação 2 para Exemplo: LCD imprimir o status de um botão</p><p>usando ArduinoBlocks. Se o botão conectado à porta 2 estiver acionado, ele será</p><p>199</p><p>impresso na primeira linha da tela "Entrada ativa". Quando não estiver ativado,</p><p>ele será impresso, também na primeira linha "Entrada desligada".</p><p>15.22 Prática experimental 22 – Comunicação Arduino e Bluetooth usando</p><p>o ArduinoBlocks</p><p>Objetivo: Controlar uma saída Arduino com o celular via Bluetooth.</p><p>Componentes: placa Arduino UNO, placa Bluethooth</p><p>Procedimento: Será criado um pequeno aplicativo móvel para gerenciar</p><p>o Arduino, através do Bluetooth Electronics App.</p><p>O programa pode ser aberto diretamente em:</p><p>http://www.arduinoblocks.com/web/project/17808</p><p>http://www.arduinoblocks.com/web/project/17808</p><p>200</p><p>15.23 Prática experimental 23 – Programe o ESP8266 com ArduinoBlocks:</p><p>NodeMCU Board</p><p>Objetivo: Programar o ESP8266 com ArduinoBlocks.</p><p>Fundamentação teórica: Os módulos ESP8266 como periféricos</p><p>fornecem conectividade Wi-Fi às placas Arduino. No entanto, esses dispositivos</p><p>têm seu próprio microcontrolador interno, o que permite que eles sejam</p><p>programados sem ter que ser associado a outros microcontroladores, como o</p><p>Arduino. Com a atualização para a versão 4 do conector ArduinoBlocks, já se</p><p>pode programar com blocos muitas das placas baseadas no chip ESP8266. Mais</p><p>um passo gigante na programação de blocos e IOT.</p><p>O chip ESP8266 é, portanto, realmente um SoC (System on Chip), que integra</p><p>todos os elementos descritos no parágrafo anterior. Por sua vez, este sistema</p><p>pode ser encontrado como parte de uma infinidade de "módulos" comerciais,</p><p>surgindo assim diferentes soluções com diferentes funções, pinos, tamanhos e</p><p>preços. O mais simples é o ESP-01, que possui apenas 2 portas digitais e precisa</p><p>de um adaptador USB para ser programado.</p><p>Neste post utilizaremos a placa de desenvolvimento NodeMCU, também</p><p>baseada no ESP-12E.</p><p>http://www.arduinoblocks.com/web/site/abconnector</p><p>201</p><p>O NodeMCU possui 9 pinos digitais que podem atuar como entradas e</p><p>saídas (digitais e PWM), pinos Rx e Tx para comunicação serial e uma entrada</p><p>analógica. Além disso, inclui uma porta micro USB e suporta comunicação I2C e</p><p>SPI.</p><p>Da mesma forma, possui 2 Leds integrados conectados ao pino D0 e D4</p><p>que podemos usar para testar programas sem ter que fazer nenhuma conexão.</p><p>Você simplesmente tem que ter em mente que, nesses Led, um estado baixo faz</p><p>com que a luz se ilumine, e um estado alto, que se desliga. Ou seja, trabalham</p><p>com lógica reversa.</p><p>Finalmente, é importante notar que sua tensão de operação é de</p><p>3,3VDC, o que faz com que tenha um baixo consumo, mas, ao mesmo tempo,</p><p>obriga você a tomar certas precauções ao conectar a placa NodeMCU com</p><p>sensores que funcionam a 5VDC.</p><p>Sua programação é muito semelhante à de qualquer placa Arduino no</p><p>ArduinoBlocks, com a facilidade adicional de que para a comunicação Wifi não</p><p>precisamos indicar a quais pinos o ESP8266 está conectado, já que este é o</p><p>núcleo da placa e não um periférico.</p><p>Componentes: LEDs e placa de desenvolvimento NodeMCU</p><p>Procedimento: Será conectado um Led ao pino D1, conforme mostrado</p><p>na imagem a seguir:</p><p>202</p><p>A comunicação Wi-Fi pela MQTT será feita através da</p><p>plataformaio.adafruit em sua versão gratuita. Pode-se encontrar informações</p><p>sobre seu uso no artigo: Painel MQTT com Adafruit IO e ArduinoBlocks.</p><p>Receba pedidos para ligar e desligar uma saída digital. No programa</p><p>seguinte, a placa subscreve o tema "IgnitionLights". Se um 1 for recebido nesse</p><p>tópico, a saída D1 será ativada, que com um 0 será desativada.</p><p>https://blog.arduinoblocks.com/2019/03/dashboard-mqtt-con-adafruit-io-y.html</p><p>203</p><p>16 - REFERÊNCIAS</p><p>ALBUQUERQUE, T. L. Q. Desenvolvimento de uma ferramenta</p><p>computacional com acesso remoto para monitoramento de biorreatores</p><p>anaeróbios. 2021. 127p. Tese (Doutorado em Engenharia Ambiental) –</p><p>Universidade Estadual da Paraíba, Campina Grande.</p><p>ANTUNES, J. Lego mindstorms education EV3: o que é isso? 2022.</p><p>Tecnologia Educacional. Disponível em:</p><p>. Acesso em: 12 de nov de 2022.</p><p>ARDUINO PORTUGAL. Qual a diferença entre entradas Digitais,</p><p>Analógicas e PWM, 2017. Disponível em:</p><p>.</p><p>Acesso em: 12 de nov de 2022.</p><p>ARDUINO, CC. What is Arduino? 2019. Disponível em:</p><p>https://www.arduino.cc/en/Guide/Introduction#. Acesso em: 5 dez de 2022.</p><p>ASIMOV, I. Eu, Robô. 9ª Edição. Expressão Cultural: Rio de Janeiro, 1981.</p><p>AZEVEDO, S. Minicurso: Introdução à Robótica Educacional. SBPC.</p><p>2010. Disponível</p><p>em: - Acesso em 17 de nov de 2022.</p><p>https://www.arduinoportugal.pt/grandezas-digitais-e-analogicas-e-pwm/</p><p>204</p><p>BARBOSA, E.; SILVA, R.; BLIKSTEIN, P. Robótica educacional:</p><p>experiências inovadoras na educação brasileira/organizadores. Porto</p><p>Alegre, 2020.</p><p>BBC LEARNING, B. What is computational thinking? 2015. Disponível em:</p><p>. Acesso em 6 dez</p><p>de 2022.</p><p>BENITTI, F. B. V.; VAHLDICK, A.; URBAN, D.L.; KRUEGER, M. L.; HALMA,</p><p>A. Experimentação com Robótica Educativa no Ensino Médio: ambiente,</p><p>atividades e resultados. In: Workshop de Informática na Escola (WIE), v. 15.</p><p>Anais WIE. p. 1811-1820. 2009.</p><p>BRASIL. Ministério da Educação. Base Nacional Comum Curricular.</p><p>Educação é a base. Brasília: MEC, 2017. Disponível em:</p><p>http://portal.mec.gov.br/index.php?option=com_docman&view=download&ali</p><p>as=79601- anexo-texto-bncc-reexportado-pdf-2&category_slug=dezembro-</p><p>2017-pdf&Itemid=30192. Acesso em: 21 nov de 2022.</p><p>CARRARA, V. Introdução à Robótica Industrial. Instituto Nacional de</p><p>Pesquisas Espaciais – INPE. São josé dos Campos, 2015.</p><p>CAVALCANTE, M. M.; SILVA, J. L.; VIANA, E. C.; DANTAS, J. R. A</p><p>plataforma arduino para fins didáticos: estudo de caso com</p><p>recolhimento de dados a partir do PLX-DAQ. Instituto Federal de</p><p>Educação, Ciências e Tecnologia – Paulo Afonso-BA, 2014. Disponível em:</p><p>http://www.lbd.dcc.ufmg.br/colecoes/wei/2014/0037.pdf. Acesso em: 6 dez.</p><p>2022.</p><p>CHRIST, N. A.; BEGOSSO, C. Um estudo sobre a programação baseada</p><p>em blocos. P. 1–14. 2019.</p><p>CRUZ, T.S. O Ensino de robótica educacional e a base nacional comum</p><p>205</p><p>curricular: a relação entre a cultura maker e as competências gerais. VI</p><p>Congresso Nacional de Educação (CONEDU). Fortaleza – CE, 2019.</p><p>MEDEIROS, I.; RABELO, H. Relato de Experiência: O Pensamento</p><p>Computacional por meio da aplicação de Atividades Desplugadas em uma</p><p>turma de 5º Ano – Natal - RN. VI Conedu, 2019.</p><p>MENZEL, P.; D’ALUISIO, F. Robô Sapiens: evolution of the new species.</p><p>Cambridge: Massachusetts Institute of Technology – MIT Press, 2000.</p><p>MESQUITA, L.; SENA, G. J; MONTEIRO, M. A. A.; WENDLING, J. M. A.</p><p>Introdução à Lógica de Programação. 2020. Universidade Estadual Paulista</p><p>“Júlio de Mesquita filho”. Disponível em:</p><p>https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/apostila</p><p>---introducao-a-logica-de-programacao.compressed.pdf. Acesso em: 7 dez de</p><p>2022.</p><p>MONTEIRO, L. M. Linguagem de programação. 2018. Disponível em:</p><p>https://universidadedatecnologia.com.br/o-que-e-linguagem-de</p><p>programacao/#:~:text=Linguagem%20de%20Programa%C3%A7%C3%A3o</p><p>%20%C3%A9%20uma,equipamento%20que%20permita%20sua%20execu</p><p>%C3%A7%C3%A3o. Acesso em: 20 de dez 2022.</p><p>MOTA, A. D. Apostila Arduino Básico: Vol. 1. 40p. Serra – ES: Vida de</p><p>Silício, 2015.</p><p>OLIVEIRA, J. S. Introdução à cinemática com suporte de animações em</p><p>Scratch. 2022. 122p. Dissertação (Mestrado em Ensino de Física) -</p><p>Universidade Tecnológica Federal do Paraná, Medianeira.</p><p>PEREIRA, K.; SOPRANO, G. Construção de histórias com Scratch</p><p>(Oficina) - Maker Day Brasil. 26/09/2019. Disponível em:</p><p>https://www.sympla.com.br/evento/construcao-de-historias-com-scratch-</p><p>oficina-maker-day-brasil/645600. Acesso em: 20 de dez 2022.</p><p>https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/apostila---introducao-a-logica-de-programacao.compressed.pdf</p><p>https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/apostila---introducao-a-logica-de-programacao.compressed.pdf</p><p>https://universidadedatecnologia.com.br/o-que-e-linguagem-de%20programacao/#:~:text=Linguagem%20de%20Programa%C3%A7%C3%A3o%20%C3%A9%20uma,equipamento%20que%20permita%20sua%20execu%C3%A7%C3%A3o</p><p>https://universidadedatecnologia.com.br/o-que-e-linguagem-de%20programacao/#:~:text=Linguagem%20de%20Programa%C3%A7%C3%A3o%20%C3%A9%20uma,equipamento%20que%20permita%20sua%20execu%C3%A7%C3%A3o</p><p>https://universidadedatecnologia.com.br/o-que-e-linguagem-de%20programacao/#:~:text=Linguagem%20de%20Programa%C3%A7%C3%A3o%20%C3%A9%20uma,equipamento%20que%20permita%20sua%20execu%C3%A7%C3%A3o</p><p>https://universidadedatecnologia.com.br/o-que-e-linguagem-de%20programacao/#:~:text=Linguagem%20de%20Programa%C3%A7%C3%A3o%20%C3%A9%20uma,equipamento%20que%20permita%20sua%20execu%C3%A7%C3%A3o</p><p>https://repositorio.utfpr.edu.br/jspui/browse?type=author&value=Oliveira%2C+Josemar+da+Silva+de</p><p>206</p><p>PORTO, L. V. A.; KUSTER, R. S. Capacitação em programação básica e</p><p>robótica na seleção de alunos bolsistas do projeto programar para</p><p>avançar – letramento e robótica para alunos da rede pública. 2021. 74p.</p><p>TCC (Graduação em Bacharelado em Sistemas de Informação) - Instituto</p><p>Federal de Educação, Ciência e Tecnologia do Espírito Santo, Colatina.</p><p>REIS, N.S.; SOUZA, L.H.R. Robótica no Brasil: relatos de pesquisa e</p><p>desenvolvimento. 17º Seminário Nacional de História da Ciência e da</p><p>Tecnologia. ANAIS ELETRÔNICOS. UNIRIO, nov. 2020.</p><p>SOUSA JR, I. V.; MIRANDA, J. O. S.; NASCIMENTO, A.C. S.; ARAÚJO, F. R.</p><p>V. Física experimental com Arduino: ondas em uma corda tensionada.</p><p>Rev. Bras. Ensino Fís. n. 42, São Paulo. 2020</p><p>SOUZA, F. Arduino UNO. 15 fev, 2013. Disponível em:</p><p>. Acesso em 15 de nov de</p><p>2022.</p><p>SOUZA, M. F.; COSTA, C. S. Scratch: Guia Prático para aplicação na</p><p>educação básica. - 1. ed. Imperial Editora. Rio de Janeiro, 78 p. 2019.</p><p>VANNUZINI, G. Informática – programação em blocos. 24/06/2021.</p><p>Disponível em: https://microcamp.com.br/programacao-por-blocos/. Acesso</p><p>em: 20 de dez 2022.</p><p>WING, J. M. Computational thinking. communications of the acm. V. 49, n.</p><p>3, p. 33, 2006.</p><p>https://www.circuitar.com.br/tutoriais/programacao-para-arduino-primeiros-</p><p>passos/AGUIAR, John Hobby A. Aula 1 – Introdução à Robótica. Instituto</p><p>de Educação, Ciência e Tecnologia do Maranhão – IEMA. Vargem Grande –</p><p>MA, 2023</p><p>https://www.embarcados.com.br/arduino-uno/</p><p>https://microcamp.com.br/programacao-por-blocos/</p><p>práticos, desde a programação, montagem,</p><p>até o produto em funcionamento.</p><p>Esse material se articula fortemente a todos os componentes</p><p>curriculares, garantindo que os conteúdos pedagógicos sejam abordados por</p><p>meio de uma prática interativa e estimulante. Ainda possibilita ao estudante a</p><p>compreensão de programação, conhecimento bastante importante frente aos</p><p>desafios da sociedade atual.</p><p>Professores terão possibilidade de explorar e ampliar os conhecimentos</p><p>trazidos neste material, que é um subsídio para o início de projetos nos IEMAs</p><p>Plenos.</p><p>11</p><p>1 - INTRODUÇÃO</p><p>A Robótica é a parte da ciência que se dedica a estudar os robôs, ou</p><p>autômatos, que podem ser reprogramáveis controlados por um programa de</p><p>computador armazenado no próprio robô, ou em um computador ao qual o</p><p>robô está ligado. Construir e programar um robô requer a combinação de</p><p>conhecimentos de diferentes áreas, logo pode-se dizer que a Robótica é por</p><p>natureza multidisciplinar.</p><p>Segundo Barbosa e Silva e Blikstein (2020), até a década de 1990, a</p><p>Robótica era assunto exclusivo para pesquisadores de ponta nas melhores</p><p>escolas de engenharia do mundo ou roteiro de escritores de ficção científica</p><p>e por mais que fosse inimaginável pensar que crianças e adolescentes</p><p>pudessem utilizar a robótica na sala de aula, essa é a realidade em muitas</p><p>escolas.</p><p>Ao longo do tempo, um grupo de pesquisadores, originários ou</p><p>relacionados ao grupo de Seymour Papert do Massachusetts Institute of</p><p>Technology – MIT Media Lab, trouxe a Robótica para a escola, “a ideia era</p><p>desenhar dispositivos que escondessem grande parte da complexidade da</p><p>construção de dispositivos robóticos” e que tivesse uma abordagem</p><p>pedagógica, baseada no construcionismo, na montagem e na programação</p><p>de robôs, surgindo assim o que hoje chamamos de Robótica Educacional –</p><p>RE (BARBOSA & SILVA e BLIKSTEIN, 2020).</p><p>A robótica tem usufruído do uso de blocos de montar para se</p><p>estabilizar enquanto instrumento educacional. O uso desses blocos se dá de</p><p>forma intencional, onde, ao passo em que o sujeito encaixa uma peça na</p><p>outra, já há ali a prática do construcionismo, uma vez que para ele aquela</p><p>estrutura representa algo de seu interesse. Montar protótipos e programá-los</p><p>através de uma linguagem específica, fazendo uso de variadas tecnologias,</p><p>implica diretamente na extensão tecnológica da cultura do “faça você mesmo”</p><p>(CRUZ, 2019).</p><p>De acordo com Benitti et al. (2009), por meio da robótica os alunos</p><p>podem explorar novas ideias e desvendar novos caminhos para aplicar os</p><p>conhecimentos adquiridos em sala de aula, fazendo com que desenvolvam a</p><p>12</p><p>capacidade de formular hipóteses, estabelecer relações, tirar conclusões e</p><p>resolver problemas. Tais afirmativas são constatadas através de diversas</p><p>pesquisas nessa área.</p><p>O ensino de robótica alinhado à cultura maker e às competências</p><p>gerais da BNCC promovem um processo ensino-aprendizagem que permite</p><p>que a escola acompanhe os rápidos avanços tecnológicos, assim como</p><p>abranjam as necessidades das novas e futuras gerações, as quais nasceram</p><p>e irão nascer num mundo amplamente conectado (BRASIL, 2017).</p><p>Portanto, alinhadas às competências gerais da Base Nacional</p><p>Comum, a robótica educacional e a cultura maker nos apresentam uma gama</p><p>de oportunidades de desenvolver no espaço educacional habilidades</p><p>transversais e transdisciplinares que podem permitir que os sujeitos garantam</p><p>cada vez mais a sua formação integral. Neste sentido, diante da necessidade</p><p>de nortear os professores que irão trabalhar com a disciplina de Robótica</p><p>Educacional, elaborou-se esse material, que servirá de instrumento para as</p><p>ações a serem desenvolvidas em sala de aula, pois é um meio de construir e</p><p>compreender tecnologias presentes no nosso cotidiano bem como usufruir de</p><p>forma sustentável nosso ambiente.</p><p>13</p><p>2 - HISTÓRICO DA ROBÓTICA</p><p>A robótica é um dos ramos da tecnologia, mais especificamente no</p><p>domínio das engenharias (englobando mecânica, elétrica, eletrônica,</p><p>automação, controle e computação), que lida preferencialmente com sistemas</p><p>compostos por máquinas e partes mecânicas automáticas e controlados por</p><p>dispositivos mecânicos e/ou circuitos integrados (microprocessadores),</p><p>tornando sistemas mecânicos motorizados, controlado manual ou</p><p>automaticamente por circuitos elétricos, por computadores ou tele operados.</p><p>Esta tecnologia e suas disciplinas correlatas vem já há algum tempo sendo</p><p>adotada como padrão de produção em unidades fabris com sucesso relativo</p><p>e restrito aos conceitos: índices de produtividade e redução de custos (REIS</p><p>e SOUZA, 2020).</p><p>O precursor do termo robô (GROOVER, 1989) foi Karel Capek,</p><p>novelista e escritor de uma peça teatral na Tchecoslováquia, que usou pela</p><p>primeira vez, em 1920, a palavra “robota” (serviço compulsório, atividade</p><p>forçada) originando a palavra “robot” em inglês e traduzida para o português</p><p>como “robô”. Diversos filmes de ficção científica mostraram robôs produzidos</p><p>com o comportamento e a forma humana, levando muitos jovens a pesquisar</p><p>e desenvolver robôs para o mundo real.</p><p>Com o surgimento dos computadores na metade do século, iniciaram-</p><p>se especulações em termos da capacidade de um robô pensar e agir como</p><p>um ser humano. No entanto, os robôs foram, neste período, criados</p><p>especialmente para executarem tarefas difíceis, perigosas e impossíveis para</p><p>um ser humano. Por outro lado, eles não eram projetados com a capacidade</p><p>de criar ou executar processos que não lhes foram ensinados ou</p><p>programados. Assim sendo, foram as indústrias que mais se beneficiaram</p><p>com o desenvolvimento da robótica, aumentando a produção e eliminando</p><p>tarefas perigosas, antes executadas por seres humanos (CARRARA, 2015).</p><p>Na prática, um robô é um dispositivo autônomo ou semiautônomo que</p><p>realiza trabalhos de acordo com um controle humano, controle parcial com</p><p>supervisão, ou de forma autônoma. Além de serem usados como redutor de</p><p>custos pela indústria, entende-se que a grande vocação para os robôs fica por</p><p>conta da realização de tarefas em locais inóspitos ou impróprios a presença</p><p>14</p><p>do ser humano. Locais mal iluminados, ruidosos, alagados, poluídos ou</p><p>contaminados quimicamente, ambientes radioativos, hiper ou hipobáricos;</p><p>todos são candidatos a um planejamento especial contando com tais sistemas</p><p>(REIS e SOUZA, 2020).</p><p>Observa-se que, do mesmo modo que existem inúmeras definições</p><p>sobre a robótica pode-se encontrar também vários registros sobre “criadores”</p><p>e dos “pais” da tecnologia, ou mesmo quem foi o inventor/criador ou ainda o</p><p>primeiro a utilizar os termos: robô e robótica.</p><p>Segundo Azevedo et al. (2010), historicamente parece haver razões</p><p>para crer que teriam sido os gregos que construíram o que podemos chamar</p><p>de primeiros robôs. Ctesibius, um matemático e engenheiro grego que viveu</p><p>cerca de 285-222 a.C. em Alexandria, arquitetou uma série de aparelhos</p><p>robóticos, o mais famoso destes, foi a clepsidra ou relógio de água, o qual</p><p>constitui-se um dos primeiros sistemas criados pelo homem para medir o</p><p>tempo.</p><p>Há também relatos sobre Heron de Alexandria, geômetra e engenheiro</p><p>grego contemporâneo a Cristo e aos apóstolos. Este construiu diversas</p><p>invenções na área da automação, dentre seus sistemas robóticos está a</p><p>primeira máquina de vender bebidas da história, na qual a pessoa colocava</p><p>uma moeda nela e recebia um jato de água. Também construiu um autômato</p><p>que possuía autonomia para andar para frente e para trás movido por</p><p>engrenagens em um sistema que utilizava a energia cinética de grãos de trigo</p><p>que caíam de um recipiente no topo do autômato. Criou também o primeiro</p><p>motor a vapor documentado na história (AZEVEDO et al., 2010).</p><p>O célebre artífice, Leonardo Da Vinci ganha importância no invento de</p><p>engenhocas</p><p>robóticas. Da Vinci, cientista, matemático, engenheiro, inventor,</p><p>anatomista, pintor, escultor, arquiteto, botânico, poeta e músico é reverenciado</p><p>até os dias atuais por sua engenhosidade tecnológica. Concebeu ideias muito</p><p>à frente de seu tempo, como um helicóptero, um tanque de guerra, o uso da</p><p>energia solar, uma calculadora, dentre outros (AZEVEDO et al., 2010).</p><p>Influenciado pela obra do arquiteto e engenheiro romano Marcos</p><p>Vitrúvio Polião (século I a.C.), Leonardo debruçou-se sobre o que foi chamado</p><p>o Homem Vitruviano – um dos seus trabalhos mais famosos, tomado como</p><p>símbolo do espírito renascentista. O desenho reproduz a anatomia humana</p><p>15</p><p>conduzindo eventualmente ao desígnio do primeiro robô conhecido na história</p><p>que veio a ser chamado de O Robô de Leonardo. Como resultados deste</p><p>estudo surgiram diversos exemplares de bonecos que moviam as mãos, os</p><p>olhos e as pernas, e que conseguiam realizar ações simples como escrever</p><p>ou tocar alguns instrumentos. E ainda em sua homenagem encontramos</p><p>atualmente o Robô Da Vinci destinado a diagnosticar e até operar a distância,</p><p>pois é controlado por um médico ou um grupo de especialistas à distância do</p><p>local onde se encontra o paciente (MENZEL, 2000).</p><p>No mundo da robótica, Jacques de Vaucanson, inventor e artista</p><p>francês, também se destaca. Em 1738 ele criou o primeiro robô funcional, um</p><p>androide que tocava flauta, assim como um pato mecânico que se alimentava.</p><p>Após expor para sociedade as primeiras criações robóticas, a tecnologia</p><p>avançou a ponto das pessoas preverem o uso das criaturas mecânicas como</p><p>força de trabalho, as respostas literárias ao conceito dos autômatos (robôs)</p><p>refletiram o medo dos seres humanos, de serem substituídos por suas próprias</p><p>criações (AZEVEDO et al., 2010).</p><p>Enquanto na ficção apareciam obras com base na robótica ficcional, na</p><p>realidade começam a ser criados os primeiros robôs fabricados para</p><p>industrialização. Isso ocorreu na década de 1950. Joseph F. Engelberger,</p><p>engenheiro e empresário considerado o "pai da robótica”, foi o primeiro a</p><p>construir tal robô, chamado Unimate. Este robô foi vendido para General</p><p>Motors, passando a trabalhar na linha de montagem em Nova Jersey, em</p><p>1961. Alguns textos creditam a criação do Unimate também ao inventor</p><p>George DeVol, expondo que este e Joseph F. Engelberger trabalharam em</p><p>conjunto na estruturação do primeiro robô fabril (PATA, 2006).</p><p>A partir de então, dissemina-se a robótica industrial como mecanismo</p><p>capaz de proporcionar às indústrias o aumento da produtividade e melhorar a</p><p>qualidade dos produtos, possibilitando a redução de custos com o operariado.</p><p>Porém há um ponto negativo nisso tudo. Ao mesmo tempo em que a robótica</p><p>beneficia as empresas diminuindo gastos e agilizando processos, ele cria o</p><p>desemprego pela substituição do trabalho humano por máquinas (AZEVEDO</p><p>et al., 2010).</p><p>Há também alguns ramos da robótica que geram impacto social positivo.</p><p>Quando um robô é na realidade uma ferramenta para preservar o ser humano,</p><p>16</p><p>como robôs bombeiros, submarinos, cirurgiões, entre outros tipos. Neste caso,</p><p>o robô pode auxiliar profissionais na resolução de atividades específicas,</p><p>preservando sua vida.</p><p>Dentro deste contexto, é possível observar que na robótica há variados</p><p>tipos de robôs, com complexidades e utilidades distintas. Podemos ainda</p><p>classificar os robôs de acordo com suas gerações tecnológicas.</p><p>2.1 - Primeira geração</p><p>São basicamente os braços robóticos industriais como o de Engelberg.</p><p>Seu movimento é programado previamente e realizam apenas a repetição de</p><p>uma sequência fixa de passos. Possuem sensores que adquirem dados</p><p>apenas do estado interno do robô. Para que sua programação seja bem</p><p>executada eles requerem um ambiente bem estruturado, com objetos bem</p><p>posicionados. Outro exemplo de robô desta geração eram os braços para</p><p>coleta de amostras submarinas.</p><p>Figura - Unimate, robô de primeira geração</p><p>Fonte: https://www.pinterest.nz/pin/366832332128690376/</p><p>Figura -Braço robótico, robô de primeira geração</p><p>Fonte: https://www.opovo.com.br/noticias/tecnologia/2015/08/cientistas-criam-</p><p>robo-capaz-de-construir-outros-sem-intervencao-humana.html</p><p>https://www.opovo.com.br/noticias/tecnologia/2015/08/cientistas-criam-robo-capaz-de-construir-outros-sem-intervencao-humana.html</p><p>https://www.opovo.com.br/noticias/tecnologia/2015/08/cientistas-criam-robo-capaz-de-construir-outros-sem-intervencao-humana.html</p><p>17</p><p>2.2 - Segunda geração</p><p>São robôs dotados de sensores externos e internos, a programação</p><p>adotada permite que se adequem as situações nas quais tais dispositivos se</p><p>encontram. Nesta geração houve o advento do uso de câmeras que capturam</p><p>imagens as quais são comparadas com um banco de imagens, sensores de luz,</p><p>toque, peso, etc. Como exemplos temos os robôs do tipo houver e os robôs</p><p>montados com os kits mais comuns de robótica educacional.</p><p>Figura - Robô Hilare, primeiro robô de segunda geração produzido</p><p>Fonte:https://www.researchgate.net/figure/Le-robot-mobile-Hilare-2-muni-de-sa-</p><p>remorque-un-systeme-non-holonome_fig3_281416197</p><p>Figura - Robô HILARE, em mais detalhes.</p><p>Fonte: https://www.wikidata.org/wiki/Q55139668</p><p>2.3 - Terceira geração</p><p>É composta por robôs dotados de Inteligência Artificial. Fazem uso de</p><p>mecanismos como visão computacional, síntese e reconhecimento de voz,</p><p>atualização de posicionamento, algoritmos de rotas, heurísticas, e simulação</p><p>de comportamento humano ou animal – entre outras características. Podem</p><p>ser dotados de componentes físicos, ou se apresentar apenas em mundos</p><p>virtuais, como jogos de computador. Em algumas aplicações, r</p><p>18</p><p>obôs podem coexistir tanto no mundo real quanto possuir uma representação</p><p>no mundo virtual, através de uma plataforma conhecida como hiper presença.</p><p>Os robôs mais conhecidos desta geração são de aplicações militares e/ou</p><p>biológicas, ou ainda robôs que simulam seres vivos.</p><p>Figura - Robô AIBO</p><p>Fonte:https://spectrum.ieee.org/automaton/robotics/home-robots/sony-halts-support-for-</p><p>aibo-still-one-of-the-best-robot-toys-ever</p><p>Figura - Robô ASIMO.</p><p>Fonte:https://www.dailymail.co.uk/sciencetech/article-2797864/the-ultimate-</p><p>robo-pal-asimo-football-playing-disco-dancing-bartending-robot-arrives-uk.html</p><p>Sugestão de vídeos</p><p>19</p><p>https://www.youtube.com/watch?v=kFVB0mmzrvs</p><p>https://www.youtube.com/watch?v=FJ3dg5E_THw</p><p>https://www.youtube.com/watch?v=5lh3OtqkLMU</p><p>3- AS TRÊS LEIS DA ROBÓTICA</p><p>Fonte: https://www.admethics.com/br/the-three-or-four-laws-of-robotics/</p><p>Com o surgimento de robôs cada vez mais modernos e capazes de fazer</p><p>cada vez mais coisas, a ficção científica começou a criar máquinas inteligentes</p><p>e um universo em que máquinas tinham cada vez mais autonomia e controle</p><p>sobre as pessoas, fazendo parecer que os robôs se tornariam destruidores da</p><p>humanidade.</p><p>Assim, Isaac Asimov, a partir da década de 1940 lança inúmeras</p><p>publicações falando sobre esta temática, mas de forma contrária: segundo ele</p><p>os robôs surgiram para ajudar os homens em suas tarefas e não para substituí-</p><p>los, ele escreveu três leis simples para os robôs, que hoje são conhecidas como</p><p>“as três leis da robótica” (ASIMOV, 1981).</p><p>3.1 - 1ª Lei da Robótica</p><p>● Um robô não pode ferir um ser humano ou, por falta de ação, deixar que um</p><p>ser humano se fira;</p><p>3.2 - 2ª Lei da Robótica</p><p>● O robô deve obedecer às ordens dadas pelos seres humanos, exceto se tais</p><p>ordens estiverem em contradição com a primeira lei;</p><p>3.3 - 3ª Lei da Robótica</p><p>● Um robô deve proteger sua existência na medida em que essa proteção não</p><p>esteja em contradição com a primeira e a segunda lei.</p><p>https://www.youtube.com/watch?v=kFVB0mmzrvs</p><p>https://www.youtube.com/watch?v=FJ3dg5E_THw</p><p>https://www.youtube.com/watch?v=5lh3OtqkLMU</p><p>https://www.admethics.com/br/the-three-or-four-laws-of-robotics/</p><p>20</p><p>Sugestão de leitura</p><p>https://www.tecmundo.com.br/ciencia/125150-funcionam-tres-leis-robotica-</p><p>escritor-isaac-asimov-2017.htm</p><p>4 - TIPOS DE ROBÔS</p><p>De forma simples vamos conhecer e agrupar os robôs em cinco grandes</p><p>grupos, para tornar nosso estudo mais fácil, sendo eles: autônomos, industriais,</p><p>humanoides e educacionais.</p><p>4.1 - Robôs autônomos</p><p>São robôs que podem realizar os objetivos desejados em ambientes</p><p>desestruturados sem a ajuda humana. O principal objetivo dos robôs autônomos</p><p>é realizar tarefas que são perigosas, repetitivas ou até mesmo inviáveis para o</p><p>ser humano. No chão de fábrica, os robôs podem ser utilizados na movimentação</p><p>e carregamento de produtos, na linha de produção e outros trabalhos pesados.</p><p>Figura - robô organizador de prateleiras</p><p>Fonte:https://www.terra.com.br/noticias/tecnologia/conheca-os-novos-robos-</p><p>trabalhadores-da-amazon,759895d2e060a410VgnCLD200000b1bf46d0RCRD.html</p><p>4.2 - Robôs industriais ou manipuladores</p><p>São aqueles normalmente empregados em construtoras de automóveis,</p><p>que devem garantir precisão, agilidade e rapidez. Normalmente são apenas</p><p>braços mecânicos como os de primeira geração citados acima, e dotados de</p><p>sensores, tudo controlado por computadores.</p><p>Figura - braço robótica industrial</p><p>21</p><p>Fonte: https://www.hubi40.com.br/robos-industriais-devem-chegar-a-3-milhoes-</p><p>ate-2020/</p><p>4.3 - Robôs humanoides</p><p>Quando se ouve a palavra “robô ‟, normalmente vem a nossas mentes:</p><p>seres de lata com muitos fios e circuitos organizados em um corpo com</p><p>cabeça e membros em forma quase humana. Isso acontece devido à grande</p><p>quantidade de filmes, animações e desenhos que “formatam” a mente</p><p>deixando a ideia de que um robô deve pensar e agir (além de se parecer)</p><p>como humano, mas com o avanço da robótica esses modelos estão cada vez</p><p>mais aperfeiçoados e bem definidos, mas ainda atendendo aos comandos</p><p>humanos.</p><p>Figura - robô NAO</p><p>Fonte:https://www.dw.com/pt-br/rob%C3%B4s-humanoides-saem-da-f%C3%A1brica-</p><p>prontos-para-aprender/a-16259862</p><p>4.4 - Robôs educacionais</p><p>E por fim, temos os robôs mais elaborados que os manipuladores ou de</p><p>primeira geração, porém mais simples que os humanoides e de terceira</p><p>geração, que são os robôs educacionais. Eles são na verdade robôs pré-</p><p>montados que estão disponíveis em Kits de robótica. Estes kits servem para</p><p>facilitar e viabilizar o desenvolvimento, construção e programação de robôs</p><p>22</p><p>para o público iniciante. Dentre os kits mais comuns, podemos citar o Lego</p><p>Mindstorms e Arduino.</p><p>Figura - kit educacional de robótica</p><p>Fonte:https://ajornadadetchellita.wordpress.com/2017/02/28/robotica-</p><p>educacional-mais-uma-modinha-tecnologica/</p><p>4.5 Componentes de um robô</p><p>Agora que já abordamos alguns dos conceitos básicos da robótica, e</p><p>temos uma visão mais geral desta área, vamos estudar como construir um</p><p>robô. A primeira coisa que deve se saber é identificar quais os componentes</p><p>um robô pode possuir, e são eles:</p><p>● Controlador – esta é a parte central de um robô, dotada de um</p><p>microprocessador e memória para execução de seu(s) programa(s).</p><p>● Sensores – componentes responsáveis por detectar sinais como tato,</p><p>imagens e sons; os sensores mais comuns são os de toque, rotação, som</p><p>(microfone), ultrassom, luz, cor, câmera (captura de imagens para</p><p>processamento).</p><p>● Atuadores – podem ser motores de diversos tipos, como mecânicos,</p><p>elétricos, hidráulicos ou pneumáticos; servem para mover o robô e seus</p><p>manipuladores.</p><p>● Manipuladores – são membros como braços e garras, a variedade de</p><p>movimentos que um manipulador pode realizar é medida em graus de</p><p>liberdade. Normalmente possuem um ou mais atuadores em sua estrutura.</p><p>● Engrenagens – elementos mecânicos compostos de rodas dentadas.</p><p>Quando duas engrenagens estão em contato, chamamos a engrenagem que</p><p>fornece a força e rotação para a outra é dita engrenagem motora, e a outra é</p><p>dita engrenagem movida. Quando desejamos aumentar a força transmitida</p><p>pelas engrenagens, a engrenagem motora deve ser a menor. Quando</p><p>23</p><p>desejamos aumentar a velocidade transmitida, a engrenagem motora deve ser</p><p>maior que a movida.</p><p>● Eixo – peça que liga um motor a engrenagens ou rodas.</p><p>● Fonte de energia – é preciso definir como o controlador e os demais</p><p>componentes eletrônicos serão alimentados, que tipo de bateria e/ou gerador</p><p>serão usados.</p><p>● Fiação – para transmitir sinais entre o controlador, os sensores e os</p><p>atuadores, e também para a alimentação desses componentes.</p><p>● Estrutura – a “carcaça” do robô, formado por um conjunto de peças de</p><p>tamanho, formato e cor diversas, e em alguns casos rodas, parafusos e placas.</p><p>Serve como base para sustentar o controlador, sensores, atuadores,</p><p>manipuladores, baterias, geradores, fiação, eixos e engrenagens.</p><p>Fonte: http://www.ece.ufrgs.br/~rventura/Aula2A_componentes.pdf</p><p>5 - KITS EDUCACIONAIS</p><p>A robótica educacional pode ser entendida como a utilização de meios</p><p>computacionais ou robóticos para fins pedagógicos. Compreendendo de uma</p><p>forma mais específica, a robótica educacional tem como principal ferramenta a</p><p>utilização de robôs para o aprimoramento de capacidades intelectuais</p><p>relacionadas ao raciocínio lógico, bem como trabalho em grupo, concentração,</p><p>imaginação e capacidade de resolução de problemas (ZILLI, 2004).</p><p>Atualmente nas aulas de robótica educacional do Instituto Estadual de</p><p>Educação, Ciência e Tecnologia do Maranhão - IEMA, utilizamos duas</p><p>plataformas:</p><p>● Lego Mindstorms EV3</p><p>● Arduíno</p><p>5.1 - LEGO MINDSTORM EV3</p><p>O LEGO MINDSTORMS Education EV3 é uma solução educacional de</p><p>robótica, que estimula o aprendizado de STEAM (sigla internacional para as</p><p>24</p><p>áreas de Ciências, Tecnologia, Engenharia e Matemática). É destinada a alunos</p><p>a partir dos 10 anos até o Ensino Médio e também para projetos de cursos do</p><p>Ensino Superior.</p><p>● Bloco EV3, um computador programável, compacto e poderoso, que torna</p><p>possível controlar motores e coletar feedback dos sensores utilizando o software</p><p>de programação e registro de dados;</p><p>● Motores e 5 Sensores (giroscópio, ultrassônico, de cor e dois de toque);</p><p>● Software de registro de dados e programação disponível para iPads, tablets,</p><p>Android e Chromebooks. Tudo isso em um ambiente intuitivo, baseado em</p><p>ícones, com usabilidade simples e natural.</p><p>5.1.1 - Benefícios do lego mindstorms education ev3 para o aprendizado:</p><p>Segundo Antunes (2022), a utilização do LEGO na educação básica</p><p>proporciona diversos benefícios, como os citados abaixo:</p><p>● Auxilia no desenvolvimento do pensamento crítico e na criatividade dos alunos</p><p>nas disciplinas que envolvem STEM.</p><p>● Estimula a aprendizagem por meio da resolução de problemas baseados em</p><p>situações do cotidiano;</p><p>● Desperta o interesse dos seus alunos com uma abordagem investigativa, por</p><p>meio de uma solução de ensino abrangente e inspiradora;</p><p>● Motiva os alunos a desenvolver, construir e programar robôs usando motores,</p><p>sensores, engrenagens, rodas, eixos e outros componentes. Isso ajuda em uma</p><p>melhor compreensão de como a tecnologia funciona nas aplicações da vida real.</p><p>● Permite que os alunos entendam e interpretem desenhos bidimensionais para</p><p>a criação de modelos tridimensionais; construam, testem, resolvam problemas e</p><p>revejam projetos; apliquem conceitos de matemática e ciências em aplicações</p><p>da vida real; e dominem funções de programação e registro de dados.</p><p>● Essa plataforma (Lego) será ofertada nas Eletivas e também será</p><p>utilizada em Competições.</p><p>25</p><p>Fonte: https://legoeducation.mcassab.com.br/lego-mindstorms-education/</p><p>Sugestão de vídeo</p><p>https://www.youtube.com/watch?v=M47xixea-to</p><p>https://www.youtube.com/watch?v=TZX4r9lA-h0</p><p>5.2 - Arduíno</p><p>O projeto Arduíno, nasceu em 2005 na Itália, é constituído de uma</p><p>plataforma de hardware e de software. É uma plataforma de código aberto</p><p>usada para construir projetos de eletrônica. Consiste de uma placa de circuito</p><p>físico programável (geralmente chamada de microcontrolador) e um software,</p><p>ou IDE (Integrated Development Environment) que roda em seu computador,</p><p>usado para escrever e fazer upload de código de computador para a placa</p><p>física (ARDUINO, 2019).</p><p>A plataforma Arduíno tornou-se bastante popular entre as pessoas que</p><p>estão começando com a eletrônica e por um bom motivo. Ao contrário da</p><p>maioria das placas de circuito programáveis anteriores, o Arduíno não precisa</p><p>de um hardware separado (chamado programador) para carregar um novo</p><p>código na placa - você pode simplesmente usar um cabo USB. Além disso, o</p><p>Arduíno IDE usa uma versão simplificada do C++, facilitando o aprendizado do</p><p>programa. O Arduíno fornece um fator de forma padrão que divide as funções</p><p>do micro controlador em um pacote mais acessível (CAVALCANTE et. al.,</p><p>2014).</p><p>O hardware e software Arduíno foi projetado para artistas, designers,</p><p>amadores, hackers, novatos e qualquer pessoa interessada em criar objetos</p><p>ou ambientes interativos. O Arduino pode interagir com botões, LEDs,</p><p>motores, alto-falantes, unidades de GPS, câmeras, a internet e até mesmo seu</p><p>smartphone ou sua TV. Essa flexibilidade combinada com o fato de que o</p><p>software Arduino é gratuito, as placas de hardware são muito baratas e tanto</p><p>https://legoeducation.mcassab.com.br/lego-mindstorms-education/</p><p>https://www.youtube.com/watch?v=TZX4r9lA-h0</p><p>26</p><p>o software quanto o hardware são fáceis de aprender, levando a uma grande</p><p>comunidade de usuários que contribuíram com código e lançaram instruções</p><p>para uma enorme variedade de Projetos baseados em Arduíno</p><p>(ALBUQUERQUE, 2021).</p><p>Existem diversos modelos de placas Arduino no mercado, no entanto,</p><p>apesar de possuírem características diferentes, compartilham um conjunto de</p><p>circuitos eletrônicos semelhantes, cujo principal componente é um</p><p>microcontrolador.</p><p>Um microcontrolador pode ser entendido como um computador de chip</p><p>único, onde temos encapsulados num circuito integrado a unidade lógica</p><p>aritmética (ULA), memórias, barramentos de comunicação, além de periféricos</p><p>programáveis para entrada e saída de dados (I/O) (SOUSA JR et al., 2020).</p><p>Para que os microcontroladores operem corretamente, é necessário um</p><p>conjunto auxiliar de circuitos eletrônicos responsáveis por funções como</p><p>regulagem de tensão, geração de sinal de Clock, proteção térmica, entre</p><p>outras. Essa é a grande vantagem do projeto Arduino, pois integra na mesma</p><p>placa de circuito impresso todos os componentes necessários ao</p><p>funcionamento do microcontrolador. A maioria dos Arduínos tem alguns</p><p>componentes em comum como os apresentados na figura a seguir.</p><p>Fonte: ARDUINO (2019), modelo adaptado</p><p>27</p><p>Com base nas especificações técnicas contidas no portal ARDUINO</p><p>(2019), segue as explanações sobre os componentes relacionados a imagem</p><p>acima.</p><p>a) Potência (USB / Barrel Jack): toda placa Arduino precisa de uma</p><p>maneira de estar conectada a uma fonte de energia. O Arduino pode ser</p><p>alimentado por um cabo USB vindo do computador ou uma fonte de</p><p>alimentação de parede que é terminada em um conector de barril. Na imagem,</p><p>a conexão USB é rotulada (1) e o conector barril está rotulado (2). A conexão</p><p>USB também permite o carregamento do código (scripts) na sua placa</p><p>Arduino. Vale ressaltar que não se deve usar uma fonte de alimentação maior</p><p>que 20 Volts, pois assim irá destruir seu Arduino. A voltagem recomendada</p><p>para a maioria dos modelos Arduino é entre 6 e 12 Volts.</p><p>b) Pinos (5V, 3.3V, GND, analógico, digital, PWM, AREF): os pinos no</p><p>Arduino são os lugares onde se conecta os fios para construir um circuito</p><p>(provavelmente em conjunto com uma placa de montagem e algum fio). Eles</p><p>geralmente têm 'cabeçalhos' de plástico preto que permitem que se conecte</p><p>um fio direto na placa. Tem vários tipos diferentes de pinos, cada um deles</p><p>rotulado na placa e usado para diferentes funções. De acordo com a imagem</p><p>(4) temos: - GND (3): abreviação de "Ground". Existem vários pinos GND no</p><p>Arduino, qualquer um dos quais pode ser usado para aterrar seu circuito; - 5V</p><p>(4) e 3.3V (5): Como se pode imaginar, o pino de 5V fornece 5 volts de energia,</p><p>e o pino de 3,3V fornece 3,3 volts de energia. A maioria dos componentes</p><p>simples usados com o Arduino são executados com folga de 5 ou 3,3 volts; -</p><p>Analógico (6): A área dos pinos sob a etiqueta "Analog In" (A0 até A5) são</p><p>pinos Analog In (este exemplo é baseado em placas Arduino UNO). Esses</p><p>pinos podem ler o sinal de um sensor analógico (como um sensor de</p><p>temperatura) e convertê-lo em um valor digital que se pode ler; - Digital (7):</p><p>Em frente aos pinos analógicos estão os pinos digitais (0 a 13 na UNO). Esses</p><p>pinos podem ser usados tanto para entrada digital (como dizer se um botão é</p><p>pressionado) quanto para saída digital (como alimentar um LED); - PWM (8):</p><p>Deve se notar o til (~) ao lado de alguns dos pinos digitais (3, 5, 6, 9, 10 e 11</p><p>no UNO). Esses pinos funcionam como pinos digitais normais, mas também</p><p>podem ser usados para algo chamado PWM (Pulse Width Modulation,</p><p>28</p><p>modulação por largura de pulso). Esses pinos são capazes de simular a saída</p><p>analógica (como o desvanecimento de um LED para dentro e para fora); -</p><p>AREF (9): representa a referência analógica. Na maioria das vezes pode</p><p>deixar este pino sozinho. Às vezes, é usado para definir uma tensão de</p><p>referência externa (entre 0 e 5 Volts) como o limite superior para os pinos de</p><p>entrada analógica;</p><p>c) Botão de reset: o Arduino tem um botão de reset (10). Empurrar este</p><p>botão irá conectar temporariamente o pino de reset à terra e reiniciar qualquer</p><p>código que esteja carregado no Arduino;</p><p>d) LED indicador de energia: Logo abaixo e à direita da palavra "UNO"</p><p>(no caso da imagem 4) na placa de circuito, há um pequeno LED ao lado da</p><p>palavra "ON" (11). Este LED deve acender sempre que se conectar o Arduino</p><p>a uma fonte de energia. Se esta luz não acender, há uma boa chance de que</p><p>algo esteja errado;</p><p>e) LEDs TX RX: TX é a abreviação de transmitir, RX é curto para</p><p>receber. Essas marcações aparecem um pouco na eletrônica para indicar os</p><p>pinos responsáveis pela comunicação serial. No caso, existem dois lugares</p><p>no Arduino, onde TX e RX aparecem - uma vez pelos pinos digitais 0 e 1, e</p><p>uma segunda vez ao lado dos LEDs indicadores TX e RX (12). Esses LEDs</p><p>darão algumas indicações visuais agradáveis sempre que o Arduino estiver</p><p>recebendo ou transmitindo dados (como quando carregamos um novo</p><p>programa no quadro);</p><p>f) IC principal: A “coisa” preta com todas as pernas de metal é um IC,</p><p>ou Circuito Integrado (13). É o cérebro do Arduino. O IC principal no Arduino</p><p>é um pouco diferente entre as placas de Arduino (depende do modelo), mas</p><p>geralmente é da linha “ATmega” do IC da empresa ATMEL;</p><p>g) Regulador de voltagem: O regulador de tensão (14) não é realmente</p><p>algo que se possa (ou deveria) interagir com o Arduino. Mas é potencialmente</p><p>útil saber que está lá e para o que serve. O regulador de tensão faz</p><p>exatamente o que diz - controla a quantidade de tensão que é colocada na</p><p>placa do Arduino. Pense nisso como uma espécie de porteiro; ele irá afastar</p><p>uma voltagem extra que pode prejudicar o circuito.</p><p>O Arduino é constituído de uma série de placas denominadas “Família</p><p>Arduino”, onde cada uma delas possui um conjunto de características</p><p>29</p><p>próprias. Dentre elas (Arduino UNO R3, Arduino LilyPad, RedBoard, Arduino</p><p>Mega R3 e Arduino Leonardo). Esse material de estudo abordará</p><p>especificadamente sobre dois modelos sendo: Arduino UNO e ESP que estará</p><p>detalhado em um capítulo a parte mais adiante.</p><p>Sugestão de vídeo</p><p>https://www.youtube.com/watch?v=MqDtkc1QE7o&feature=emb_title</p><p>https://www.youtube.com/watch?v=sv9dDtYnE1g</p><p>6 - PENSAMENTO COMPUTACIONAL</p><p>Segundo Wing (2006), é uma abordagem para solucionar problemas</p><p>baseada em conceitos da Ciência da Computação. No entanto, ensinar</p><p>Pensamento Computacional vai muito além de Ciência da Computação ou</p><p>computadores, trata-se de ensinar uma forma diferente de visualizar</p><p>problemas do dia a dia e solucioná-los da melhor forma possível por meio de</p><p>habilidades que há muito já são utilizadas em outras áreas:</p><p>De acordo com a BBC Learning (2019), o Pensamento Computacional</p><p>se organiza em quatro aptidões: a decomposição, o reconhecimento de</p><p>padrão, a abstração e o algoritmo. Dessa forma, essas quatro etapas devem</p><p>ser seguidas para atingir o objetivo de solucionar problemas, de maneira</p><p>eficiente (MEDEIROS, 2019).</p><p>● Decomposição: dividir um problema complexo em pequenas partes, a fim</p><p>de solucioná-las com mais facilidade;</p><p>● Reconhecimento de padrões: como a própria expressão define, ajuda na</p><p>identificação de aspectos comuns nos processos;</p><p>● Abstração: analisa elementos que têm relevância, diferenciando-os</p><p>daqueles que podem ser deixados de lado;</p><p>● Algoritmos: reúne todos os pilares já citados e envolve a criação de um</p><p>grupo de regras para a solução de problemas.</p><p>Basicamente, a ideia é reformular problemas que aparentam ser de difícil</p><p>resolução e transformá-los em algo capaz de ser compreendido, focando</p><p>assim, em cada uma de suas fases de execução, a fim de buscar as</p><p>resoluções.</p><p>Uma série de competências é obtida como resultado do processo de</p><p>desenvolvimento do pensamento computacional. As habilidades refletem</p><p>https://www.youtube.com/watch?v=MqDtkc1QE7o&feature=emb_title</p><p>https://www.youtube.com/watch?v=sv9dDtYnE1g</p><p>30</p><p>diretamente no aprendizado do indivíduo. Especialmente no caso das crianças</p><p>e jovens, o uso dessa metodologia ajuda em seu crescimento, melhorando</p><p>aspectos como o desenvolvimento cognitivo. Habilidades como:</p><p>desenvolvimento do pensamento lógico, autonomia e alfabetização digital, são</p><p>as principais habilidades adquiridas com a metodologia.</p><p>Sugestão de material de apoio</p><p>https://editorarealize.com.br/editora/anais/conapesc/2021/TRABALHO_EV161_MD4_SA</p><p>107_ID2080_14102021143739.pdf</p><p>6.1 - Linguagem de programação</p><p>É uma linguagem escrita e formal que especifica um conjunto de</p><p>instruções e regras usadas para gerar programas (software). Um software</p><p>pode ser desenvolvido para rodar em um computador, dispositivo móvel ou</p><p>em qualquer equipamento que permita sua execução (MONTEIRO, 2018).</p><p>Imaginemos o computador como uma super calculadora capaz de</p><p>fazer cálculos muito mais rápido que nós, mas para isso devemos dizer para</p><p>o computador o que deve ser calculado e como deve ser calculado. A função</p><p>das linguagens de programação é exatamente essa, ou seja, servir de um</p><p>meio de comunicação entre computadores e humanos, assim como os</p><p>humanos fazem com os humanos: usam da linguagem para poder conversar.</p><p>Quando programamos em uma linguagem de programação</p><p>primeiramente criamos um arquivo de texto comum contendo a lógica do que</p><p>deve ser feito, ou seja, é onde falamos ao computador, o que queremos. Este</p><p>arquivo de texto é chamado de programa, cada palavra de ordem dentro do</p><p>programa é chamada de instrução. Após criarmos o programa, este deve ser</p><p>traduzido para linguagem entendida pelo computador a partir da linguagem</p><p>que estamos utilizando. Um segundo arquivo que chamamos de executável</p><p>ou programa, será gerado e interpretado diretamente pelo computador</p><p>(MESQUITA et al., 2020).</p><p>31</p><p>Enfim, para que um robô seja capaz de realizar suas funções</p><p>precisamos programa-lo, criar rotinas, passos, algoritmos com lógica e</p><p>linguagem de programação. Existem uma série de linguagens de</p><p>programação (Java script, C++, Ruby, PHP, Python, Java, C e C#) e com</p><p>elas escrevemos os programas, aplicativos, sites, sistemas web, entre outros</p><p>(MONTEIRO, 2018).</p><p>Sugestão de vídeos:</p><p>1. Por que aprender a programar? Disponível em:</p><p>https://www.youtube.com/watch?v=90_onKsNw6g</p><p>2. Como funcionam as linguagens de programação. Disponível em:</p><p>https://www.youtube.com/watch?v=22nd99SLgNA</p><p>6.1.1 - Linguagem em bloco</p><p>A programação em blocos é uma metodologia visualmente amigável e</p><p>com um objetivo prático para o ensino dos conceitos iniciais ligados à</p><p>programação, desenvolvimento de softwares/aplicativos e lógica de uma</p><p>forma geral. A interação mais comum de modelos em linguagem de</p><p>programação visual (VPL) são: arrastar blocos ao redor de uma tela; usar</p><p>diagramas de fluxo, diagramas de estado e outros componentes; usar ícones</p><p>ou representação sem texto. A codificação baseada em blocos pode ser</p><p>considerada como um modelo VPL. Ao invés da tradicional programação</p><p>baseada em texto, a codificação baseada em blocos envolve arrastar “blocos”</p><p>de instruções dentro de um ambiente apropriado sem a preocupação com</p><p>questões de sintaxe e qualidade do software (CHRIST e BEGOSSO, 2019).</p><p>32</p><p>Os blocos são então as ferramentas que substituem as linhas de códigos</p><p>escritas em uma linguagem de programação usual, passando a ter um formato</p><p>e cor específicos que remetem a função de cada bloco. É a combinação entre</p><p>esses blocos, através da formação de uma estrutura com início, processos e</p><p>resultados que formam o programa em blocos (VANNUZINI, 2021).</p><p>Com a programação em blocos, os conceitos da programação também</p><p>são transmitidos de forma visual e menos complexa do que um código em uma</p><p>linguagem de programação (como Python, Java, entre outras), mas a partir da</p><p>criação de programas reais, que podem ir desde apresentações a jogos, de</p><p>acordo com a imaginação da pessoa e com as habilidades que ela for</p><p>desenvolvendo (VANNUZINI, 2021).</p><p>Dentro do contexto de programação, os blocos são a unidade</p><p>fundamental e podem representar comandos, condições, objetos e muitas</p><p>outras variáveis que fazem parte da construção de um programa.</p><p>Através de uma interface gráfica, os alunos conseguem visualizar e</p><p>aprender com uma sequência lógica de blocos e ver o resultado acontecendo</p><p>na tela do computador, trazendo a sensação de ter programado de verdade,</p><p>afinal, a máquina vai seguir as instruções montadas nos blocos e fazer</p><p>exatamente aquilo que o aluno a programou para fazer (PORTO e KUSTER,</p><p>2021).</p><p>Exemplo de estrutura de um programa em bloco simples</p><p>Fonte: https://idocode.com.br/blog/programacao/programacao-em-blocos/</p><p>Com a programação em blocos é possível construir estruturas de</p><p>complexidades variadas, tudo vai depender do conhecimento e objetivo de quem</p><p>está por trás da ferramenta de construção. Pode-se iniciar com uma estrutura</p><p>extremamente simples (como a da imagem acima) e avançar para algo mais</p><p>complexo, como o código abaixo (PORTO e KUSTER, 2021).</p><p>https://idocode.com.br/blog/programacao/programacao-em-blocos/</p><p>33</p><p>Estrutura de código mais complexa</p><p>Fonte: https://idocode.com.br/blog/programacao/programacao-em-blocos/</p><p>Assim, programação em blocos é uma forma bastante completa de</p><p>iniciar o estudo da programação com a utilização dos blocos de “Início”, e ir</p><p>seguindo a sequência de complexidade: utilização de operações matemáticas,</p><p>operadores lógicos – verdadeiro, falso, maior ou menor que, estruturas</p><p>condicionais, estruturas de repetição e até mesmo funções. Todas essas</p><p>noções são essenciais a qualquer programador. Neste sentido, serão</p><p>apresentadas as linguagens de programação em blocos: Scratch, Open</p><p>Roberta, Microsoft MakeCode e ArduinoBlocks.</p><p>Sugestão de material de apoio</p><p>Linguagem em blocos:</p><p>https://www.youtube.com/watch?v=4WbmpOA8V94</p><p>https://www.youtube.com/watch?v=zKJmH7G0z34</p><p>6.2 Lógica de programação</p><p>Sem dúvida, o computador é uma das</p><p>maiores invenções do homem e tem se</p><p>mostrado uma ferramenta versátil, rápida e segura para a manipulação de</p><p>informações. Para muitos, essa invenção é responsável pela intensificação da</p><p>mecanização e descobertas científicas na vida moderna. Esta afirmação dá um</p><p>caráter autônomo ao computador, como se o mesmo fizesse tudo sozinho.</p><p>Entretanto cabe esclarecer que o computador não é criativo e nem inteligente,</p><p>na verdade, apenas reproduz o que lhe é ordenado por meio de seus programas</p><p>de computador, os quais são construídos para resolver algum problema</p><p>específico e a solução adotada é sempre uma solução lógica. Podemos entender</p><p>essa “solução lógica” como uma espécie de receita de bolo a ser adotada para</p><p>https://idocode.com.br/blog/programacao/programacao-em-blocos/</p><p>https://www.youtube.com/watch?v=4WbmpOA8V94</p><p>https://www.youtube.com/watch?v=zKJmH7G0z34</p><p>34</p><p>a solução do problema. A Lógica de Programação é então o passo inicial para a</p><p>construção de um programa de computador.</p><p>6.3 A necessidade do uso da lógica</p><p>Sempre que pensamos estamos exercitando o uso da lógica. Toda</p><p>vez que falamos também estamos fazendo uso da lógica uma vez que a fala</p><p>é apenas uma representação do que pensamos. Quantas vezes em nosso</p><p>cotidiano, dissemos afirmações do tipo: “Isso é lógico!”, “... Não tem lógica</p><p>alguma.”, “Não vejo lógica nisso.”. Saber o que é lógico, ou saber identificar</p><p>uma estrutura lógica em um contexto linguístico, é algo que nos é transmitido</p><p>por meio da nossa educação. Além dessa lógica linguística, aplicamos outros</p><p>tipos de raciocínio lógico em nosso dia-a-dia. Um bom exemplo seria porque</p><p>não colocamos nossa mão em uma superfície quente. Isso parece lógico, não</p><p>é? Na verdade, isso acontece porque nosso cérebro processa sentenças</p><p>lógicas como: 1. A pele humana não suporta altas temperaturas (ou algo mais</p><p>simples como: “queimei minha pele no último contato com uma superfície</p><p>quente”); 2. A minha mão é coberta de pele; 3. Logo, a minha mão não suporta</p><p>altas temperaturas. Esse tipo de pensamento lógico se repete várias e várias</p><p>vezes ao dia e graças à lógica, evitamos certos tipos de problemas. Isso deixa</p><p>claro que nós pensamos de forma lógica o tempo todo. No entanto, temos</p><p>uma grande dificuldade em formalizar este raciocínio lógico, pois não somos</p><p>acostumados a formalizar nosso pensamento. O uso da lógica é um fator a</p><p>ser considerado por todos, principalmente pelos profissionais da área de</p><p>Tecnologia da Informação (programadores, analistas de sistemas), pois seu</p><p>dia-a-dia dentro das organizações é solucionar problemas e atingir os</p><p>objetivos apresentados por seus usuários com eficiência e eficácia, utilizando</p><p>recursos computacionais. Vale ressaltar que ninguém ensina ninguém a</p><p>pensar, pois todas as pessoas normais possuem esse “dom”. O objetivo deste</p><p>material é mostrar como desenvolver a aperfeiçoar melhor essa técnica para</p><p>dizer ao computador o que deve ser feito para atingir a solução de um</p><p>determinado problema.</p><p>35</p><p>6.4 Algorítmo</p><p>O Algoritmo é uma sequência lógica de passos que levam a um</p><p>determinado objetivo. Apesar de a palavra algoritmo parecer estranha e</p><p>desconhecida, é claro que todos nós sabemos construir algoritmos. Se isto não</p><p>fosse verdade, não conseguiríamos sair de casa pela manhã, ir à escola, decidir</p><p>qual o melhor caminho para chegar a um lugar, voltar para casa, etc. Para que</p><p>tudo isto seja feito é necessário uma série de entradas do tipo: a que hora</p><p>acordar, a que horas sair de casa, qual o melhor meio de transporte, etc. Um</p><p>fator importante é que pode haver mais de um algoritmo para resolver um</p><p>problema. Por exemplo, para ir de casa até o colégio, podemos escolher diversos</p><p>meios de transportes em função do preço, conforto, rapidez, etc. A escolha será</p><p>feita em função do critério que melhor se adequar as nossas necessidades</p><p>(MESQUITA et al., 2020).</p><p>6.4.1 Algoritmos: aplicabilidade da lógica no desenvolvimento de</p><p>programas</p><p>A construção de algoritmos é o primeiro passo para o desenvolvimento</p><p>de programas de computador. É uma das tarefas mais complexas da</p><p>programação de computadores, mas também uma das mais desafiadoras e</p><p>empolgantes. Muitas definições podem ser dadas à palavra algoritmo.</p><p>Atualmente, tem-se associado algoritmo à computação, mas este não é um</p><p>termo restrito à computação ou que tenha nascido com ela. Na realidade, a</p><p>palavra algoritmo vem do nome do matemático iraniano Abu Abdullah</p><p>Mohammad Ibn Musa al-Khawarizmi, nascido em Khawarizmi (Kheva), ao sul</p><p>do mar de Aral, que viveu no século XVII. A influência de Khawarizmi no</p><p>crescimento da ciência em geral, particularmente na matemática, astronomia</p><p>e geografia, é bastante reconhecida. O termo algoritmo também é utilizado em</p><p>outras áreas como: engenharia, administração, entre outras. Algumas</p><p>definições de algoritmo: • Uma sequência de passos que visa a atingir um</p><p>objetivo definido. • Um procedimento passo a passo para a solução de um</p><p>problema. • Uma sequência detalhada de ações a serem executadas para</p><p>36</p><p>realizar alguma tarefa. Um exemplo clássico de algoritmo é uma receita</p><p>culinária. Veja o exemplo a seguir de um bolo de chocolate.</p><p>Um exemplo clássico de algoritmo é uma receita culinária. Veja o exemplo</p><p>a seguir de um bolo de chocolate. Ingredientes: 4 xícaras (chá) de farinha de</p><p>trigo. 2 xícaras (chá) de açúcar cristal. 2 xícaras (chá) de achocolatado. 2</p><p>colheres (sopa) de fermento em pó. 1 pitada de sal. 3 ovos. 2 xícaras (chá) de</p><p>água morna. 1 xícara (chá) de óleo. Óleo para untar. Farinha de trigo para</p><p>polvilhar.</p><p>Modo de preparo: Numa vasilha, misture 4 xícaras (chá) de farinha de</p><p>trigo, 2 xícaras (chá) de açúcar cristal, 2 xícaras (chá) de achocolatado, 2</p><p>colheres (sopa) de fermento em pó e 1 pitada de sal. Junte 3 ovos, 2 xícaras</p><p>(chá) de água morna e 1 xícara (chá) de óleo. Misture bem. Unte uma forma</p><p>retangular de 25 cm x 37 cm com óleo e polvilhe farinha de trigo e despeje a</p><p>massa. Asse em temperatura média (de 170°C a 180°C) por 30 minutos.</p><p>37</p><p>A receita tem todas as características de um algoritmo. Ela tem uma</p><p>sequência detalhada de passos, descrita no modo de preparo. Apresenta a tarefa</p><p>a ser realizada, que no caso é o bolo de chocolate. Além disto, podemos</p><p>identificar na receita entradas (no caso, os ingredientes) e uma saída, que é o</p><p>próprio bolo. Poderíamos, então, nos perguntar por que a palavra algoritmo ficou</p><p>tão associada à computação? Para compreendermos melhor os motivos, é</p><p>preciso entender, mesmo que superficialmente, o funcionamento dos programas</p><p>de computador. A Figura 1.1 mostra uma representação gráfica dos elementos</p><p>de programa de computador.</p><p>O algoritmo não é a solução do problema, mas uma forma de solucioná-</p><p>lo. Assim, para um mesmo problema, podemos criar diferentes algoritmos</p><p>usando diferentes abordagens. Em outras palavras, podemos usar diferentes</p><p>sequências de instruções para resolver o mesmo problema. Em alguns casos,</p><p>até mesmo diferentes instruções. A construção de um algoritmo deve observar</p><p>todos os passos necessários à execução da atividade e evitar que passos</p><p>desnecessários sejam executados ou que passos interdependentes sejam</p><p>executados fora de ordem. Durante a construção de um algoritmo são realizadas</p><p>constantes revisões a fim de identificar novas situações ou exceções a serem</p><p>tratadas. Quando temos um problema e precisamos construir um algoritmo para</p><p>resolvê-lo, devemos passar pelas seguintes etapas: a) definir o problema; b)</p><p>realizar um estudo da situação atual e verificar qual(is) a(s) forma(s) de resolver</p><p>o problema; c) terminada a fase de estudo, descrever o algoritmo que deverá, a</p><p>princípio, resolver o problema; d) analisar junto aos usuários se o problema será</p><p>resolvido. Se a solução não foi encontrada, ou surgirem exceções a serem</p><p>tratadas,</p>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 
205 
 
curricular: a relação entre a cultura maker e as competências gerais. VI 
Congresso Nacional de Educação (CONEDU). Fortaleza – CE, 2019. 
 
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 
“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. 
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. 
 
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. 
 
https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/apostila---introducao-a-logica-de-programacao.compressed.pdf
https://www.feg.unesp.br/Home/Pesquisa23/inovee/oficinatecnologica/apostila---introducao-a-logica-de-programacao.compressed.pdf
https://universidadedatecnologia.com.br/o-que-e-linguagem-de%20programacao/#:~:text=Linguagem%20de%20Programa%C3%A7%C3%A3o%20%C3%A9%20uma,equipamento%20que%20permita%20sua%20execu%C3%A7%C3%A3o
https://universidadedatecnologia.com.br/o-que-e-linguagem-de%20programacao/#:~:text=Linguagem%20de%20Programa%C3%A7%C3%A3o%20%C3%A9%20uma,equipamento%20que%20permita%20sua%20execu%C3%A7%C3%A3o
https://universidadedatecnologia.com.br/o-que-e-linguagem-de%20programacao/#:~:text=Linguagem%20de%20Programa%C3%A7%C3%A3o%20%C3%A9%20uma,equipamento%20que%20permita%20sua%20execu%C3%A7%C3%A3o
https://universidadedatecnologia.com.br/o-que-e-linguagem-de%20programacao/#:~:text=Linguagem%20de%20Programa%C3%A7%C3%A3o%20%C3%A9%20uma,equipamento%20que%20permita%20sua%20execu%C3%A7%C3%A3o
https://repositorio.utfpr.edu.br/jspui/browse?type=author&value=Oliveira%2C+Josemar+da+Silva+de
206 
 
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. 
 
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 
 
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. 
 
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. 
 
WING, J. M. Computational thinking. communications of the acm. V. 49, n. 
3, p. 33, 2006. 
 
https://www.circuitar.com.br/tutoriais/programacao-para-arduino-primeiros-
passos/AGUIAR, John Hobby A. Aula 1 – Introdução à Robótica. Instituto 
de Educação, Ciência e Tecnologia do Maranhão – IEMA. Vargem Grande – 
MA, 2023 
https://www.embarcados.com.br/arduino-uno/
https://microcamp.com.br/programacao-por-blocos/

Mais conteúdos dessa disciplina