Ir ao conteúdo
  • Cadastre-se

Outro monitorar tensão do adc se é ascendente ou descendente atmeg8


Posts recomendados

Se alguém puder me ajudar;

to com um atmega8 lendo um sensor ultrasonico e acendendo leds de acordo com a distancia, até ai ok, mas eu queria que acendesse um led quando a distancia estiver aumentando e outro quando estiver se aproximando. Obrigado aí pessoal!

ISR(TIMER1_CAPT_vect)
{
        cpl_bit(TCCR1B,ICES1);    //troca a borda de captura do sinal
        if(!tst_bit(TCCR1B,ICES1))//lê o valor de contagem do T/C1 na borda de subida do sinal
        Inicio_Sinal = ICR1;  //salva a primeira contagem para determinar a largura do pul
    
    
        else
        Distancia = (ICR1 - Inicio_Sinal)/58;
    }

    int main()
    {
    DDRB = 0b11111110;
    DDRD = 0b11101111;
    
    PORTB =0b00000000;
    PORTD =0b00000000;
    
    TCCR1B =  (1<<ICES1) | (1<<CS11);     //T/C1 com prescaler = 8, captura na borda de subida
    TIMSK = 1<<TICIE1;    //habilita a interrupção por captura
    sei();                //habilita a chave de interrupções globais            //habilita interrupções globais
    
    while(1)

    {
        set_bit(PORTB,DISPARO);
        _delay_us(10);
        clr_bit(PORTB,DISPARO);

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
1 hora atrás, bigles21 disse:

um sensor ultrasonico e acendendo leds de acordo com a distancia, até ai ok

Lendo isso presumo que já tens a função cuja saída é a distância

distancia();

Assim sendo a princípio algumas leituras de tempos em tempos podem te orientar

d1=distancia();
delay(20);
d2=distancia();
delay(20);
d3=distancia();

ao comparar dx's entre si

Link para o comentário
Compartilhar em outros sites

@Isadora Ferraz Já tenho a variavel Distancia sim, mas como funcionaria essa tua sugestão? porque sao muitas leituras, de 7 a 2 metros, mais ou menos, entao por exemplo, se a distancia tá em 10cm e passou pra 11 ou 12 ou até de 5 em 5cm. tipo tá em 10cm, depois 10 em 15cm seta um led... kkk isso até me deu uma possível solução... Talvez e possa usar "case"

 

switch (Distancia)
{
   case Distancia tal:
     set_bit(PORTD, PB2);
   break;

   case constante2:
     Instruções;
   break;

   default
     Instruções;
}


 

Link para o comentário
Compartilhar em outros sites

@bigles21 ,

 

No seu primeiro post você colocou um código de interrupção que calcula o tempo de retorno do pulso ( o que daria para calcular a distância), eu havia entendido que esse código era de sua autoria ...

 

Fazer esses IFs é bem mais simples do que escrever esse código postado ....

 

Uma maneira simples é guardar em uma variável o tempo calculado, e quando fizer um novo cálculo, comparar com o

anterior , se o novo tempo for maior que o antigo, a distância será maior e portanto está se distânciando; e vice-versa ...

 

Paulo

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP
23 minutos atrás, aphawk disse:

guardar em uma variável o tempo calculado, e quando fizer um novo cálculo, comparar com o

anterior , se o novo tempo for maior que o antigo, a distância será maior e portanto está se distânciando; e vice-versa ...

... vulgo ...

Em 06/08/2019 às 15:15, Isadora Ferraz disse:

d1=distancia();
delay(20);
d2=distancia();
delay(20);

 

 

9 horas atrás, Isadora Ferraz disse:

if (d1==d2) return 0;//... parado 
if (d1<d2)  return 1;//... indo 
if (d1>d2)  return 2;//... vindo

 

ok uma ediçãozinha básica, mas...

 

A ideia de se casar sw com hw é tentar fazer o mc olhar o mundo como você veria ou vice versa, tentar você ver o mundo como o mc veria. Minimalisticamente falando, o mc só tem duas (02) tarefas simples: ler sensores e acionar atuadores. Com estas duas ideias simples em mãos (e mente), já pode pensar em dominar o mundo.

 

abç

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

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!