Buscar

Aula 2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 15 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

AULA 2 
LÓGICA E 
MICROCONTROLADORES 
Prof. Charles Way Hun Fung 
 
 
2 
TEMA 1 – ALGORITMO 
O objetivo de desenvolver uma programação é resolver problemas, e, para 
isso, devemos reeducar nossa mente para pensarmos de forma sequencial. Um 
exemplo bem conhecido é uma receita de bolo; nela encontramos ingredientes e 
o modo de preparo. Podemos entender que os ingredientes são os dados e o 
procedimento de preparo são as ações que deveram ser feitas. 
Agora vamos estender este conceito para outras ações do dia a dia, como 
escovar os dentes. Parece uma tarefa muito simples, mas, começando a pensar 
de forma sequencial, podemos formar uma lista de atividades: 
 Pegar a escova de dente; 
 Pegar a pasta de dente; 
 Abrir a pasta de dente; 
 Pressionar a pasta de dente; 
 Colocar a pasta na escova de dente; 
 Fechar a pasta de dente; 
 Guardar a pasta de dente; 
 Colocar a escova de dente na boca; 
 Escovar os dentes; 
 Tirar a escova da boca; 
 Enxaguar a boca; 
 Enxaguar a escova de dente; 
 Guardar a escova de dente. 
Esta sequência de atividades apresenta de forma resumida como é escovar 
os dentes, e cada instrução foi colocada de forma lógica para resolver o problema 
estabelecido. A capacidade de reduzir as etapas do programa em partes menores 
e mais simples é muito importante no desenvolvimento da lógica de programação. 
A partir de agora entramos no conceito de algoritmo, que, segundo Alves 
(2014), é a descrição textual de uma solução para determinado problema, 
podendo ser descrito como uma sequência lógica de etapas ou procedimentos 
que transformam uma entrada de dados em uma saída válida. 
 Analisando o problema de escovar os dentes, podemos dizer que nossa 
entrada de dados seria a escova e a pasta de dentes. Depois que foi executado o 
algoritmo, tivemos uma saída válida, os dentes escovados. 
 
 
3 
Há três formas de se representar um algoritmo (Ascencio, 2002): 
a. Forma narrativa – Faz uso da linguagem natural (português) para 
descrever o problema passo a passo. A vantagem é que não é necessário 
aprender nenhum conceito novo, pois a linguagem natural já é bem 
conhecida. A desvantagem é que ela abre margem para diversas 
interpretações, dificultando a resolução do problema. 
b. Pseudocódigo ou Portugol – Também conhecido como português 
estruturado, consiste em analisar o problema e escrever, usando regras 
predefinidas, os passos a serem seguidos para resolver o problema. A 
vantagem é que os algoritmos implementados podem facilmente ser 
passados a uma linguagem de programação. Como desvantagem, é 
preciso conhecer as regras do pseudocódigo para compreendê-lo. 
c. Fluxograma – Consiste em analisar o problema e utilizar símbolos gráficos 
predefinidos, como na Figura 1, apresentando a resolução do problema 
passo a passo por meio do gráfico. A vantagem é que a representação 
gráfica torna a resposta do sistema mais simples. A desvantagem: é 
necessário conhecer os símbolos do fluxograma, e o gráfico resultante não 
traz muita informação além do que está apresentado. 
Figura 1 – Símbolos usados no fluxograma 
 
Fonte: Alves, 2014. 
 
 
 
4 
 Exemplo de algoritmo – Fazer um algoritmo que mostre o resultado da 
multiplicação de dois números (Alves, 2014). 
 Descrição narrativa 
1. Receber os dois números que serão multiplicados; 
2. Multiplicar os números; 
3. Mostrar o resultado obtido na multiplicação. 
Figura 2 – Fluxograma do algoritmo exemplo 
 
 Pseudocódigo (Visualg) 
algoritmo "Algoritmo Exemplo" 
var 
N1,N2,M: Inteiro 
inicio 
leia(N1,N2) 
M <- N1 * N2; 
escreva("Multiplicação = ",M) 
fimalgoritmo 
Este primeiro exemplo mostra como podemos reproduzir um algoritmo. Nos 
próximos temas, começaremos a entender como funciona a estrutura de um 
algoritmo e a aplicar este conceito usando linguagens de programação como 
Scratch e Wiring, muito usadas para escrever os códigos do Arduino. 
TEMA 2 – SCRATCH 
Consiste em um ambiente de aprendizagem desenvolvido pelo grupo 
Lifelong Kindergarden do MIT Media Lab. A linguagem utilizada é chamada de 
linguagem natural imperativa, apresentada como uma linguagem com blocos de 
montagem com construções básicas de qualquer linguagem de programação: 
variáveis, atribuições, condicionais, repetições, funções e comentários. Não 
precisa de conhecimentos prévios de programação, por isso é ideal para quem 
está começando. 
O funcionamento do Scratch se baseia em juntar blocos para criar uma 
sequência lógica a ser executada pelo computador. As instruções são encaixadas 
 
 
5 
uma a uma, formando cadeias de comandos que executam as etapas do 
algoritmo. A Figura 3 apresenta um exemplo do uso do Scratch no site de 
simulação Tinkercad (<www.tinkercad.com>). 
Figura 3 – Exemplo de Scratch 
 
