Buscar

APOSTILA_PROGRAMACAO_SISTEMAS_EMBARCADOS_02

Prévia do material em texto

P á g i n a | 17 
 
 
Faculdade de Negócios – FAENE 
Telefones: São Luís (98)2109 – 8000 / Imperatriz (98) 3524 – 6927 
www.faene.com.br / academico@faene.com.br 
Processo de compilação da linguagem C 
O processo de compilação pode ser entendido como a tradução de um texto. Em um 
compilador de linguagem C, a linguagem original é C e a linguagem final é geralmente 
um código binário entendido pelo processador. 
O arquivo de entrada contém o programa escrito pelo programador, que é o código 
fonte. O arquivo de saída, ou código de máquina indica ao processador como executar 
os comandos que foram definidos no arquivo texto. O arquivo binário gerado depende 
da arquitetura do processador utilizado. O mesmo código em C irá gerar arquivos 
diferentes para processadores diferentes 
Etapas do processo de compilação da linguagem C 
O processo de compilação é realizado em quatro etapas, que em geral, são sequenciais: 
pré-compilação,compilação, assemblagem e linkagem conforme mostrado na figura 
abaixo: 
 
 
 
 
 
 
 
 
 
 
 
Figura 17 
Pré-compilação: É responsável por ler o código fonte e realizar substituições no código 
fonte e realizar substituições no código ou operações de configuração do compilador. 
Esta etapa processa comandos incluídos no código especificamente para esta função, 
como #define, #include, entre outros. 
Compilação: Nesta etapa é feita a tradução efetiva do código C para assembly. 
Assembly é uma linguagem de baixo nível que representa de modo simbólico os 
comandos da linguagem de máquina. No fim da compilação para cada arquivo .C é 
gerado um arquivo intermediário em assembly. 
Assembler: Traduz o código assembly para o código de máquina. Ele converte os 
mnemônicos em seus opcodes( código de operação), calcula os endereços de 
Código Fonte 
com as 
macro 
processadas 
Pré- 
processador 
Código Fonte 
Código 
compilado 
em assembly 
Código 
Objeto 
Código de 
máquina 
Compilador Assembler Linker 
Bibliotecas pré 
compiladas 
 P á g i n a | 18 
 
 
Faculdade de Negócios – FAENE 
Telefones: São Luís (98)2109 – 8000 / Imperatriz (98) 3524 – 6927 
www.faene.com.br / academico@faene.com.br 
referências de memória e faz algumas outras operações para gerar o código de máquina 
a ser executado pelo processador. 
 
Figura 18 
 
No exemplo acima os códigos 74h e 24h representam, respectivamente as instruções 
MOV A #n (copiar para o registro A o valor de n) e ADD A,#n (adicionar o registro A o 
valor n, ficando o resultado em A. Os códigos 40h e 0Ah representam os operandos das 
instruções. 
Linker: Um programa em C traz referências a funções que se encontram na biblioteca 
padrão, ou em muitos casos faz referências a bibliotecas privadas definidas pelos 
programadores. As bibliotecas ou cabeçalhos tem extensão .h. O linker por objetivo 
juntar esse arquivo em um local e gerar um único arquivo executável. Caso ocorra algum 
erro de linkedição, deve-se retornar ao código fonte para identificar e corrigir o erro. 
Novamente o arquivo deve ser compilado e linkado. 
Programação Arduino – primeiros passos 
O processo para programar um microcontrolador na plataforma Arduino é relativamente 
simples. A seguir será descrito como escrever, compilar e executar um programa 
utilizando a IDE do Arduino, entendendo como se constrói uma estrutura básica padrão 
para trabalhar no desenvolvimento de programas na IDE do Arduino. 
Estrutura básica e sintaxe 
void setup() 
Esta função é executada uma vez e é utilizada para a inicialização das variáveis, 
definição dos pinos, ou seja de quem será entrada ou saída (INPUT/OUTPUT), 
comunicação serial entre outros.Esta função só volta a ser executada caso seja dado 
um reset na placa ou se a mesma for desligada e ligada novamente. 
void loop() 
Esta função faz um loop sucessivo, ou seja, todos os comandos existentes no interior 
dessa função são repetidos sucessivamente. Isso permite que sejam lidos parâmetros 
provenientes de sensores e atuar de acordo com as condições estabelecidas no 
programa. 
 
 P á g i n a | 19 
 
 
