Buscar

Relatório_Projeto_sensor_ultra_som

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 20 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 20 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 20 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

ABRAMO RIBEIRO MARCHESE 
MARCIO LUIS PETRY 
JONATAS LOUREIRO DE ALMEIDA JUNIOR 
 
 
 
 
 
 
 
 
 
 
 
 
 
SENSOR DE ESTACIONAMENTO UTILIZANDO MSP430 
 
 
Atividade Pratica Supervisionada, 
apresentado à disciplina de Sistemas 
Microcontrolados, do Curso de 
Engenharia da Computação da 
Coordenação de Engenharia da 
Computação– COENC – da Universidade 
Tecnológica Federal do Paraná – UTFPR, 
Campus Pato Branco, como avaliação 
parcial da disciplina. 
 
Orientadora: Prof. Dr. Fabio Luiz Bertotti 
 
 
 
 
 
PATO BRANCO 
2014 
 
SUMÁRIO 
1. Introdução ............................................................................................................. 3 
2. Materiais e metodos.............................................................................................. 4 
2.1 Materiais Utilizados ........................................................................................ 4 
2.2 Métodos ......................................................................................................... 4 
3. Fundamentação Teórica ....................................................................................... 6 
4. Desenvolvimento .................................................................................................. 7 
4.1 O Sensor HC-SR04 ........................................................................................ 7 
4.2 Aquisição da distância .................................................................................... 8 
4.3 Lógica para acionamento de led’s e Buzzer ................................................. 10 
4.4 Definição da base de tempo para o Buzzer ................................................. 11 
5. Conclusão ........................................................................................................... 15 
6. Referências ......................................................................................................... 16 
 
 
1. INTRODUÇÃO 
O sensor de estacionamento é um dispositivo utilizado em veículos 
automotores com a finalidade de evitar colisões com outros veículos ou obstáculos, 
durante o estacionamento. É comumente instalado no para-choque dos veículos e 
se caracteriza por utilizar sensores para capturar a distância até o obstáculo e 
informá-la ao usuário através de indicações visuais ou sonoras. 
Se utilizados bips como sinal sonoro, conforme o veiculo se aproxima do 
obstáculo os mesmos se tornam mais frequentes e a indicação visual apresentará 
ao condutor informações como, por exemplo, qual lateral do veiculo está mais 
próxima de algum obstáculo se for o caso.Alguns modelos comerciais mais simples 
apresentam problemas quando instalados em veículos com para-choque metálico, 
pois as ondas que se propagam pelo metal – sinais e ruídos provenientes de outros 
dispositivos - geram interferência nos sensores que capturam a distância. Nesses 
casos usam-se sensores de melhor qualidade e robustez, o que contorna o 
problema, mas passa a ser mais oneroso ao consumidor. 
O objetivo elencado é o desenvolvimento de um sensor de estacionamento 
utilizando um kit de desenvolvimento LaunchPad, com microcontrolador 
msp430g2553, 5 leds indicativos que indicam os níveis de distância do obstáculo e 
um buzzer que emite os bips de alerta. O sensor deve reconhecer distâncias de até 
1 metro e empregar uma lógica própria para sinalizá-las corretamente ao condutor. 
 
 
 
2. MATERIAIS E MÉTODOS 
2.1 MATERIAIS UTILIZADOS 
• Sensor ultrassônico HC-SR04; 
• Kit desenvolvimentolaunchpad MSP430g2553 
• Buzzer (3-5v); 
• Protoboard ( Mariz de contato ); 
• Fiosoujampers; 
• 5 Resistores de 220Ω 
• 5 Leds 
2.2 MÉTODOS 
 Utilizou-se o Code Composer Studio v5 para compilar e depurar o 
código enviado para o Kit de Desenvolvimento pela porta USB do computador que 
também prove a alimentação do circuito. 
 Inicialmente fez-se as conexões dos leds, resistores e buzzer nas 
portas de saída do Kit de Desenvolvimento e o sensor ultrassônico na porta de 
entrada utilizando a protoboard (matriz de contato) conforme diagrama abaixo: 
 
Figura 1 – Diagrama elétrico do circuito projetado 
 