Como podemos ver na Figura 3, a linguagem em blocos é bastante intuitiva 
– desconsiderando os comentários, pois são apenas explicações colocadas pelo 
programador. Este código tem apenas quatro instruções que estão nos blocos 
azuis e laranjas: 
1. Acender o led; 
2. Esperar um segundo; 
3. Apagar o led; 
4. Esperar um segundo. 
Em outras palavras, este código é um pisca led, porque se o led fica aceso 
um segundo e apagado um segundo, o led piscou. 
O objetivo deste curso será utilizar a linguagem Scratch no Arduino, 
fazendo um paralelo com a linguagem Wiring (Linguagem C/C++), que veremos 
no próximo tema. Para isso, começaremos a entender o seu uso para a 
programação do Arduino. 
Para a criação do programa, os comandos são classificados em: 
 Saída: consiste em comandos que definem o funcionamento de leds, pinos, 
servos-motores, alto-falantes e porta serial, indicando o que aparecerá 
neste dispositivo, por exemplo, quantos graus um servo-motor irá girar. 
 
 
6 
 Entrada: indica que será feita a leitura de um dispositivo analógico ou 
digital. Para isso é possível definir o mecanismo em que será feita a leitura, 
que pode ser um sensor de ultrassom, sensor de temperatura, porta serial, 
ou leitura dos graus de um servo-motor. 
 Notações: comentários que o programador pode colocar no meio do 
programa; não são considerados como código. 
 Controlar: estruturas de controle, que podem ser usadas para diversas 
situações que auxiliam o programador a resolver o problema. Entre elas: 
condicionais, repetição e contagem. Estas estruturas serão abordadas em 
breve com mais detalhes. 
 Matemática: estruturas lógicas, relacionais e aritméticas que podem ser 
usadas no código para relacionar dois valores, por exemplo, verificar se um 
valor é maior que outro. 
 Variáveis: declaração de variáveis que serão usadas para guardar algum 
valor que será útil na execução do código. 
TEMA 3 – PROGRAMAÇÃO WIRING 
Neste tema serão apresentados conceitos básicos da linguagem utilizada 
para programar o Arduino em seu ambiente de desenvolvimento integrado, que 
pode ser baixado no site <https://www.arduino.cc/en/Main/Software>. 
A IDE (ambiente integrado de desenvolvimento) pode ser instalada em 
sistemas operacionais como Windows ou Linux, e possui uma interface (sketch) 
como mostra a Figura 4: 
 
 
 
7 
Figura 4 – IDE do Arduino 
 
Na Figura 4 pode-se identificar que este ambiente é dividido em três partes 
(McRoberts, 2011): barra de ferramentas no topo, área de código ou sketch 
window no centro e janela de mensagem na base da tela. 
A barra de ferramentas consiste em um conjunto de botões com os itens: 
arquivo, editar, sketch, ferramentas, ajuda. Além destes botões, há atalhos em 
formato de ícones para as principais funcionalidades da ferramenta: 
 Verificar: verifica se o código possui erros antes de enviar para o Arduino; 
também recebe o nome de compilar. 
 Carregar: possui a mesma funcionalidade do botão verificar, porém, se 
tudo estiver correto, faz o carregamento na placa do Arduino. 
 Novo: abre uma nova janela da IDE do Arduino, contendo apenas asfunções setup() e loop() vazias. Em outras palavras, é aberto um novo 
sketch em branco. 
 Abrir: mostra uma lista de sketches que podem ser abertos, todos eles 
presentes no sketchbook da aplicação. Ainda dá a opção de abrir; neste 
caso o usuário pode buscar no computador por um sketch presente em 
algum outro lugar do computador. 
 
 
8 
 Salvar: grava o código do atual em arquivo; após, na parte inferior da tela 