Faculdade de Negócios – FAENE 
Telefones: São Luís (98)2109 – 8000 / Imperatriz (98) 3524 – 6927 
www.faene.com.br / academico@faene.com.br 
; (ponto e virgula) 
Marca o final de uma linha de comando. 
{ } (Chaves) 
São delimitadores do início e fim dos blocos de comando. 
// ou /* */ 
São utilizados para marcar comentários. 
Funções digitais 
Input/Output digital 
pinMode() 
Através desta instrução, é possivel configurar o modo de comportamento de um 
determinado pino do Arduino. Deste modo podemos definir esse pino como uma entrada 
ou saída de acordo com a necessidade do projeto 
Sintaxe: 
pinMode(pino,modo), onde pino corresponde ao número do pino ao qual queremos 
atribuir o modo, que pode ser definido por: 
• INPUT 
• OUTPUT 
 
digitalWrite () 
Possibilita nos pinos configurados como OUTPUT através da instrução “pinMode”, 
estabelecer a saída dos respectivos pinos com o valor lógico 1 (HIGH) ou com o valor 
lógico 0 (LOW). O valor lógico HIGH irá corresponder a tensão de 5 VDC e o valor 
lógico LOW à 0 VDC. 
Sintaxe: 
digitalWrite(pino,nível), onde pino corresponde ao número do pino ao qual queremos 
atribuir o nível que pode ser definido por: 
• HIGH 
• LOW 
 
digitalRead () 
Possibilita a leitura de uma entrada digital especifica, retornando um valor no formato 
integer ou inteiro (int). Se o valor de retorno for “1” a leitura será do tipo HIGH. Se caso 
o valor de retorno for “0” a leitura será do tipo LOW. 
 
 P á g i n a | 20 
 
 
Faculdade de Negócios – FAENE 
Telefones: São Luís (98)2109 – 8000 / Imperatriz (98) 3524 – 6927 
www.faene.com.br / academico@faene.com.br 
Sintaxe: 
variável do tipo inteiro = digitalRead(pino), onde o pino corresponde a número do pino 
que será lido, lembrando que neste campo pode estar o nome de uma variável 
associada a este pino 
 
Funções de temporização 
Existem várias funções de temporização no Arduíno. Sua finalidade é gerar um atraso 
que pode ser programável a uma rotina em execução ou então manter por um tempo 
um determinado valor. Dentre as várias funções existentes podemos destacar: 
delay(milissegundos) 
Possibilita um atraso na execução de um programa de acordo com um tempo 
programado pelo usuário na base de tempo em milissegundos 
Sintaxe: 
delay(tempo desejado para pausa em milissegundos). 
 
delayMicrosseconds(microssegundos) 
Possibilita um atraso na execução de um programa de acordo com um tempo 
programado pelo usuário na base de tempo em milissegundos 
Sintaxe: 
Delay(tempo desejado para pausa em microssegundos). 
Análise do programa para piscar um led. 
Inicialmente será feita a análise de um programa que fará acender e apagar um led de 
sinalização existente que esta diretamente conectado ao pino 13 da placa do Arduíno, 
visando aplicar os conceitos para implementação de uma estrutura básica de um 
programa, visto nos tópicos anteriores. 
Utilização da IDE do Arduino 
Uma vez implementado o software é hora de utilizar a IDE do Arduino para digitar, 
compilar, enviar e testar o programa que foi proposto. Para isto devemos seguir os 
seguintes passos: 
1 – localizar o ícone da IDE do Arduino na área de trabalho 
 
Figura 19 
 P á g i n a | 21 
 
 
Faculdade de Negócios – FAENE 
Telefones: São Luís (98)2109 – 8000 / Imperatriz (98) 3524 – 6927 
www.faene.com.br / academico@faene.com.br 
2 – Ao executar a IDE do Arduino, deverá aparecer uma tela similar a mostrada abaixo 
 
Figura 20 
Observar que para esta versãoo sketch já aparece com uma estrutura inicial pronta, 
onde a partir desta é possível começar um novo programa. 
3 – Na opção Arquivo>Salvar como é possível salvar projeto com o nome desejado e 
no local escolhido 
 
