• Nenhum resultado encontrado

CAPÍTULO 4: MATERIAIS E MÉTODOS: INTRUÇÃO E UTILIZAÇÃO DO

4.3 Lógica de programação

Como já citado, não será necessário saber linguagens de programação para programar ou controlar o arduino, apenas utilizar a lógica para programar.

Segundo Friedrich et al. (2012), para inserção de atividades programáveis é necessário colocar as atividade em uma sequência lógica. Essa lógica é a arte de como pensar corretamente, derivar um problema em uma sequência de atividades que resultem na resolução desse problema concluindo seu objetivo.

Para descrever essa sequência de atividades podemos descrevê-las de diferentes maneiras, uma delas se chama Pseudocódigo,uma forma utilizada para descrever a sequência de atividades na forma de texto. Outra forma é chamada de Fluxograma, sendo um diagrama que utiliza formas geométrica para representar o processo das atividades (XAVIER, 2018, p. 26).

Vamos exemplificar estas duas propostas com a resolução de um problema, descrevendo as atividades que devem ser feitas para: receber dois valores, verificar qual valor é maior, exibir esse valor, e se caso os dois valores forem iguais, exibir uma mensagem dizendo que os dois números são iguais.

Antes de continuarmos com a resolução do problema precisamos inserir uma nota sobre o que são e como utilizar variáveis.

Variáveis são elementos para armazenar valores numéricos, palavras ou caracteres (DUARTE, 2019).

Na programação uma variável serve para guardar estes diferentes tipos de valores para poderem ser utilizados durante a programação.

Uma variável pode ser inserida com um valor pré-definido como no Exemplo 1 onde N1 é o nome da variável e o valor na frente do símbolo de igual representa o valor que será armazenado na variável. Nesse caso N1 é uma variável que inicia valendo um valor igual a 20.

Exemplo 1: N1=20

Durante a programação de um programa a variável pode ser ajustada conforme a necessidade, como no Exemplo 2 uma variável nomeada de N1 inicia com um valor igual a 0, e durante o desenvolvimento do programa a variável será utilizada para somar com um valor (no caso o número 4), ajustando para um novo valor.

Exemplo 2: N1=0 N1=N1+4 N1=4

Agora podemos continuar na resolução do problema, deixando claro que será necessário que sejam digitados dois valores, sendo que cada valor será armazenado em uma variável. Em seguida os dois valores passarão por tomadas de decisões onde será verificado qual valor é maior, ou se são números iguais. Por fim, será exibida a resposta de qual número é maior ou se os dois números são iguais.

 Pseudocódigo

Para utilizar esta forma basta escrever de forma textual cada ação do problema em uma linha, indicando o início e o fim do programa com as palavras: Início e Fim.

INÍCIO

<Digite o primeiro valor>

<Armazenar o primeiro valor em N1> <Digite o segundo valor>

<Armazenar o segundo valor em N2>

<Se N1 for maior que N2, exibir valor de N1> <Se N2 for maior que N1, exibir valor de N2>

<Se N1 for igual a N2, exibir mensagem: “Os dois números são iguais”> FIM

Antes de iniciar o exemplo será necessário apresentar o funcionamento das principais formas geométricas (Tabela 4) para o desenvolvimento de um problema utilizando o Fluxograma.

Tabela 4: Descrição das formas geométricas de um fluxograma.

Símbolo Definição

Início e Fim de um problema.

Verificador para dizer se um fato é verdadeiro ou não, resultando em diferentes ações.

Executar alguma atividade.

Aguarda o usuário digitar um valor.

Sentido em que as atividades serão direcionadas durante todo o fluxograma.

Fonte: Autoria própria

Na Figura 17 pode ser visualizado o fluxograma do exemplo:

Figura 17: Exemplo fluxograma.

Seguindo alguma dessas duas formas o aluno consegue pensar no problema e como irá resolve-lo, aplicando a lógica de programação desenvolvida no aplicativo.

4.4 Aplicativo LANTEC

O aplicativo desenvolvido intitulado como LANTEC possibilita executar comandos programáveis utilizando apenas a lógica de programação, controlar o arduino e estimular atividades relacionadas a disciplina de física. A Figura 18 exibe a página inicial do aplicativo, com os ícones: Conectar, Variáveis, Componentes, Programar e Aprender. Serão descritas suas funções e instruções de uso abaixo:

Figura 18: Tela inicial do aplicativo.

Fonte: App LANTEC.

 Conectar

