Baixe o app para aproveitar ainda mais
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
Compartilhar