O sensor ultrassônico HC-SR04 deve ser conectado ao Kit de 
Desenvolvimento respeitando a pinagem VCC, Trigger, Echo e GND. 
O buzzer deve ser polarizado corretamente para funcionar, onde o pino 
maior é o positivo ligado na saída do Kit e o GND é o comum. 
Para a construção do diagrama elétrico da Figura 1 utilizou-se o programa 
Fritzing, destinado a construção de diagramas elétricos e desenhos (Sketch’s) de 
aplicações que se utilizem de hardware e dispositivos eletrônicos. 
Também utilizou-se o programa Visual Paradigm for UML 
CommunityEdition na modelagem do diagrama de máquina de estados do projeto, 
que se encontra na Figura 5. 
 
 
 
 
3. FUNDAMENTAÇÃO TEÓRICA 
 
O Kit de Desenvolvimento MSP430 LaunchPad fabricado pela Texas 
Instruments (TI) tem como principal objetivo ser uma plataforma de desenvolvimento 
simples, de baixo consumo de energia e principalmente de baixo custo. Apresenta 
uma ferramenta de emulação on-board permitindo interface direta a um PC para 
uma fácil programação, depuração e avaliação. 
Os microcontroladores MSP430, possuem uma arquitetura RISC de 16 bit 
construídos utilizando a arquitetura de Von-Neumann em conjunto com um sistema 
de clock flexível e vários tipos de periféricos analógicos e digitais, o que provê 
soluções para uma vasta gama de aplicações. 
O sensor ultrassônico HC-SR04 funciona como detector de objetos com 
uma distancia detectável de 2 a 450 centímetros com grande precisão. Seu 
funcionamento é simples e é dividido em duas partes, um receptor e um emissor. O 
circuito emissor gera uma onda senoidal de 40KHz e o receptor tem um filtro 
amplificador com saída ligada ao pinoEcho. O pino Trigger normalmente deve estar 
em nível baixo e para iniciar uma leitura de distância, o mesmo deve ser colocado 
em nível alto por 10us e retornar para nível baixo em seguida. Neste momento, 8 
pulsos de 40kHz são emitidos e basta verificar o tempo em que o pino Echo 
permaneceu em nível alto e em seguida implementar a fórmula para obter a 
distância. 
O buzzer nada mais é do que um pequeno alto-falante capaz de emitir 
sons em diversas frequências. É normalmente é usado em projetos que necessitam 
de avisos sonoros, relógios com alarme, e até para reproduzir músicas. 
Composto de 2 camadas de metal e uma camada interna de cristal 
piezoelétrico. Ao ser alimentado com uma fonte de sinal, vibra em frequência 
estabelecida pelo fabricante. Sua vantagem em relação a alto-falantes comuns é 
que consome pouca energia em relação à potência sonora, sendo facilmente 
alimentado com pequenas baterias. 
4. DESENVOLVIMENTO 
O projeto proposto consiste na construção de um sistema micro 
controlado capaz de controlar o funcionamento de um sensor ultrassônico para 
medir a distância até um objeto qualquer. Com essa distancia deve-se atuar 
logicamente sobre um conjunto de leds e um buzzer de modo a simular um sensor 
de estacionamento comercial. 
Tendo em vista o escopo do problema e os dispositivos a serem 
utilizados, separou-se o seu desenvolvimento em duas partes principais: a medição 
da distância e a lógica de acionamento de buzzer e leds. Para concretizar a primeira 
parte foi necessário entender o funcionamento do sensor HC-SR04, o que foi 
possível analisando seu datasheet e os sinais envolvidos em seu funcionamento 
com osciloscópio. 
4.1 O SENSOR HC-SR04 
Esse sensor utiliza-se de sonar para determinar a distância até um objeto 
que esteja colocado em sua área de alcance. Essa é a mesma técnica utilizada no 
mundo animal por golfinhos e morcegos. 
 
Figura 2 - Sensor HC-SR04 
 