Figura 21 
4 – A partir daí podemos digitar e/ou copiar o programa que iremos trabalhar 
 
Figura 22 
 P á g i n a | 22 
 
 
Faculdade de Negócios – FAENE 
Telefones: São Luís (98)2109 – 8000 / Imperatriz (98) 3524 – 6927 
www.faene.com.br / academico@faene.com.br 
5 – A próxima etapa consiste em configurar no software o modelo de placa de acordo 
com o existente no físico. A porta de comunicação disponibilizada pelo computador deve 
ser assinalada. Se a porta não estiver configurada corretamente a imagem com o nome 
“Porta” aparecerá esmaecida. 
 
Figura 23 
 
6 – A próxima etapa será a de compilar o programa, buscando erros de sintaxe. 
 
Figura 24 
 
 
 P á g i n a | 23 
 
 
Faculdade de Negócios – FAENE 
Telefones: São Luís (98)2109 – 8000 / Imperatriz (98) 3524 – 6927 
www.faene.com.br / academico@faene.com.br 
Caso não haja nenhum erro de sintaxe, a compilação será terminada com a mensagem 
a seguir: 
 
Figura 25 
Caso haja um erro a mensagem será a mostrada abaixo, indicando o erro existente. 
Será necessário analisar o programa, descobrir o possível erro e refazer os passos 
anteriores 
 
Figura 26 
A etapa seguinte consiste em fazer o upload do programa escrito para a placa com a 
finalidade de que seja testado. Para isso devemos pressionar o botão carregar conforme 
mostrado abaixo. Uma observação que se faz necessária é que ao fazer upload do 
programa para a placa é feita automaticamente uma compilação, independente se já 
tenha sido feita ou não 
 P á g i n a | 24 
 
 
Faculdade de Negócios – FAENE 
Telefones: São Luís (98)2109 – 8000 / Imperatriz (98) 3524 – 6927 
www.faene.com.br / academico@faene.com.br 
 
Figura 27 
 
Atividade 1 
Baseado nos conhecimentos anteriormente discutidos tente implementar um programa 
em C que faça o led conectado ao pino 13 do Arduino piscar initerruptamente com um 
intervalo de 5 segundos aceso e 5 segundos apagado. Utilize comentários para explicar 
de forma sucinta as linhas de programação utilizadas. 
Montagem de um componente externo a placa do Arduíno 
Anteriormente utilizamos um led montado na própria placa do Arduino para executar a 
atividade proposta. Mas caso seja necessário montar o circuito utilizando um led externo 
a placa? Vamos conectar o led externo, ao pino 12 por exemplo. A estrutura do 
programa será a mesma do programa anterior, exceto pela declaração de um novo valor 
para o pino de saída, no caso 12. Agora na parte do hardware teremos algumas 
particularidades mostradas a seguir: 
 
Figura 28 
 
 P á g i n a | 25 
 
 
Faculdade de Negócios – FAENE 
Telefones: São Luís (98)2109 – 8000 / Imperatriz (98) 3524 – 6927 
www.faene.com.br / academico@faene.com.br 
Para esta montagem será utilizada uma matriz de contatos ou protoboard onde serão 
montados os componentes externos ao Arduino. A matriz de contatos possibilita que os 
componentes sejam interligados sem a necessidade de soldar os mesmos. Isso facilita 
a implementação dos circuitos que são utilizados para teste, pois caso haja um erro ou 
necessidade de modificação do projeto, os componentes podem ser facilmente 
reordenados na matriz de contados 
A matriz de contatos possui pontos em comum conforme mostrado na figura abaixo 
 
Figura 29 
As retas sobre a matriz na horizontal e vertical mostram um exemplo dos pontos em 
comum na placa. 
Atividade 2: Baseado nos conhecimentos anteriormente discutidos tente implementar 
um programa em C que faça o led conectado ao pino 12 do Arduino piscar 
initerruptamente com um intervalo de 3 segundos aceso e 3 segundos apagado. Utilize 
comentários para explicar de forma sucinta as linhas de programação utilizadas. 
Atividade 3: Como forma de consolidar um pouco mais o conhecimento, implemente 
um semáforo simples com os 3 leds externos ao Arduino, com intervalos entre 
acionamentos de 5 segundos utilizando a linguagem C. 
 
Figura 30

Continue navegando