Ir ao conteúdo
  • Cadastre-se

Outro Ler dois sinais analógicos


Ir à solução Resolvido por Bruno Régis Cardozo,

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);
}

}

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

 

 

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
Link para o comentário
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);
}

}

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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ç

Link para o comentário
Compartilhar em outros sites

  • 4 semanas depois...

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!