O sensorilustrado na Figura 2 possui quatro pinos: VCC, Trigger, Echo, 
GND. Sendo os pinos mais externos utilizados na alimentação do circuito interno 
que controla o sensor, e os pinos Trigger e Echo utilizados para comunicação e 
transferência de informações entre o sensor e um dispositivo microcontrolado 
qualquer. 
O sinal de Trigger
seja, uma vez que esse sinal é processado pelo sensor, o mesmo envia uma 
sequência de 8 pulsos ultrassônicos de 40kHz que atingem um obstáculo e retornam 
ao sensor, sendo possível lê
calculada com base no tempo de permanência em nível alto do sinal que retorna ao 
sensor. 
Além disso, deve
nível alto por pelo menos 10us. Esse sinal deve ser repe
de medida, e o intervalo recomendado pelo fabricante para envio periódico do sinal é 
de 60ms. Segue abaixo um diagrama de tempo contendo os sinais inerentes ao 
funcionamento do sensor:
Figura 
 
4.2 AQUISIÇÃO DA DISTÂNC
O primeiro desafio encontrado no projeto foi o fato de o sensor 
ultrassônico exigir tensão de alimentação de 5v e o Kit Launchpad fornecer apenas 
3.3v. Para contornar esse fato foi necessário conectar o sensor a uma fonte d
alimentação externa, porém a alimentação USB do Kit é de 5v, utilizou
marcações TP3 e TP1 para conectar os pinos GND e VCC, respectivamente.
transferência de informações entre o sensor e um dispositivo microcontrolado 
Trigger (gatilho) serve como ativador de funcionamento, ou 
seja, uma vez que esse sinal é processado pelo sensor, o mesmo envia uma 
sequência de 8 pulsos ultrassônicos de 40kHz que atingem um obstáculo e retornam 
ao sensor, sendo possível lê-los através do pino Echo. A distância pode então ser 
calculada com base no tempo de permanência em nível alto do sinal que retorna ao 
Além disso, deve-se saber que o sinal de Trigger deve permanecer em 
nível alto por pelo menos 10us. Esse sinal deve ser repetido a cada nova aquisição 
de medida, e o intervalo recomendado pelo fabricante para envio periódico do sinal é 
de 60ms. Segue abaixo um diagrama de tempo contendo os sinais inerentes ao 
funcionamento do sensor: 
Figura 3 - Diagrama de tempo para sinais do sensor
AQUISIÇÃO DA DISTÂNCIA 
O primeiro desafio encontrado no projeto foi o fato de o sensor 
ultrassônico exigir tensão de alimentação de 5v e o Kit Launchpad fornecer apenas 
3.3v. Para contornar esse fato foi necessário conectar o sensor a uma fonte d
alimentação externa, porém a alimentação USB do Kit é de 5v, utilizou
marcações TP3 e TP1 para conectar os pinos GND e VCC, respectivamente.
transferência de informações entre o sensor e um dispositivo microcontrolado 
(gatilho) serve como ativador de funcionamento, ou 
seja, uma vez que esse sinal é processado pelo sensor, o mesmo envia uma 
sequência de 8 pulsos ultrassônicos de 40kHz que atingem um obstáculo e retornam 
A distância pode então ser 
calculada com base no tempo de permanência em nível alto do sinal que retorna ao 
deve permanecer em 
tido a cada nova aquisição 
de medida, e o intervalo recomendado pelo fabricante para envio periódico do sinal é 
de 60ms. Segue abaixo um diagrama de tempo contendo os sinais inerentes ao 
 
o sensor 
O primeiro desafio encontrado no projeto foi o fato de o sensor 
ultrassônico exigir tensão de alimentação de 5v e o Kit Launchpad fornecer apenas 
3.3v. Para contornar esse fato foi necessário conectar o sensor a uma fonte de 
alimentação externa, porém a alimentação USB do Kit é de 5v, utilizou-se as 
marcações TP3 e TP1 para conectar os pinos GND e VCC, respectivamente. 
Com o sensor devidamente alimentado o plano para a aquisição da 
distância foi o seguinte: 
 
1. Utilizar um Timer para a geração do sinal (PWM) de Trigger;
2. Utilizar outro Timer no modo captura e comparação para:
2.1. Na borda de subida do sinal Echo, salvar o valor do registrador TaxCCR0 e 
mudar o Timer para detecção de borda de descida;
2.2. Na borda de descida do sinal Echo
Timer para detecção de borda de subida;
 