aparece a mensagem “Salvo”. 
A linguagem de programação adotada é uma versão otimizada da 
linguagem C/C++ adaptada para o Arduino. No decorrer da disciplina serão 
apresentados os detalhes desta linguagem, porém, se tiver interesse em se 
aprofundar no assunto desta linguagem de programação, recomenda-se: 
Treinamento em linguagem C, de Victorine Viviane Mizrahi: 
<https://bv4.digitalpages.com.br/?term=linguagem%2520c&searchpage=1&filtro=
todos&from=busca&page=_1&section=0#/legacy/2781>. 
Este software possui diversos exemplos que podem ser acessados pela 
barra de ferramentas em: Arquivo  Exemplos. 
O código, apresentado na Figura 4, possui duas estruturas bem definidas: 
as funções setup() e loop(). Estes campos são obrigatórios em todos os 
programas para o Arduino. 
A função setup() é executada apenas uma vez no código, por isso, é usada 
para executar as configurações iniciais do programa ou qualquer comando que se 
deseje executar apenas uma vez. São comandos que serão executados assim 
que a placa inicializar (Oliveira, 2017). 
A função loop() é executada repetidamente durante o funcionamento da 
placa, e todos os comandos colocados nesta função serão executados 
repetidamente. Nesta função é colocado o núcleo do código do programa, tendo 
a noção que estes comandos se repetirão com uma periodicidade. 
O funcionamento do código é o seguinte: a placa do Arduino inicia; executa 
primeiramente a função setup(), executando configurações iniciais e comandos 
apenas uma vez. Em seguida, é executada a função loop(), que se repete até o 
dispositivo ser desligado, ou reiniciado. Neste caso, a função setup() será 
executada novamente e em seguida voltará para a função loop(). 
TEMA 4 – VARIÁVEL 
Quando elaboramos um programa, é necessário guardar alguns dados. 
Como exemplo, temos o algoritmo que fazia uma multiplicação: 
 
 
 
9 
Figura 5 – Fluxograma do algoritmo da multiplicação 
 
Para realizar esta operação de multiplicação, como mostrado na Figura 5, 
temos de obter o valor N1 e N2, para que em seguida seja realizada a operação 
de multiplicação. N1 e N2 podem possuir qualquer valor, mas, dependendo deste, 
o resultado da multiplicação pode mudar. 
Segundo Forbellone (2005), a definição de variável é um dado que pode 
ser alterado em algum instante no decorrer do tempo. Por isso, podemos dizer 
que N1 e N2 são variáveis, pois podem receber qualquer valor no decorrer do 
programa. 
O processo de criação de variáveis é chamado de declaração de variáveis, 
e a seguir serão abordadas as formas de criação de variável usando Scratch e 
Wiring. No Scratch (tinkercad), para criar uma variável, deve-se entrar em código, 
e será mostrado o menu, como na Figura 6: 
Figura 6 – Criar variável no Scratch (Tinkercad) 
 
Neste menu, deve-se clicar em “Criar variável”. Aparecerá uma tela, na qual 
poderá definir o nome da variável: 
Figura 7 – Definindo o nome da variável 
 
 
 
10 
O nome de variáveis, segundo Alves (2014), é chamado de identificador, 
mas não se limita apenas às variáveis, mas diversas outras estruturas do 
algoritmo que podem ser nomeadas: constantes, funções, estrutura de dados, etc. 
Assim que a variável for criada, podem ser usados os blocos de definir valor 
e alterar valor, como mostrado ne Figura 8: 
Figura 8 – Ações que podem ser feitas com variáveis 
 
