Ir ao conteúdo
  • Cadastre-se
Bruno Régis Cardozo

Outro Ler dois sinais analógicos

Posts recomendados

Bom dia, alguém pode me ajudar? Qual o problema neste código que não consigo de jeito nenhum ler dois sensores analógicos?

#include<12F683.h>

#use   delay(clock=4000000) // Frequência do micro.
#fuses INTRC_IO, // isso é indicado de acordo com o micro e a freq nesse caso (4000000).
#fuses NOWDT, // no Wath Dog Timer,
#fuses NOPROTECT, // para proteger a programação( acho q de cópia).
#fuses NOPUT, //
#fuses BROWNOUT, // isso serve para verificar se programa esta ok, se alim. esta ok, clok ok se estiver nok reset o micro.
#fuses NOMCLR // esso serve para um reset no programa como reset externo.


//// 8 bits = 256; ##256/5 = 51mv; ##3*1,5 = 4,5; ##4,5/2 = 2,25 ##97/51=1,90v; ##118/51 = 2,31


void main() 

{

long analogico, pilha, val_pilha, val_analogico, val_analogico1;

setup_adc(ADC_CLOCK_INTERNAL);

setup_adc_ports(sAN1);

setup_adc_ports(sAN0);   



enable_interrupts(GLOBAL);

while(TRUE)

{ 

     set_adc_channel(0); 
     delay_us(15); 
     analogico = read_adc();
     val_analogico=analogico-3; 
     val_analogico1=analogico+3;
     delay_ms(100); 



     set_adc_channel(1); 
     delay_us(15); 
     pilha = read_adc();
     val_pilha=pilha/2;
     delay_ms(100); 



if val_analogico > val_pilha) || val_analogico1 < val_pilha

for (contador = 1; contador <= 7; contador = contador + 1)

{
output_high(pin_a5);
output_high(pin_a2);
delay_ms(250); /////////temp 1/1
output_low(pin_a5);
output_low(pin_a2);
delay_ms(250); 
}

else

{
output_low(pin_a5);
output_low(pin_a4);
output_low(pin_a1);
output_low(pin_a2);
}

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

 

Publique esquema. Como você sabe que não lê? Faça simulação. Nela, dê um break point logo após a leitura e veja o resultado do registro ou nas variáveis.

8 horas atrás, Bruno Régis Cardozo disse:

long analogico, pilha, val_pilha, val_analogico, val_analogico1;

mc de 8 bits não se dá muito bem com variáveis 32 bits. No caso a de 16 já lhe seria mais que suficiente.

 

Como não faço parte da comunidade deste forum, não estranhes caso me ausente ok? A não ser que de novo haja a tal coincidência ... ou caso eu veja alguma notificação

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Bom dia Isadora reescrevi!!!

Acho que o problema esta em declarar isto abaixo????

 

#device adc=10  >>>no caso como estou usando a porta 0 e 1 seria  #device adc=01  ?

 

#include<12F683.h>

int analogico;

int pilha;

int val_pilha;

int val_analogico; 

int val_analogico1;





#use   delay(clock=4000000) // Frequência do micro.
#fuses INTRC_IO, // isso é indicado de acordo com o micro e a freq nesse caso (4000000).
#fuses NOWDT, // no Wath Dog Timer,
#fuses NOPROTECT, // para proteger a programação( acho q de cópia).
#fuses NOPUT, //
#fuses BROWNOUT, // isso serve para verificar se programa esta ok, se alim. esta ok, clok ok se estiver nok reset o micro.
#fuses NOMCLR // esso serve para um reset no programa como reset externo.





void main() 

{



setup_adc(ADC_CLOCK_INTERNAL);

setup_adc_ports(sAN1);

setup_adc_ports(sAN0);   



enable_interrupts(GLOBAL);

while(TRUE)

{ 

     set_adc_channel(0); 
     delay_us(15); 
     analogico = read_adc();
     val_analogico=analogico-3; 
     val_analogico1=analogico+3;
     delay_ms(100); 



     set_adc_channel(1); 
     delay_us(15); 
     pilha = read_adc();
     val_pilha=pilha/2;
     delay_ms(100); 



if val_analogico > val_pilha) || val_analogico1 < val_pilha

for (contador = 1; contador <= 7; contador = contador + 1)

{
output_high(pin_a5);
output_high(pin_a2);
delay_ms(250); /////////temp 1/1
output_low(pin_a5);
output_low(pin_a2);
delay_ms(250); 
}

else

{
output_low(pin_a5);
output_low(pin_a4);
output_low(pin_a1);
output_low(pin_a2);
}

}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá

Graças à curtida do amigo e (per)seguidor @Ricardov apareceu-me uma notificação sobre seu tópico kk e k estamos..😁.

 

4 horas atrás, Bruno Régis Cardozo disse:

#device adc=10  >>>no caso como estou usando a porta 0 e 1 seria  #device adc=01  ?

Não conheço seu compilador mas não consigo ver a conexão com isso. Tenta pra ver.

Os procedimentos que te falei são os + indicados pra te apontar a direção.

Este ci é simples sua programação. Basta setar o registro TRIS como entrada, e definir as entradas como analógicas. Ve se ele tem comparador. Talvez você tenha que desabilitá-lo.

 

Se achar que deve, defina [bem] melhor...

8 horas atrás, Bruno Régis Cardozo disse:

não consigo de jeito nenhum ler dois sensores analógicos

 

abç

Compartilhar este post


Link para o post
Compartilhar em outros sites

#device adc=10 significa que voce esta usando 10 bits de leitura analógica...

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...