Para a criação do sinal de Trigger utilizou
modo a gerar o sinal PWM desejado (Modo contínuo 
em nível baixo). Como foi definido um período T de 60ms e sabendo que o sinal de 
clock do timer em questão é de 1MHz, definiu
segue: 
Nota-se que para cada valor de N o intervalo de tempo 
de 1us, logo TA0CCR1 = 9 para garantir os 10us em nível alto.
Figura 
 
O tratamento do sinal de retorno (
modo de captura e comparação. O Timer é inicialmente configurado para geração de 
interrupção na detecção de uma borda de subida. Então o código é desviado para a 
rotina de tratamento de interrupção adequada que conta 
Com o sensor devidamente alimentado o plano para a aquisição da 
 
r para a geração do sinal (PWM) de Trigger; 
Utilizar outro Timer no modo captura e comparação para: 
Na borda de subida do sinal Echo, salvar o valor do registrador TaxCCR0 e 
mudar o Timer para detecção de borda de descida; 
Na borda de descida do sinal Echo, fazer o cálculo da distância e mudar o 
Timer para detecção de borda de subida; 
Para a criação do sinal de Trigger utilizou-se o Timer A0 configurado de 
modo a gerar o sinal PWM desejado (Modo contínuo – Set/reset 
omo foi definido um período T de 60ms e sabendo que o sinal de 
clock do timer em questão é de 1MHz, definiu-se TA0CRR0 e TA0CCR1, conforme 
� �
� ∗ ���
��	
�_
��
� 1 
� �
60� ∗ 2�
2
� 1 � 59999 
se que para cada valor de N o intervalo de tempo 
de 1us, logo TA0CCR1 = 9 para garantir os 10us em nível alto. 
Figura 4 - Sinal PWM gerado pelo Timer A0 
O tratamento do sinal de retorno (Echo) foi feito pelo Timer A1 utilizando o 
modo de captura e comparação. O Timer é inicialmente configurado para geração de 
interrupção na detecção de uma borda de subida. Então o código é desviado para a 
rotina de tratamento de interrupção adequada que conta com uma lógica inversora, 
Com o sensor devidamente alimentado o plano para a aquisição da 
 
Na borda de subida do sinal Echo, salvar o valor do registrador TaxCCR0 e 
, fazer o cálculo da distância e mudar o 
se o Timer A0 configurado de 
Set/reset – Saída inicializada 
omo foi definido um período T de 60ms e sabendo que o sinal de 
se TA0CRR0 e TA0CCR1, conforme 
se que para cada valor de N o intervalo de tempo correspondente é 
 
) foi feito pelo Timer A1 utilizando o 
modo de captura e comparação. O Timer é inicialmente configurado para geração de 
interrupção na detecção de uma borda de subida. Então o código é desviado para a 
com uma lógica inversora, 
de modo a permitir a execução de dois blocos de código distintos, um a cada 
interrupção. 
No primeiro bloco de código salva-se o valor de TA0CCR0 para posterior 
cálculo de distância e inverte-se a detecção de borda, configurando o Timer para 
detecção de borda de descida. E no segundo bloco de código é feita a comparação 
entre o valor anterior e o valor atual do registrador, chegando-se a um número N de 
contagens. Como o Timer foi configurado para uma base de tempo de 1us, N 
representa o intervalo de tempo em us que o sinal ficou em nível alto. De acordo 
com o fabricante, se o intervalo de tempo capturado estiver na ordem de us, a 
distância é dada pela fórmula: 
� �
����
_��_�������	
58
 [!�] 
4.3 LÓGICA PARA ACIONAMENTO DE LED’S E BUZZER 
O sistema projetado contém 5leds e um buzzer e a restrição do projeto é 
de que ele deveria ser capaz de produzir algum evento (luminoso e/ou audível) a 
partir de 1 metro de distância. Sendo assim foi definido que: 
 
• Para distâncias superiores a 100 cm nenhum led é ligado e não há sinal 
audível. 
• Para distâncias entre 75 cm e 100 cm deve-se ligar um led e gerar um bipe de 
1 segundo de período. 
• Para distâncias entre 50 cm e 75 cm deve-se ligar dois leds e gerar um bipe 
de 0.5 segundos de período. 
• Para distâncias entre 25 cm e 50 cm deve-se ligar três leds e gerar umbipe 
de 0.25 segundos de período. 
• Para distâncias entre 10 cm e 25 cm deve-se ligar quatro leds e gerar um bipe 
de 0.125 segundos de período. 
• Para distâncias menores que 10 cm deve-se ligar todos os leds e manter sinal 
audível constantemente ligado. 
 
Obs.: Os leds devem ser ligados sequencialmente, de modo a simular um indicador 
no painel do veículo. 
4.4 DEFINIÇÃO DA BASE DE TEMPO PARA O BUZZER 
Para não ser necessário implementar o Watchdog Timer foi utilizada a 
rotina de tratamento de interrupção do Timer A1 canal 0, visto que a mesma ocorre a 
cada 60ms, tempo no qual TA1CCR0 atinge o valor máximo e resetado. Dessa 
forma percebe-se que: 
60�# ∗ 2 = 0,12# ≈ 0.125# 
60�# ∗ 4 = 0,24# ≈ 0.25# 
60�# ∗ 8 = 0,48# ≈ 0.5# 
60�# ∗ 16 = 0,96# ≈ 1# 
Portanto foi criada uma lógica de contagem e controle para alterar o 
estado lógico da porta de saída que alimenta o buzzer. Essa lógica faz com que o 
estado lógico seja invertido (simulando o liga e desliga do buzzer) apenas depois de 
x vezes que a interrupção ocorrer. Sendo x =2,4,8,16. 
 
Segue abaixo o modelo de máquina de estados completo para o projeto. Deve-se 
ressaltar que ele refere-se a apenas um ciclo de medição, ou seja, os processos 
descritos abaixo se repetem indefinidamente enquanto o programa estiver em 
execução. 
 
Figura 5 – Diagrama de Máquina de Estados para o projeto 
 
 
Também foram retiradas imagens do osciloscópio em tempo real durante a execução do programa. 
As figuras a seguir representam o sinal PWM que está sendo gerado via software para o buzzer de 
acordo com os níveis de distância estipulados: 
 
 
 
Figura 6- Imagem osciloscópio buzzer nível1 
 
 
Figura 7 - - Imagem osciloscópio buzzer nível 2 
 
 
Figura 8- - Imagem osciloscópio buzzer nível3 
 
 
Figura 9 - - Imagem osciloscópio buzzer nível4 
 
5. CONCLUSÃO 
A partir do projeto realizado pode-se ver a grande gama de aplicações do 
micro controlador MSP430G2553 que pode realizar tarefas das mais simples até 
mais complexas. Percebeu-se que o micro controlador em questão também tem 
suas limitações por não conter uma grande quantidade de periféricos, porém 
conseguiu-se facilmente contorna-las utilizando o mesmo periférico para duas ou 
mais tarefas. 
A apresentação do sensor de estacionamento com bips já se torna suficiente 
para o condutor se orientar, porém para maximizar a abrangência comercial do 
projeto foi implementado também a interface visual com leds, conforme mencionado 
anteriormente. Observou-se que os condutores apreciam esta interface, pois sons 
externos ao veículo podem se tornar difíceis de ouvir, dependendo do local em que 
se esteja. Outro ponto a favor da utilização de sinais visuais se concentra nos 
deficientes auditivos, que muitas vezes são limitados a uma faixa de frequência 
específica graças aos aparelhos auditivos, o que pode impossibilitar a detecção dos 
bipes adequadamente, se não for tratado no projeto. 
De forma mais abrangente, pode-se dizer que o projeto proporcionou vivência 
profissional aos acadêmicos. Pela primeira vez até o presente momento fomos 
incumbidos de projetar, mesmo que em alto nível, componentes comerciais reais. 
Tal fato, além de proporcionar grande satisfação, nos permitiu perceber que existem 
inúmeros dispositivos comerciais, não só na área automotiva, que podem ser 
construídos e simulados utilizando o microcontrolador em questão. 
Seguindo essa linha de pensamento, pode-se dizer que um projeto futuro 
seria reconstruir o sensor de estacionamento utilizando comunicação por rádio-
frequência para comunicação dos dados dos sensores e o display. Essa idéia, 
mencionada pelo professor durante a apresentação do projeto, permitiria uma 
grande economia na instalação dos sensores de estacionamentos, pois não 
necessitaria de cabos físicos para a transmissão dos dados. 
 
6. REFERÊNCIAS 
http://www.micropik.com/PDF/HCSR04.pdf - Acessado em fevereiro de 2014 
http://www.ti.com/lit/ug/slau318d/slau318d.pdf - Acessado em fereveiro de 2014 
http://forum.43oh.com/topic/1489-bluetoothandroid-rc-car-wall-racer/ - Acessado em 
fevereiro de 2014 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7. APÊNDICE 
 
#include<msp430.h> 
 
#define P1_LED0 BIT0 
#define P1_LED1 BIT1 
#define P1_LED2 BIT2 
#define P1_LED3 BIT3 
#define P1_LED4 BIT4 
#define P1_TRIGGER BIT6 
#define P2_ECHO BIT0 
#define P2_BUZZER BIT1 
 
voidconfig_ini(void);//Refere-se asconfiguraçoesde clock da CPU e WDT 
voidconfig_portas(void);// Configuracaodeportas I/O 
voidini_TA1(void); //Configuracao do timer A1 
voidini_TA0(void); //Configuracao do timer A0 
 
unsignedchar x=0;//Auxilia o TIMER A1 nadetecçãodebordadesubida/descida 
unsignedinttempo_anterior=0, tempo=0;//Auxiliamnacapturade TA1CCR0 
float medida = 0.0; //Valor emcentímetrosque o HC-SR04 estámedindo 
unsignedintcount = 0, y=0;//Auxiliamnalógica do buzzer 
int i =0; 
 
intmain(void) { 
 
config_ini(); 
config_portas(); 
ini_TA0(); 
ini_TA1(); 
 
 while(1) 
 { 
 if(medida<= 10.0) 
 { 
 P1OUT = (P1_LED0 + P1_LED1 + P1_LED2 + P1_LED3 + P1_LED4); 
 //Acendetodososleds 
 P2OUT = P2_BUZZER; 
 //Apitacontinuamente 
 } 
 elseif(medida > 10.0 && medida <= 25.0) 
 { 
 P1OUT = (P1_LED0 + P1_LED1 + P1_LED2 + P1_LED3); 
 //Acende4leds 
 y=2; 
 //Apitade 0.12s em 0.12s 
 } 
 elseif(medida> 25.0 &&medida<= 50.0) 
 { 
 P1OUT = (P1_LED0 + P1_LED1 + P1_LED2); 
 //Acende3leds 
 y=4; 
 //Apitade 0.24s em 0.24s 
 } 
 
 
 elseif(medida> 50.0 &&medida<= 75.0) 
 { 
 P1OUT = (P1_LED0 + P1_LED1); 
 //Acende2leds 
 y=8; 
 //Apitade 0.48s em 0.48s 
 } 
 elseif(medida> 75.0 &&medida<= 100) 
 { 
 P1OUT = (P1_LED0); 
 //Acendeapenas1led 
 y = 16; 
 //Apitade 0.96s em 0.96s 
 } 
 elseif (medida > 100.0) 
 { 
 y=0; 
 //Paranãocomputar 
 P1OUT = 0; 
 //Nãoacendenenhumled 
 P2OUT = 0; 
 //Nãoapita 
 } 
 } 
} 
 
voidconfig_ini(void) 
{ 
 WDTCTL = WDTPW + WDTHOLD; // Pàra o WDT 
 // Configuracoes do BCS 
// MCLK = DCOCLK = 16MHZ 
// SMCLK = DCOCLK/8 = 2MHZ --> Timer A 
 
 DCOCTL = CALDCO_16MHZ; 
 BCSCTL1 = CALBC1_16MHZ; 
 BCSCTL2 = DIVS0 + DIVS1; 
 
 __enable_interrupt(); // seta o bit GIE - permitegeracaodeinterrupcoes 
} 
voidconfig_portas(void) 
{ 
 P1DIR = (P1_LED0 + P1_LED1 + P1_LED2 + P1_LED3 + P1_LED4 + BIT5 + 
P1_TRIGGER + BIT7);//Todoscomosaídamenos o P1.5 (Chave) 
 P1OUT = 0x00;//Todosemnívelbaixo 
 
 P1REN = BIT5;//Habilita resistor p/ P2.0 
 P1OUT&= ~BIT5;//Informaque é depull-down (Reseta o bit) 
 
 P2DIR = (P2_BUZZER + BIT2 + BIT3 + BIT4 + BIT5 + BIT6 + BIT7); 
 //ApenasP2.ECHO comoentrada do sensor HC 
 
 P2REN= P2_ECHO;//Habilita resistor p/ P2.0 
 P2OUT= P2_ECHO;//Informaque é depull-up (Seta o bit) 
 
 P1SEL|= P1_TRIGGER;//Saidadesinal PWM TA0.1 = P1.6 
 P1SEL2 &= ~P1_TRIGGER; 
 
 P2SEL = P2_ECHO;//Entrada do ECHO configurada 
} 
 
voidini_TA1(void) 
{ 
 /* Fontedeclock: SMCLK 
 * Fatodivisao: 2 TACLK = 1MHz 
 * ModoContinuo 
 */ 
 TA1CTL = TASSEL1 + ID0 + MC1; 
 TA1CCTL0 = CM0 + CAP + CCIE; 
 //Bordadesubida + Captura + interrup. habilitada 
} 
 
voidini_TA0(void){ 
 
 /*Fontedeclock: SMCLK = 2MHz 
 * Fatoddiv : 2 TACLK = 1MHz 
 * Modocontinuocomgeracaodeint. a cada 60ms 
*/ 
 TA0CTL = TASSEL1 + ID0 + MC0; 
 
 //Modo set/reset 
 //Saidainicializadaemnivelbaixo 
 TA0CCTL0 = CCIE; 
 TA0CCTL1 = OUTMOD0 + OUTMOD1 + OUTMOD2 + OUT; 
 
 TA0CCR0 = 59999; 
 TA0CCR1 = 9; 
 //Geraumainterrup. acada 60ms e o PWM fica 10us no HIGH paraativar o sensor 
} 
 
#pragma vector=TIMER0_A0_VECTOR 
__interruptvoidTimer0A0(void) 
{ 
 //Implementa a logica do buzzer: 
 //Entracountvezesna RTI e sóalterao estado do buzzerdeacordocom a variavel 
y, quepossui 
 //um valor padraoparacadadistancia 
 if(count == y && y != 0){ 
 count=0; 
 P2OUT ^= P2_BUZZER; 
 } 
 count++; 
 //Seentrarnesseif é porque a medidafoialteradadeum valor de y alto paraum 
valor de y baixo 
 //e o contadorjáestavacom valor mais alto do que o valor do y recemalterado, 
entaocorrige-seissofazendocount=0; 
 if(count > y) 
 { 
 count=0; 
 } 
} 
 
 
 
 
 
 
 
#pragma vector=TIMER1_A0_VECTOR 
__interruptvoidTimer1A0(void) 
{ 
 if(x==0) 
 { 
 x=1; 
 tempo_anterior = TA1CCR0;//Resgata o valor do registrador no 
eventodesubida do sinal do ECHO 
 TA1CCTL0 = CM1 + CAP + CCIE;// Reconfiguraparabordadedescida 
 } 
 else{ 
 x=0; 
 if( (TA1CCR0 - tempo_anterior) > 0 ){ 
 tempo = TA1CCR0 - tempo_anterior;//calcula o tempo total do 
sinal do ECHO 
 }else{ 
 tempo = (65535 - tempo_anterior) + TA1CCR0; 
 } 
 
 medida = tempo / 58.0;// Nessecasoconsidera-se o tempoemmilissegundos 
 TA1CCTL0 = CM0 + CAP + CCIE;// Reconfiguraparabordadesubida 
 } 
}

Outros materiais