As variáveis têm usos diversos na programação, desde armazenar valores 
para realizar uma operação até controlar a quantidade de vezes que serão 
realizadas medidas de um sensor. 
Na linguagem Wiring, a declaração de variável não é tão simples. 
Primeiramente deve-se saber qual o tipo de dado que a variável irá armazenar, 
por exemplo: número inteiro, que não tem casas decimais. Ou irá armazenar um 
caractere, que pode ser qualquer caractere representado pela tabela ASCII. 
Estes tipos de variáveis devem ser pensados muito bem antes de seu uso, 
pois cada tipo é mais indicado para certas situações. Veja a seguir todos os tipos 
suportados pelo Arduino (<https://www.arduino.cc/reference/pt/>): 
Tabela 1 – Tipos de dados no Arduino 
Tipo Descrição 
char Caractere da tabela ASCII 
double Números reais com grande precisão 
float Números reais com baixa precisão 
int Número inteiro 
long Número inteiro com maior capacidade 
short Número inteiro de menor capacidade 
String Sequência de caracteres 
vetor Conjunto de variáveis 
void Indica não retorno em funções 
word Número sem sinal de 16 bits 
 
 
 
 
11 
Os tipos mais comuns usados em projetos são: char, int, float e String. 
A declaração de variáveis normalmente ocorre antes da função setup(): 
Figura 9 – Declaração de variável na linguagem Wiring 
 
 Na Figura 9, a variável teste foi declarada na linha 1. O formato para fazer 
esta declaração é: 
<Tipo da variável> <nome da variável> = <valor inicial>; 
Primeiro deve-se escrever qual o tipo da variável, em seguida o nome que 
deve ser atribuído a ela. Em seguida, é opcional o operador de atribuição igual (=) 
e um valor inicial, sendo finalizado com um ponto e vírgula. 
A seguir alguns exemplos de declarações de variáveis: 
int x; 
float numero = 10; 
String nome = “José”; 
char letra; 
Perceba que nos exemplos apresentados alguns receberam valor inicial e 
outros não receberam, isso porque atribuir um valor inicial não é obrigatório. Outro 
fato é que na linguagem C, de onde a linguagem Wiring surgiu, um caractere é 
representado por uma letra entre aspas simples: ‘A’, ‘c’, ‘1’. São respectivamente 
os caracteres A maiúsculo, c minúsculo e o caractere do número um. As palavras 
e frases são atribuídas às variáveis tipo String, e o formato deste tipo de dado é 
entre aspas duplas: “teste”, “ola mundo”. 
 
 
 
12 
TEMA 5 – EXEMPLO 
Para ilustrar o uso de algoritmos com a programação em Scratch e fazendo 
um paralelo com a linguagem Wiring, acompanhe o problema a seguir: 
Figura 10 – Exemplo de aplicação do Arduino 
 
 O problema apresentado na Figura 10, indica que um botão está conectado 
ao pino digital 2 do Arduino. Quando o botão for pressionado o led L, irá acender 
na placa. Caso contrário ficará apagado. 
Antes de continuarmos, vamos entender como o botão funciona, veja que 
no circuito o lado esquerdo do botão está conectado ao pino 2, também conectado 
a um resistor e ao GND (terra). Este circuito indica que o pino 2 do Arduino está 
ligado ao terra, em outras palavras em nível lógico zero ou LOW. Quando o botão 
for pressionado, o pino 2 do Arduino é ligado diretamente a 5V, ou nível lógico alto 
ou HIGH. Agora devemos desenvolver um algoritmo para fazer esta aplicação 
funcionar adequadamente. 
Para resolver este problema vamos apresentar a forma narrativa do 
algoritmo em tópicos, em seguida o fluxograma, para então mostrar a solução 
usando as linguagens Scratch e Wiring. 
a. Forma narrativa: 
1. Definir o pino 2 como entrada. 
2. Definir o pino 13 como saída. 
3. Fazer uma leitura do pino 2 e colocar o resultado em buttonState. 
4. Verificar se buttonState está em HIGH. 
5. Se sim, acender o led no pino 13, deixando-o em HIGH. 
6. Se não, apagar o led no pino 13, deixando-o em LOW. 
7. Esperar 10 ms. 
8. Repetir todos os passos a partir do passo 3. 
 
 
13 
Figura 11 – Fluxograma da resolução do exercício 
 
Perceba que criamos uma variável para receber as leituras digitais do pino 
2, chamada buttonState, leitura que será realizada a cada 10 ms. Dependendo do 
valor da leitura, o led irá acender ou apagar. 
b. Programaem Scratch 
Figura 12 – Resolução em linguagem Scratch 
 
 
 
 
14 
c. Programa em Wiring 
Figura 13 – Resolução em linguagem Wiring 
 
Apresentando todas as quatro formas de resolução, podemos perceber que 
as linguagens de programação são diretas e, em poucas linhas, apresentam 
muitos detalhes. Em breve abordaremos as diversas características das 
linguagens, sempre fazendo um paralelo entre a linguagem Scratch e Wiring. 
 
 
 
15 
REFERÊNCIAS 
ALVES, W. P. Linguagem e lógica de programação. 1. ed. São Paulo: Érica, 
2014. 
ASCENCIO, A. F. G. Fundamentos da programação de computadores. 1. ed. 
São Paulo: Prentice Hall, 2002. 
FORBELLONE, A. L. V. Lógica de programação: a construção de algoritmos e 
estrutura de dados. 3. ed. São Paulo: Prentice Hall, 2005. 
MCROBERTS, M. Arduino básico. 1. ed. São Paulo: Novatec, 2011. 
OLIVEIRA, C. L. V. Arduino descomplicado: aprenda com projetos de eletrônica 
e programação. 1. ed. São Paulo: Érica, 2017.

Continue navegando