O botão Conectar serve para conectar o aplicativo com o arduino nano (lembrando que o módulo bluetooth deve estar conectado ao arduino (circuito Figura 13, capítulo 4.2.1). Ao clicar em Conectar será exibida uma lista (Figura 19) de aparelhos que já foram pareados9 com o bluetooth do celular (para parear o celular com o bluetooth pela primeira vez, o usuário

9 Todos aparelhos como fone de ouvido, som automotivo, etc., que utilizam a tecnologia bluetooth que já

deve ativar o bluetooth de seu celular e pesquisar os dispositivos com tecnologia bluetooth, onde será exibido o módulo HC-05, ao clicar em conectar será necessário inserir a senha: “1234”, sendo que esteprocedimento será necessário efetuar apenas uma vez), o usuário deve selecionar o item com nome HC-05 para efetuar a conexão. Por fim, será exibida uma mensagem na tela informando que o celular está conectado (caso ocorra algum problema na conexão, será exibida uma mensagem com erro na conexão, pedindo para o usuário tentar conectar-se novamente).

Figura 19: Lista para conexão bluetooth com arduino.

Fonte: App LANTEC.

 Variáveis

Inclusão de variáveis (Figura 20) para serem utilizadas no desenvolvimento da programação.Figura 20: Inserção de variáveis.

Fonte: App LANTEC.

Tabela 5: Inclusão de variáveis

1º Insira o Nome e o Valor da variável. 2º Clique em Adicionar.

3º As variáveis inseridas serão apresentadas com o nome, e quando selecionadas exibem seu valor.

4º Para excluir ou alterar o valor de uma variável basta selecionar a variável desejada e clicar em “Excluir” ou “Alterar”.

Fonte: Autoria própria.

 Componentes

Em componentes podem ser inseridos os módulos de tensão e os sensores ultrassônicos (Figura 21) para serem utilizados durante a programação ou para atividades relacionadas a disciplina de física (lembrando que os componentes devem ter seus circuitos montados conforme Figura 14 e Figura 15, capítulo 4.2.1).

Figura 21: Inserção do sensor ultrassônico e módulo de tensão.

Fonte: Autoria própria

Para inserir o sensor ultrassônico e o módulo de tensão, seguir as instruções da Tabela 6.

Tabela 6: Inclusão de componentes.

1º Selecionar a porta em que o sensor será adicionado clicando em “Opções”. 2º Clicar em “Adicionar”. 3º Os componentes inseridos serão apresentadas com seu nome e número de porta. 4º Para excluir um componente basta selecioná- lo e clicar em “Excluir”.

Fonte: Autoria própria

É importante ressaltar que neste projeto não foram adicionados outros tipos de sensores, mas em futuras atualizações no aplicativo outros sensorespoderão ser adicionados.

 Programar

Dentro do item Programar (Figura 22), o usuário terá acesso a recursos para efetuar diferentes tipos de programações.

Na Figura 22 são destacados três setores da página: item 1 estão os componentes para desenvolver a programação, item 2 é a tela onde exibe e recebe os dados para o usuário, desenvolvidos na programação criada, item 3 são apresentados os códigos na forma de pseudocódigo a partir dos comandos inseridos do item 1. Resumidamente o usuário irá desenvolver sua programação podendo ser visualizada na forma de pseudocódigo, e interagir com os resultados na tela Serial onde o programa desenvolvido pelo usuário será rodado em loop10.

Figura 22: Tela de programação.

Fonte: App LANTEC.

Abaixo, explicamos como utilizar os Itens 1, 2 e 3:

Item 1: Existem cinco componentes (visivelmente na Figura 22 apenas três, para visualização dos demais basta deslizar o dedo para esquerda sobre a tela dos componentes) para o desenvolvimento da programação:

Componente Obter/Enviar dados: Figura 23, utilizada para enviar ou receber valores de uma função para outra. Como exemplo: para exibir valores de variáveis, textos digitados, receber dados da tela serial, alterar valores de variáveis, entre outras funções em destaque na Tabela 7.

Figura 23: Componente Obter/Enviar dados.

Para utilizar esta função, basta clicar em “De” e selecionar algum dos itens (Figura 24) para ser enviado e então clicar em “Para” e selecionar o item (Figura 24) para onde irão os dados.

Figura 24: Lista DE e PARA.

Fonte: App LANTEC.

Tabela 7: Descrição dos elementos Lista DE e PARA.

DE PARA

Itens Descrição Itens Descrição Digitar Valor Digite um valor para

ser enviado para PARA.

Digitar Porta Porta do arduino em que irá receber dados do item DE. Digitar Porta Digite o valor de uma

porta do arduino para receber os dados digitais enviados dessa porta para PARA. V1 (Variáveis adicionadas no menu Variáveis serão exibidas nesta lista) A variável selecionada terá seu valor alterado para o valor enviado de DE.

V1 (Variáveis adicionadas no menu Variáveis serão exibidas nesta lista)

Seleciona uma variável para enviar seu valor para PARA.

Imprimir na tela

Será impresso na tela o valor enviado de DE.

Ultrassônico Porta: 5 (Sensores

Seleciona um sensor ultrassônico para

Ultrassônicos

adicionados no menu Componentes serão exibidos nesta lista)

enviar seus dados de leitura para PARA.

Módulo de tensão Porta: A0 (Módulos de tensão adicionados no menu Componentes serão exibidos nesta lista)

Seleciona um módulo de tensão para enviar seus dados de leitura para PARA.

Receber da Serial Opção para receber dados da Serial (Item 2)

Fonte: Autoria própria.

Componente Ativar/Desativar Porta: Figura 25, este componente é utilizado para ativar ou desativar portas digitas do arduino (Exemplo: Acender leds, ativar motores e outros componentes).

Figura 25: Componente Ativar/Desativar Porta.

Fonte: App LANTEC.

Clicando em “Ativa/Desativa” o usuário define se quer ativar ou desativar a porta e clicando em “Porta” para definir o número da porta que será ativada ou desativada.

Componente Temporizador: Figura 26, usado para inserir um tempo entre uma ação e outra da programação (Exemplo: fazer com que um Led acenda e apague a cada 1 segundo).

Figura 26: Componente Temporizador.

Fonte: App LANTEC.

Para adicionar o temporizador deve-se inserir valores em milissegundos (1 segundo = 1000 milessegundos) na caixa de texto.

Componente Operações Aritméticas: Figura 27, possibilita efetuar operações numéricas (soma, subtração, multiplicação e divisão) entre dois valores.

Figura 27: Componente Operações Aritméticas.

Fonte: App LANTEC.

Os cálculos devem ser salvos dentro de uma variável clicando em “Guardar em” e selecionar uma variável da lista (lembrando que as variáveis são adicionadas no tópico “Variáveis”). Para inserir os dois números basta clicar em “Valor1” para o primeiro número e “Valor2” para o segundo número e selecionar dentro da lista se deseja inserir um número ou utilizar um número de alguma variável adicionada anteriormente. Para definir o operador, deve- se clicar em “Operador” e selecionar o tipo de operação desejada (+, -, x, /).

Componente Se: Figura 28, recurso para efetuar tomadas de decisões: se um valor comparado a outro com algum dos elementos de comparação: igual (=), diferente (≠), maior (>), menor (<), maior ou igual (≥) e menor ou igual(≤). Se o resultado for verdadeiro, será executada ações, se falso, então, não será executada nenhuma ação e passarápara próxima linha de código.

Figura 28: Componente SE.

Fonte: App LANTEC.

Para executar a tomada de decisões, primeiro deve-se inserir o primeiro valor a ser comparado, clicando em “Se valor” e será exibida uma lista de itens, selecionar o item desejado. Definir o parâmetro para tomada de decisões clicando em “For” e selecionar um dos elementos de comparação (=, ≠, >, <, ≥, ≤). Inserir o segundo valor clicando em “a valor” para ser exibida a lista para o segundo elemento (a lista de elementos do primeiro e segundo valor será a mesma da Figura 24, mas dessa vez apenas será obtido o valor do item). Para incluir ações, clicar em “Fazer +”, será exibida a lista com opções de ações (para todas as componentes apresentadas: Obter/Enviar dados, Ativar/Desativar Porta, Temporizador e Operações Aritméticas).

Observação para todas as componentes apresentadas acima: Cada componente definida acima (Obter/Enviar dados, Ativar/Desativar Porta, Temporizador e Operações Aritméticas e SE) deve-se clicar no botão “Salvar”, para ser exibido o comando na forma pseudocódigo no item 3 Figura 20.

Para excluir alguma das linhas já salvas deve-se clicar em “Salvos” (da componente a ser excluída) para ser exibida a lista de procedimentos que o usuário fez utilizando este componente, então selecionar o item e clicar no botão “Excluir”.

Item 2: Após inserir todos os componentes de programação, deve-se clicar no botão “Começar Loop” para iniciar a leitura da programação feita pelo usuário. Nesta janela serão impressos os valores solicitados para imprimir na tela como textos e números e receber dados digitados pelo usuário.(Para interação com estes dois recursos deve-se utilizar a componente “Obter/Enviar dados” com os itens “Imprimir na tela” para exibir os dados e “Receber da Serial” para aguardar o usuário digitar algum dado e clicar no botão “Enviar”).

Nota que o botão “Exibir todos dados recebidos”, existe pelo fato de que na tela de impressão são exibidos 4 resultados por vez, clicando neste botão serão exibidos todos os resultados obtidos durante o Loop.

Item 3: Cada componente salvo será exibido na forma pseudocódigo nesta janela, possibilitando o usuário visualizar sua linha de raciocínio para criação de seu programa.

Exemplo A: Com o objetivo de demonstrar os principais recursos dos componentes apresentados, neste exemplo vamos sugerir um problema para ser resolvido utilizando a lógica de programação.

Problema: Receber dados de idade e nome de duas pessoas, definir uma cor de LED para cada uma das pessoas, verificar qual das duas é mais velha ou se tem a mesma idade, sendo que a que for mais velha será exibido o nome e acender o LED definido para esta pessoa. No entanto, caso tenham a mesma idade não será exibida nenhuma mensagem, mas irá acender os dois LEDs.

Para dar início vamos primeiro desenvolver a lógica para realização deste problema utilizando a forma de pseudocódigo incluindo a numeração da linhas:

INÍCIO

1-<Exibir mensagem: “Digite o primeiro nome”> 2-<Armazenar o primeiro nome em N1>

3-<Exibir mensagem: “Digite a idade”> 4-<Armazenar idade em ID1>

5-<Exibir mensagem: “Digite o segundo nome”> 6-<Armazenar o segundo nome em N2>

7-<Exibir mensagem: “Digite a idade”> 8-<Armazenar idade em ID2>

9-<Se ID1 for maior que ID2, exibir mensagem: “N1” e acender LED1> 10-<Se ID2 for maior que ID1, exibir mensagem: “N2” e acender LED2> 11-<Se ID1 for igual a ID2, acender LED1 e LED2>

FIM

Antes de iniciar a programação no aplicativo vamos primeiro montar o circuito na protoboard (Tabela 8) conectando o módulo bluetooth (circuito também pode ser visualizado na Figura 13, capítulo 4.2.1) e para os dois LEDs (LED 1- vermelho e LED 2- verde) que serão conectados no arduino (circuito pode ser visualizado na Figura 16, capítulo 4.2.1, com a adição de mais um resistor e um LED, conectados nas portas digitais 4 e 5 do arduino). Por fim, conectar o arduino na fonte de alimentação.

Tabela 8: Circuito 2 Leds.

Circuito módulo Bluetooth.

Resistor em série com os LEDs. Conectar nas portas digitais 4 e 5 (LED vermelho 4, LED verde 5). Conexão com a fonte de alimentação.

Fonte: Autoria própria.

Com o circuito montado e ligado na tomada, vamos para o aplicativo conectá-lo com o arduino. Seguindo as instruções da Tabela 9 para conectar.

Tabela 9:Conexão com o arduino.

1º Clicar em Conectar.

2º Selecionar na lista a opção com o nome HC-05.

Quando o Bluetooth for conectado será exibida a mensagem: “Bluetooth conectado”.

Fonte: Autoria própria.

Agora com o aplicativo conectado com o arduino vamos adicionar as variáveis que serão utilizadas. Serão quatro variáveis: duas para armazenar os nomes (N1, N2) e duas para as idades (ID1 e ID2). Clicando em “Variáveis” no menu e seguindo as instruções da Tabela 10.

Tabela 10: Adicionar as variáveis solicitadas

1º Inserir o nome da variável.

2º O valor da variável (pode ser inserido qualquer valor, pois o valor da variável será ajustado durante a programação). 3º Clicar no botão “Adicionar”.

Repetir os 3 passos para as quatro variáveis.

Após inserir as variáveis podemos iniciar a inserção dos comandos programáveis no aplicativo dentro da componente “Programar”. Vamos seguir todos os passos (número de linhas) apresentados na lógica feita, descrita no formato de pseudocódigo, iniciando com solicitação de pedir ao usuário digitar o primeiro nome (linha 1). Para isso precisamos utilizar a componente “Obter/Enviar dados”, seguindo as instruções da Tabela 11.

Tabela 11: Inserção de dados para exibir na tela.

1º Com a componente aberta clicar no botão “De(a)”.

2º Selecionar o item da lista “Digitar Valor”.

3º Digitar a mensagem na caixa de texto “Digite o primeiro nome” e em seguida clicar no botão “para”.

4º Selecionar o item “Imprimir na tela”.

5º Clicar no botão “Salvar” e observe a primeira linha de programação salva em “Linhas de programação” com a mensagem “Obter Valor da(e) Digite o primeiro nome Para imprimir na tela”

Agora precisamos receber o primeiro nome (linha 2) que o usuário irá digitar e salva-lo na variável N1. Para isso vamos abrir novamente a componente “Obter/Enviar dados”, repetir os passos da Tabela 11 alterando o 2º passo, selecionando a opção “Receber da Serial” e o 4º passo selecionando a opção “N1” (Variável para receber o primeiro nome). Após executar os 5 passos será adicionada mais uma linha de programação (Figura 29).

Figura 29: Linhas de programação 1.

Fonte: App LANTEC.

Nas linhas de 3 até 8 iremos efetuar os mesmos passos da linha 1 e 2, alterando somente as mensagens para solicitar os dados do usuário (alterando a mensagens como por exemplo: “Digite o segundo nome”) e inserindo as variáveis corretas para cada dado recebido (Ex: nome 1 = variável N1, nome 2 = variável N2). Observe a Figura 30 com os 8 comandos inseridas.

Figura 30: Linha de programação 2.

Fonte: App LANTEC.

A linha 9 inicia a primeira tomada de decisão para verificar se a primeira pessoa é mais velhas que a segunda (ID1>ID2?), para isso precisamos selecionar a componente “Se” e seguir as instruções da Tabela 12.

Tabela 12: Comandos para tomada de decisão.

1º Com a componente aberta clicar em “Se valor”

2º Selecionar o item “ID1” (variável que armazena o valor da idade do primeiro nome).

3º Clicar no botão “for” e selecionar o item de “>”.

4º Clicar no botão “a valor” e selecionar o item “ID2”.

5º Clicar no botão “Fazer +” selecionar o item “Obter Enviar valor”

6º Será aberta a componente Obter Enviar dados, em “de(a)” selecionar a variável “N1” (variável que armazena o primeiro nome) e em “para” selecionar para “imprimir na tela”. Clicar em “Salvar”.

7º Repetir o 5º passo, mas dessa vez

selecionando a opção

“Ativar/Desativar porta” e

configurar a componente clicando em “Ativa/Desativa” selecionar a opção “Ativar” e em “Porta” selecionar a porta “4” (LED 1-

vermelho). Clicar no botão “Salvar”.

8º Por fim,clicar no botão “Finaliza e Salva Se” e observar a inclusão da linha em Linhas de programação.

Fonte: Autoria própria.

Na linha 10 e 11 deve-se repetir os mesmos passos da linha 9 alterando apenas as variáveis de cada comando conforme descrito nas linhas de pseudocódigo. As linhas de programação ficaram conforme Figura 31.

Figura 31: Linha de programação 3.

Fonte: App LANTEC.

Por fim, com todos os comandos inseridos é possível iniciar o Loop e verificar o funcionamento do programa desenvolvido com os resultados na Tabela 13.

Tabela 13: Loop em execução.

Para iniciar o Loop deve-se clicar no botão “Começar Loop”.

Com o Loop iniciado, os códigos irão começar a ser lidos, exibindo a primeira mensagem pedindo ao usuário para digitar o nome. Para digitar deve-se clicar na caixa de texto e clicar no botão “Enviar”. O primeiro nome será armazenado na variável N1.

Até a linha 8 serão exibidas as mensagens e recebidos os dados para as variáveis.

Após inserir todos os dados será iniciada a tomada de decisão para verificar qual resposta será dada para o usuário. No exemplo como Jair tem 50 e Luca 30 (ID1>ID2), teremos o resultado do nome de Jair e, portanto, irá acender o Primeiro LED (nota-se que pelo fato do programa estar em loop ele irá pedir novamente um primeiro nome e refazer todos os passos novamente. Para parar o Loop basta clicar no botão “Parar Loop”).

Poderão ser recebidos três diferentes resultados.

(Durante a programação, para consultar todos os resultados que foram inseridos, basta clicar no botão “Exibir todos dados recebidos”).

Resultado 1:Se ID1>ID2: Exibir o nome N1 e acender o LED 1 –Vermelho

Resultado 2: Se ID2>ID1: Exibir nome N2 e acender o

Documentos relacionados