Lógica de Programação em Dispositivos Eletrônicos
Lógica de Programação em Dispositivos Eletrônicos
LINGUAGEM DE PROGRAMAÇÃO
Os componentes eletrônicos estão inseridos em máquinas, equipamentos, computadores e
veículos. Em alguns deles, encontram-se os firmwares que são desenvolvidos utilizando-se a
linguagem de programação.
LINGUAGEM DE PROGRAMAÇÃO
A linguagem de programação é a forma em que se desenvolve uma determinada lógica, que
será realizada por um microcontrolador com o intuito de executar determinada ação ou
operação.
Com base nestas informações, você pode comandar todos os dispositivos internos deste
aparelho, para que ele possa executar sua função, que é a de aquecer determinado alimento.
E, quando estas funções foram realizadas, o sistema eletrônico avisa, através de um bip,
informado que o alimento está pronto.
Programação de Dispositivos Eletrônicos
LINGUAGEM DE PROGRAMAÇÃO
Toda operação do micro-ondas precisa ser projetada e programada em um chip, sendo a
linguagem de programação a forma como este programa é feito.
Como toda esta programação do micro-ondas pode ser feita em vários tipos de linguagem, o
que os diferencia são seus comandos e sintaxes1, que podem propiciar uma linguagem de
programação de baixo ou alto nível.
1 é o conjunto de normas que regulam e coordenam as diferentes variáveis e sua associação. Na linguagem, a sintaxe é o conjunto de normas e
leis combinatórias que estruturam a construção de orações e textos.
Programação de Dispositivos Eletrônicos
LINGUAGEM DE PROGRAMAÇÃO
Uma linguagem de baixo nível tem seus comandos se aproximando da linguagem de máquina,
que são códigos hexadecimais ou binários.
Já uma linguagem de alto nível se aproxima mais da linguagem humana, sendo utilizados
comandos em que a compreensão do programa e da lógica fica mais evidente.
Programação de Dispositivos Eletrônicos
LINGUAGEM DE PROGRAMAÇÃO
Assim, de forma resumida vamos:
Para aprimorar nosso conhecimento é recomendado que se estude também livros citados nas
referências bibliográficas.
Programação de Dispositivos Eletrônicos
Características:
Para iniciar os estudos, acompanhe, como exemplo, o trabalho de um lenhador.
Características:
Então, mentalmente o lenhador executa um algoritmo,
que realiza um teste de repetição através de um sensor
para saber se a árvore está em pé.
Características:
Você observou, na figura, que o algoritmo usado pelo
lenhador consiste em um sistema de repetição, isto é,
enquanto a árvore estiver em pé, o lenhador continua a
machadá-la.
A linguagem de programação é a forma como é
descrito um programa.
Características:
Segundo Oliveira e Andrade (2006, p. 71), “O software de um sistema embarcado é semelhante
ao de um computador pessoal, podendo ser escrito em diversas linguagens de programação,
mas a forma de escrever essa lógica é denominada algoritmo”.
Os autores deixam claro que o algoritmo pode ser escrito de diversas formas, isto é, como
sendo as linguagens de programação.
Além disso, acrescentam: “De nada adianta ter um hardware perfeitamente montado, sem ter
um software adequado para controlá-lo.
Características:
Você também pôde observar no fluxograma exemplo do
lenhador que o símbolo de inicialização e de finalização
da lógica têm a forma de uma elipse.
Características:
Características:
Por exemplo, tem-se as variáveis de ponto fixo, que não possuem casas
decimais após a vírgula.
Ponto flutuante:
As variáveis com ponto flutuante são de grande importância na programação de
microcontroladores.
Ponto flutuante:
Já os microcontroladores que não possuem esta máquina de ponto flutuante também podem
fazer cálculos com casas após a vírgula.
Consequentemente, esse processo pode gerar um grande consumo de tempo em uma lógica de
programação, que acaba ficando lenta e ineficaz em alguns casos.
Este processo garante rapidez e Existem dois tipos básicos de variáveis com ponto flutuante,
conforme listados a seguir.
Programação de Dispositivos Eletrônicos
Ponto flutuante:
Veja, a seguir, o trecho de um programa referente à declaração de uma variável com ponto
flutuante.
Programação de Dispositivos Eletrônicos
Ponto flutuante:
Quando a condição inicial não for atribuída a variável ela assume valor zero.
Programação de Dispositivos Eletrônicos
Ponto flutuante:
Um dado de 32 bits expresso em ponto flutuante é dividido em três partes: um bit de sinal, oito
bits de expoente e 23 bits de mantissa1.
Já um dado de 64 bits expresso em ponto flutuante é dividido em um bit de sinal, onze bits de
expoente e 52 bits de mantissa.
Veja, a seguir, como são alocadas as partes de um dado de 32 bits expresso em ponto flutuante,
que é composto por sinal (S), expoente (E) e mantissa (M).
Inteiros:
As variáveis do tipo inteiro não possuem
casa após a vírgula, e como o próprio nome
sugere, operam com números inteiros.
Inteiros:
Observe que, entre as declarações de variáveis, a primeira declaração, unsigned char (caractere
sem sinal) é uma variável de 8 bits sem sinal. A segunda, signed char (caractere com sinal),
mostra uma variável de 8 bits com sinal, chamada de quantidade.
Programação de Dispositivos Eletrônicos
Inteiros:
Já a terceira é uma variável do tipo int (inteiro com sinal). E, a última declaração é de uma
variável long (longa com sinal), chamada de numero, que possui um tamanho de 32 bits.
Programação de Dispositivos Eletrônicos
Inteiros:
É importante ressaltar que é possível que seja feita a declaração de mais variáveis em uma
única linha, adicionando uma vírgula entre a variável declarada e a nova variável a ser
adicionada, mas mantendo o ponto e a vírgula no final da declaração.
Programação de Dispositivos Eletrônicos
Inteiros:
Perceba que, quando a declaração de uma variável não apresentar em sua sintaxe o
signed ou o unsigned, a variável assume que será com sinal signed.
Programação de Dispositivos Eletrônicos
Tipo array:
A tradução de array é ordem, mas, em programação C, o array é utilizado para criar matrizes,
que são amplamente utilizadas quando se deseja trabalhar com tabelas unidimensionais ou
bidimensionais, dentre outras. Para compreender este assunto, leia o quadro a seguir.
Perceba que a matriz unidimensional apresentada é composta por um nome, o índice entre
colchetes (um número de 0 a 2) e o valor atribuído para cada índice (25, 10 e 32, neste caso).
Programação de Dispositivos Eletrônicos
Tipo array:
Para compreender esse princípio de funcionamento, serão apresentados, a seguir, a declaração e
o exemplo de uso desta matriz unidimensional, ou deste vetor.
Programação de Dispositivos Eletrônicos
Tipo array:
Você observou, no exemplo anterior, que a declaração de uma matriz unidimensional é dividida
em várias partes.
A primeira é o tipo de dado que será armazenado na tabela, que, neste caso, é o tipo de variável
de 8 bits e sem sinal (unsigned char).
A terceira é a quantidade de dados a serem armazenados. Este valor fica entre colchetes, que é,
neste caso, 3.
Na quarta parte, são atribuídos os valores desta matriz como sendo uma condição inicial, que
são os valores 25, 10 e 32.
Programação de Dispositivos Eletrônicos
Tipo array:
Na sequência, você verá um exemplo de utilização desta matriz. É importante ressaltar que a
declaração da tabela não precisa ter atribuição dos valores de cada posição, sendo que podem
ser atribuídos os valores durante o desenvolvimento da lógica principal.
Programação de Dispositivos Eletrônicos
Tipo array:
Perceba que à variável Resultado é atribuído um valor da posição 1 da matriz Tabela, que neste
caso é 10. O segundo exemplo apresenta que, para a Tabela, também pode ser atribuído um
valor além do inicializado em sua declaração. Neste exemplo, à posição 2 da Tabela, que está
armazenado o número 32, será atribuído um novo valor, o número 57 .
Programação de Dispositivos Eletrônicos
Tipo array:
Tipo array:
Em Resumo:
Foram apresentados os tipos primitivos de variáveis.
Operadores:
Você sabe quais são os tipos de operadores, para que servem e como são usados? Siga adiante e
aprenda mais este assunto.
Por meio deles, o microcontrolador é capaz de realizar cálculos e fazer lógicas de comparação e
atribuição. Os operadores são expressos por sinais, que serão abordados a partir de agora
Os operadores são expressos por sinais, que serão abordados a partir de agora
Programação de Dispositivos Eletrônicos
Como é lido, o valor em decimal dez (10) é atribuído e salvo na variável “variavel8Bits”.
É importante ressaltar que pode ser atribuído a uma variável o valor de outra variável, por
exemplo, substituindo o número dez, por outra variável, como a apresentada a seguir.
Considerando o exemplo anterior, em que foi atribuído o valor decimal dez para a
“variavel8Bits”, tem-se este mesmo valor na “variavel8Bits_1” também.
Programação de Dispositivos Eletrônicos
Operadores: aritméticos
Os operadores aritméticos são utilizados para diversos cálculos.
Operadores: aritméticos
Nesse exemplo, você conheceu diversas operações aritméticas.
A primeira delas é a soma entre as variáveis A e B, cujo resultado é salvo na
variável Resultado.
A terceira é uma divisão entre A e uma constante de valor 12, cujo resultado é salvo na variável
Resultado.
Operadores: aritméticos
O produto desta operação é salvo na variável Resultado
Operadores: racionais
Os operadores relacionais são importantes para a lógica de programação. É por meio deles que
são feitos os testes condicionais.
A lista completa dos operadores relacionais está apresentada no quadro que segue.
Programação de Dispositivos Eletrônicos
Você viu que o primeiro exemplo mostra uma lógica and entre a
variável A e o valor binário (0b00000011), com o resultado desta
operação salvo na variável Resultado.
Estrutura Condicional:
As máquinas e os equipamentos, principalmente o computador, desempenham funções de
software e hardware.
Para isso, existe a necessidade de o software realizar perguntas e obter as respostas necessárias
para o processo.
Estrutura Condicional:
A tomada de decisão simples é formada por uma pergunta e apenas duas opções de respostas
esperadas: sim ou não.
A estrutura para tomada de decisão simples é o comando if, que significa se, ou seja, se a
condição for atendida, o programa realiza determinada ação.
if (ArvoreDePe)
{
MachadarArvore;
}
Perceba que, se a condição for verdadeira, no caso, se a árvore estiver em pé, a ação será
machadar a árvore e, se for falsa, não fará nada.
É importante ressaltar que o comando if não é uma estrutura de repetição.
Portanto, ao passar apenas uma vez pelo comando if, será realizado o teste, e a ação executada
também apenas uma vez.
Programação de Dispositivos Eletrônicos
A diferença é que a estrutura composta permite uma segunda ação quando houver uma resposta
negativa, por ter o comando else.
Na sequência, se a resposta for sim, terá uma ação; se a resposta for não, terá outra ação.
Programação de Dispositivos Eletrônicos
if (ArvoreDePe)
{
MachadarArvore;
}
else
{
Descansar;
}
Perceba que foi adicionado o comando else, que significa se não. Então, se a árvore estiver em
pé, o lenhador deverá machadar a árvore e, se não, o lenhador deverá descansar.
Programação de Dispositivos Eletrônicos
Esta estrutura pode ser encadeada somente nas respostas afirmativas, somente nas respostas
negativas, ou um misto entre as respostas afirmativas e negativas.
É importante ressaltar que, ao escrever o nome de uma variável corretamente, este nome ficará
dependendo do compilador, com uma cor especial, que, neste caso, é azul fraco.
Programação de Dispositivos Eletrônicos
Estrutura de Repetição
Estrutura de Repetição
Uma estrutura de repetição consiste em manter determinada ação condicionada a um teste.
Este teste pode ser feito antes da ação ou depois dela, depende do comando utilizado.
Você verificou na mensagem de comando anterior que a condição antecede a ação, isto é, ao ser
executada esta estrutura de repetição, primeiramente será feito o teste.
Sequencialmente, será feito o teste novamente e, caso a condição não seja aceita, a ação
também não será realizada.
Programação de Dispositivos Eletrônicos
Na sequência, será feito o teste que, se for verdadeiro, fará novamente a ação. Caso seja falso,
sairá deste laço de repetição.
Programação de Dispositivos Eletrônicos
for (variavel8Bits=0;variavel8Bits<3;variavel8Bits++)
{
MachadarArvore;
}
Programação de Dispositivos Eletrônicos
Na terceira parte do comando for está sendo incrementada a variavel8Bits a cada ciclo do laço
de repetição for.
E, quando a condição não for mais aceita, a lógica de programação sairá deste laço.
Programação de Dispositivos Eletrônicos
Funções:
Quando o programa necessita fazer a mesma ação diversas vezes, podem ser utilizadas as
funções, ou sub-rotinas.
As funções podem realizar as ações necessárias que o programa pode necessitar, por exemplo,
uma operação de soma e retornar o resultado desta operação.
Além disso, uma função é dividida em variável de retorno, nome da função, variáveis de
entrada de dados para a função e processamento da função.
A mensagem, a seguir, mostra uma função de soma com retorno de resultado e dados a serem
somados.
Programação de Dispositivos Eletrônicos
Funções:
Na mensagem anterior, pode ser observado signed int Somar (signed int A, signed int B)
que existe uma declaração no início da {
função (signed int), que é referente à return A+B;
variável de retorno da função. }
A segunda parte mostra o nome da função (Somar) e, entre parênteses, estão descritas e
declaradas as variáveis de entrada da função (A e B).
Dentro das chaves, existe o processamento da função, que, no caso, é a soma entre A e B.
Você pôde perceber ainda que junto à soma existe um comando de return.
Programação de Dispositivos Eletrônicos
Funções:
Este comando é responsável por retornar o signed int Somar (signed int A, signed int B)
resultado da soma quando esta função é {
chamada. return A+B;
}
Funções:
Uma função é um segmento de programa independente, que executa uma tarefa específica
Quando uma função é chamada (evocada) o controle do programa é desviado para a função e
depois volta à instrução seguinte à sua chamada.
Programação de Dispositivos Eletrônicos
Funções:
Uma função recebe parâmetros/argumentos e retorna valores de um tipo determinado.
Sintaxe:
<tipo_retorno><nome_função>(declaração_parâmetros)
{
corpo_da_funçãoe seus comandos;
returnvalor_de_retorno;
}
Exemplo:
float Calcula_volume (float x, float y, float z)
{
floatvolume;
volume=x* y * z;
return volume;
}
Programação de Dispositivos Eletrônicos
Funções de usuário:
As funções ou sub-rotinas personalizadas são chamadas de funções de usuário.
No exemplo, ao lado, é apresentado uma função que serve para Void LigarLed (void)
ligar um LED que está conectado à porta A4 do microcontrolador. {
LATAbits.LA4=1;
}
Programação de Dispositivos Eletrônicos
Vetores:
Os vetores de interrupção são destinados a direcionar o software para determinada função, de
acordo com o evento de interrupção.
Por exemplo, o software pode ser direcionado para o vetor de reset (reinício) do programa do
microcontrolador.
O programa pode ser direcionado para o vetor de reinício, caso tenha sido apertado o botão de
reset, ou caso seja realizado um comando de reset via software, por exemplo.
Vetores:
Para você ampliar seus conhecimentos sobre as funções utilizadas por um software de
programação de microcontroladores, consulte o manual de programação do fabricante
do compilador XC8 no seguinte endereço: [Link]
Programação de Dispositivos Eletrônicos
Vetores:
De acordo com a necessidade do programa, podem ser desenvolvidas as funções que auxiliam
na solução do problema como um todo.
As funções armazenam uma estrutura de códigos que funciona como uma inteligência para
tratar dos problemas relacionados à aplicação à qual estão submetidas.
Ponteiro:
A utilização de ponteiros em linguagem C é uma das características que tornam a linguagem tão
flexível e poderosa.
É um tipo de variável que armazena o endereço de memória de uma outra variável. Ele são
muito usados dentro da linguagem C.
Dizemos que um ponteiro “aponta” para uma variável quando contém o endereço da mesma.
Os ponteiros podem apontar para qualquer tipo de variável. Portanto temos ponteiros para int,
float, double, etc.
Programação de Dispositivos Eletrônicos
Ponteiro:
Ponteiros são muito úteis quando uma variável tem que ser acessada em diferentes partes de um
programa.
Neste caso, o código pode ter vários ponteiros espalhados por diversas partes do programa,
“apontando” para a variável que contém o dado desejado.
Caso este dado seja alterado, não há problema algum, pois todas as partes do programa tem um
ponteiro que aponta para o endereço onde reside o dado atualizado.
Existem várias situações onde ponteiros são úteis, por exemplo:
Ponteiro:
tipo *nome_ponteiro
Onde temos:
int *ptr;
Programação de Dispositivos Eletrônicos
Recapitulando:
Até o momento, vimos que a linguagem de programação é fundamental na solução de
problemas computacionais e que podem ser inseridas em componentes inteligentes, como é o
caso dos microcontroladores.
Por isto, foram apresentados os conceitos básicos de programação de uma linguagem de alto
nível, em que tomadas de decisão e estruturas de repetição se fazem necessárias para a
realização de lógicas digitais.
É importante ressaltar que a programação de diversas lógicas utiliza também as variáveis, que
possuem características adequadas para cada tipo de dado a ser processado.
E, dentro destes processamentos, as ações de uma determinada máquina ou equipamento
podem ser organizadas em funções, ou sub-rotinas. Com isso, é possível se obter a cadeia de
funções necessárias para todo o funcionamento do sistema eletrônico.
Programação de Dispositivos Eletrônicos
Recapitulando:
Diante destes conhecimentos, cita-se inúmeros equipamentos que utilizam os
microcontroladores para realizar determinadas funções, como o micro-ondas, a máquina de
lavar roupa, o televisor, o automóvel e outros dispositivos, máquinas e meios de transporte que
necessitam de processamento da eletrônica de controle ou processamento da eletrônica de
potência para realizar sua aplicação.
É importante ressaltar que as diversas funções de uma máquina estabelecem seu funcionamento
e a capacidade em executar os processos de forma rápida e eficaz, consumindo menor matéria-
prima e energia elétrica, além de preservar os recursos aturais.
Obrigado!